首页 文章

是否可以为R中的mvrnorm()随机生成的数字指定范围?

提问于
浏览
1

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

有关如何正确修复范围的任何建议吗?

感谢您分享你的知识!

1 回答

  • 2

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

    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 . 这是一个强有力的假设,需要事先进行验证 .

相关问题