Asp*_*ire 12 r rstudio r-markdown
我正在完成一项任务,其中我必须从二元正态生成一个样本 X = (X1, X2),其中每个边际为 N(0,1),X1 和 X2 之间的相关性为 0.5。
我认为解决这个问题的方法是使用 mvrnorm 函数,但我不太确定在那之后如何进行。有什么建议吗?提前致谢!
Sph*_*cal 11
事实上,mvrnorm
MASS 包中的函数可能是您最好的选择。此函数可以从多元正态分布生成伪随机数据。
检查此函数 ( ??mvrnorm
)的帮助页面显示,您需要根据给定参数模拟数据的三个关键参数,即:
n
- 所需的样本数(整数);mu
- 给出变量均值的向量 - 在这里,您的分布是标准正态分布,因此它将是一个零向量;和Sigma
- 一个正定对称矩阵,指定变量的协方差矩阵 - 即,在你的情况下,一个矩阵的对角线上的方差和 0.5 的非对角线上的协方差。看看这个帮助页面中的例子,它应该可以帮助你把这些想法放在一起!
以下是一些选项:
1)mvtnorm::rmvnorm
并MASS::mvrnorm
以相同的方式工作,尽管该mvtnorm::rmvnorm
函数不要求您指定均值(即,默认值为 0)。为mu
向量命名将指定模拟变量的名称。
n <- 100
R <- matrix(c(1, 0.5,
0.5, 1),
nrow = 2, ncol = 2)
mu <- c(X = 0, Y = 0)
mvtnorm::rmvnorm(n, mean = mu, sigma = R)
MASS::mvrnorm(n, mu = mu, Sigma = R)
Run Code Online (Sandbox Code Playgroud)
2)simstandard::sim_standardized
将只制作标准化数据,但会减少输入:
simstandard::sim_standardized("X ~~ 0.5 * Y", n = 100)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8501 次 |
最近记录: |