绘制参数本身是随机变量时的正态分布

时间:2014-10-07 19:30:25

标签: r plot

我想绘制一个普通的PDF,其中均值本身是一个正态分布的随机变量。

X~N(mu,9),

其中mu~N(50,4)。

以下代码运作良好:

set.seed(121)
mu <- rnorm(100000,mean=50,sd=4)
X <- rnorm(100000,mean=mu,sd=9)
plot(density(mu),lty=2,xlim=c(0,100)) #mu
lines(density(X),lwd=3) #X

然而,即使映射到大量观测值,rnorm也会在曲线中产生轻微波动;就像这里的情况一样。 (它也占用了不必要的空间。)出于这个原因,我更喜欢使用curve命令绘制普通PDF。不幸的是,下面的第二行产生了一个奇怪的眼疮:

curve(dnorm(x, mean=50, sd=4), 
      from=0, to=100, lty=2, yaxt="n") # mu
curve(dnorm(x, mean=mu, sd=9),
      from=0, to=100, n = length(mu), lwd=3, lty=1, add=TRUE, yaxt="n") # X

有谁知道更好的方法吗?是否可以在curve命令本身中自动将“mean =”设置为(完全分布式)随机变量?

1 个答案:

答案 0 :(得分:2)

我不知道这是否有帮助,但您的问题在数学上很容易解决。您定义混合物的方式恰好对应于组合两个分布的方差:

sd1 <- 4; sd2 <- 9
set.seed(121)
mu <- rnorm(100000,mean=50,sd=sd1)
X <- rnorm(100000,mean=mu,sd=sd2)
plot(density(mu),lty=2,xlim=c(0,100)) #mu
lines(density(X),lwd=3) #X
curve(dnorm(x,50,sd=sqrt(sd1^2+sd2^2)),add=TRUE,col=2,lwd=2)

enter image description here