[英]Simulating conditional distribution in R
我有一个关于模拟条件分布的问题。
假设
X ~ N(0,1)
Y ~ N(rX, 1-r^2)
我想模拟在X
上调节的Y
分布。
这里的r
是相关性,它可以为了目的而改变。
X
分配代码如下;
sd.x <- 1
mean.x <- 0
z2 <- rnorm(1000)
x <- sd.x*z2 + mean.x
但是,我不知道模拟Y
分布。
我会很感激你的帮助。
看起来你是在线性回归的情况......你可以写Y = rX + epsilon,其中epsilon属于N(0,(1-r)^ 2)。 你可以确定Y有您正在寻找的属性..
所以,在r中,为了完成你的代码,这样的事情就足够了:
r <- 0.8
y <- r*x + rnorm(1000, mean = 0, sd = 1-r)
使用MASS
包中的mvrnorm
函数,如下所示:
sample <- mvrnorm(1000, mu=c(0,0), matrix(c(1, r, r, 1-r^2), 2, 2))
或者,作为更通用的方法模拟X
然后为每个X
值模拟Y
sample <- data.frame(X = rnorm(1000))
sample$Y <- sapply(sample$X, function(x){
rnorm(1, r*x, 1-r ^2)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.