我有一个关于模拟条件分布的问题。
假设
X ~ N(0,1)
Y ~ N(rX, 1-r^2)
我想模拟Y
上的X
分配。
此处的r
是相关性,可以按目的进行更改。
X
分发代码如下;
sd.x <- 1
mean.x <- 0
z2 <- rnorm(1000)
x <- sd.x*z2 + mean.x
但是,我不知道模拟Y
发布。
我会在帮助下欣赏。
答案 0 :(得分:3)
看来你正处于线性回归的情况...... 你可以写Y = rX + epsilon,其中epsilon属于N(0,(1-r)^ 2)。 你可以确定Y有你正在寻找的属性..
所以,在r中,为了完成你的代码,这样的事情就足够了:
r <- 0.8
y <- r*x + rnorm(1000, mean = 0, sd = 1-r)
答案 1 :(得分:0)
使用mvrnorm
包中的MASS
函数,如下所示:
sample <- mvrnorm(1000, mu=c(0,0), matrix(c(1, r, r, 1-r^2), 2, 2))
或者,作为更通用的方法模拟X
,然后为Y
的每个值模拟X
sample <- data.frame(X = rnorm(1000))
sample$Y <- sapply(sample$X, function(x){
rnorm(1, r*x, 1-r ^2)
})