立方体内的每个点都有三个值(X、Y 和 Z 轴)。中有内置函数R,与生成具有单个随机数(每个观察一个数字)的集合有关,例如runif()、sample()、rnorm()等set.seed()。以类似的逻辑思考,数字是在单个轴上生成的,具有这些功能.
我的问题是:
- 是否有任何函数可以生成其中包含三个随机数的随机集(或概括,每次观察具有多个数字的随机集)?
- 如果前者的答案是否定的,应该采取什么方法?
考虑到多维数据集的情况,runif它完全可以灵活地实现所有这些。特别是,我们可以指定要生成的点数,并且对于每个轴,我们还可以指定不同的范围。例如,
lower <- c(0, 10, 20)
upper <- c(1, 11, 21)
n <- 5
matrix(runif(n * 3, lower, upper), ncol = 3, byrow = TRUE)
# [,1] [,2] [,3]
# [1,] 0.03372777 10.99940 20.03487
# [2,] 0.33839128 10.91506 20.61724
# [3,] 0.28628535 10.73780 20.83405
# [4,] 0.31427078 10.49257 20.69737
# [5,] 0.64146235 10.64392 20.97785
同样适用于rnorm,rbeta等。
换个角度思考这个问题,你想从多元分布中抽样,也许我们甚至有一些依赖性。为此还有一些功能,例如?mvrnorm在MASS包中或?rdirichlet在MCMCpack. 但是,当处理均匀分布在立方体中的点时,遵循上述方法是标准的,如果需要,您可以为具有独立分量的多元均匀分布定义相应的函数。