2017-05-23 115 views
0

我必须解决以下练习。在R中绘制直方图

(1)创建100泊松分布R.V.与波长= 4

(2)计算样本的平均值,在产生(1)。

(3)重复(1)和(2)10.000次。

(4)创建一个包含10.000平均值的向量。 (5)在直方图中绘制矢量图。

以下解决方案(?)是否正确?

> as.numeric(x) 
> for(i in 1:10000){ 
> p <- rpois(100, lambda = 4) 
> m <- mean(p) 
> append(x, m) 
>} 
> hist(x, breaks = 20) 

回答

0

您需要再次赋值x。

x1 <- x <- NULL 

for(i in 1:10000){ 
    p <- rpois(100, lambda = 4) 
    m <- mean(p) 
    x[length(x) + 1] <- m 
    x1 <- append(x1, m) 
## X or x1 vector will suffice for histogram 
} 
hist(x1, breaks = 20) 
+0

什么 X < - 矢量为(I在1:10000)(模式= “数字”,长度= 0) { P < - rpois(100,λ-= 4) m < - mean(p) append(x,m) } hist(x,breaks = 20) 这不起作用。为什么? – Xarrus

+0

为什么我们需要 x [长度(x)+ 1] < - m ? – Xarrus

5

有点有趣。你可以用更清晰的方式快速做出你所要求的。例如:

L <- 10000 
emptyvector <- rep(NA, L) 
for(i in 1:L){ 
    emptyvector[i] <- mean(rpois(100, lambda = 4)) 
} 
hist(emptyvector) 

我会采取这将创建成果的矩阵,然后运行colMeans,迅速得到我的向量复制()函数的优势。

meanvector <- colMeans(replicate(10000, rpois(100, lambda = 4))) 
hist(meanvector, main = "Mean values from 10,000 runs of \nPoisson n = 100") 
2
hist(replicate(10000, mean(rpois(100, lambda = 4))))