模拟R中的条件分布

时间:2018-02-19 08:28:55

标签: r database conditional simulation distribution

我有一个关于模拟条件分布的问题。

假设

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发布。

我会在帮助下欣赏。

2 个答案:

答案 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)
})
相关问题