【问题标题】:Is it possible to specify a range for numbers randomly generated by mvrnorm( ) in R?是否可以为 R 中 mvrnorm( ) 随机生成的数字指定一个范围?
【发布时间】:2013-07-06 21:48:13
【问题描述】:

我正在尝试生成一组完全反映我拥有的数据集的随机数字(以对其进行测试)。该数据集由 5 个变量组成,这些变量都与不同的均值和标准差以及范围相关(它们是李克特量表相加形成 1 个变量)。我已经能够从MASS 包中获得mvrnorm 来创建一个数据集,该数据集使用观察到的观察次数(经过500,000 次以上的迭代)复制相关矩阵,并且我可以轻松地重新分配均值和标准差。开发。通过 z-score 转换,但我仍然在每个变量向量中都有特定值,这些值远高于或低于我希望复制其分数的可能范围。

对于如何适当地修正范围有什么建议吗?

感谢您分享您的知识!

【问题讨论】:

  • 用范围边界值替换每个超出范围的值怎么样?
  • 获得正确的数据生成过程需要认真的建模工作。最后,高斯分布的范围与均值和方差的选择直接相关
  • 如果经过 z-score 变换后发现数据的极值差异很大,那么可能是原始数据不是正态分布的?
  • 这个讨论可能对你有用:r.789695.n4.nabble.com/…

标签: r random range simulation


【解决方案1】:

要生成一个“完全镜像”原始数据集的样本,您需要确保样本的边缘分布和依赖结构与原始数据集相匹配。 实现此目的的一种简单方法是重新采样

my.data   <- matrix(runif(1000, -1, 2), nrow = 200, ncol = 5)  # Some dummy data
my.ind    <- sample(1:nrow(my.data), nrow(my.data), replace = TRUE)
my.sample <- my.data[my.ind, ]

这将确保样本的边距和依赖结构(紧密)匹配原始数据。

另一种方法是对边距和/或依赖结构(copula)使用参数模型。但正如@dickoa 所说,这将需要认真的建模工作。

请注意,通过使用多元正态分布,您(隐式)假设原始数据的依赖结构是高斯 copula。这是一个强有力的假设,需要事先进行验证。

【讨论】:

  • 感谢您的建议和信息!这真是个好建议。确定数据集的依赖结构的典型过程是什么?再次感谢!
  • 这是一个统计建模问题。关键字将是 copula。您可能会在此处找到有用的信息和参考:stats.stackexchange.com/q/37951/27403
猜你喜欢
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 2017-09-19
  • 2015-07-21
  • 1970-01-01
  • 2023-03-06
  • 2011-07-01
相关资源
最近更新 更多