在R中绘制直方图

时间:2017-05-23 23:08:25

标签: r

我必须解决以下问题。

(1)用lambda = 4

创建100个Poisson分布式r.v

(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)

3 个答案:

答案 0 :(得分:5)

这有点好笑。您可以以更清晰的方式快速完成您的要求。例如:

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

我会利用replicate()函数创建一个结果矩阵然后运行colMeans来快速获取我的向量。

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

答案 1 :(得分:2)

hist(replicate(10000, mean(rpois(100, lambda = 4))))

答案 2 :(得分: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)