在R中生成iid变量

时间:2018-03-04 20:40:22

标签: r random statistics probability

我正在研究一个问题,它的内容是:

使用示例中给出的特定定义生成X =(x1,x2)的1000个iid变量。定义是x1是标准正态分布,因此N(0,1)。然而,当-1 <= x1 <= 1时,x2约为x1,否则为x1。

enter image description here

我在R之前使用以下代码生成bi变量随机变量,但我不知道如何获取char然后绘制。

X=(x1, x2)

所以我知道上面的内容不正确,但我不确定我是否可以做类似的事情,或者我认为这一切都是错的。

2 个答案:

答案 0 :(得分:1)

您可以使用rnorm基函数生成正态分布。并且,使用简单的ifelse函数,我们可以获得x2,如下所示:

x1 <- rnorm(10, mean = 0, sd = 1)
x2 <- ifelse( ((x1 <= 1) & (x1 >= -1)), -x1, x1)
plot(x1, x2, type='p')

enter image description here

答案 1 :(得分:1)

比你想象的要简单:

set.seed(1) # Setting a seed
X1 <- rnorm(1000) # Simulating X1
X2 <- ifelse(abs(X1) <= 1, -X1, X1) # If abs(X1) <= 1, then set X2=-X1 and X2=X1 otherwise.

由于问题是关于正常边缘但不是正常的双变量分布,我们可以看一下双变量密度估计:

library(MASS)
image(kde2d(X1,X2)) 

enter image description here

显然,形状不是椭圆体,因此即使两个边缘都正常,双变量分布也不正常。

也可以通过分析看出。设Z = X1 + X2。如果(X1,X2)是双变量正常,则Z也是正常的。但是P(Z = 0)> = P(| X1 | <= 1)〜= 0.68,即它具有零的正质量,这不能是连续分布的情况。