1

立方体内的每个点都有三个值(X、Y 和 Z 轴)。中有内置函数R,与生成具有单个随机数(每个观察一个数字)的集合有关,例如runif()sample()rnorm()set.seed()。以类似的逻辑思考,数字是在单个轴上生成的,具有这些功能.

我的问题是:

  • 是否有任何函数可以生成其中包含三个随机数的随机集(或概括,每次观察具有多个数字的随机集)?
  • 如果前者的答案是否定的,应该采取什么方法?
4

1 回答 1

4

考虑到多维数据集的情况,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等。

换个角度思考这个问题,你想从多元分布中抽样,也许我们甚至有一些依赖性。为此还有一些功能,例如?mvrnormMASS包中或?rdirichletMCMCpack. 但是,当处理均匀分布在立方体中的点时,遵循上述方法是标准的,如果需要,您可以为具有独立分量的多元均匀分布定义相应的函数。

于 2018-12-13T15:58:30.977 回答