首页 > 解决方案 > 运行 rgeom 样本并存储每个复制的平均值和 SD

问题描述

尝试运行 follow 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, {
  samp <- rgeom(100, 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])

标签: rrandomsample

解决方案


您可以从每个复制中获得均值和标准差:

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

推荐阅读