在R中生成iid变量

问题描述 投票:1回答:2

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

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

enter image description here

我在R之前使用以下代码生成双变量随机变量,但我不知道如何获取X=(x1, x2)然后绘制。

library(gplots)
n<-10^6
sigma<- matrix(c(4,2,2,3), ncol=2)
x<- rmvnorm(n, mean = c(1,2), sigma = sigma)
h2d<- hist2d(x, show = FALSE, same.scale = TRUE, nbins = c(40,40))
persp(h2d$x, h2d$y, h2d$counts/n, ticktype="detailed", theta=30, phi=30, expand=0.5, shade=0.5, col="cyan", ltheta=-30,main="Bivariate Normal Distribution", zlab="f(x1,x2)",xlab="x1",ylab="x2")

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

r random statistics probability
2个回答
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,即它具有零的正质量,这不能是连续分布的情况。


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

© www.soinside.com 2019 - 2024. All rights reserved.