问题描述
尝试运行以下rgeom 500次,并存储每次复制的均值和标准差。
rgeom(100,prob = .2)
到目前为止,我有:
geom_means = rep(NA,500)
geom_sd = rep(NA,500)
X_geom500 <- replicate(500,{
samp <- rgeom(100,prob = .2)
geom_means = round(mean(samp),2)
})
X_geom500_sd <- replicate(500,prob = .2)
round(sd(samp),2)
})
如果我分别运行代码,我可以得到500个均值和500个sd的向量,但我认为它们不匹配。我尝试创建一个for循环来存储每次迭代的均值和SD,但我认为这样做不正确。
for i in range(1:500):
sample[i] <- rgeom(100,prob = .2)
geom_means[i] <- mean(sample[i])
geom_sd[i] <- sd(sample[i])
解决方法
您可以从每次复制中获得均值和标准差:
set.seed(123)
n_rep <- 5
samp_geom <- function(n,prob) {
samp <- rgeom(n,prob)
return(list(mean = round(mean(samp),2),sd = round(sd(samp,2))))
}
replicate(n_rep,samp_geom(100,.2))
[,1] [,2] [,3] [,4] [,5]
mean 3.78 3.64 4.09 3.68 3.73
sd 4 4 5 5 4
将结果值存储在单独的向量中,如下所示:
geom_means <- unlist(samps["mean",])
geom_means
# [1] 3.78 3.64 4.09 3.68 3.73
geom_sd <- unlist(samps["sd",])
geom_sd
# [1] 4 4 5 5 4