rgeom函数模拟几何分布期望结果与理论值不符问题咨询
问题根源:几何分布的两种参数化定义混淆
你遇到的问题核心是混淆了R中rgeom()函数使用的几何分布定义,和你自己记忆的期望公式对应的定义——几何分布有两种常见的参数化方式,这是初学者很容易踩的坑!
1. R中rgeom()的实际定义
R的rgeom(n, prob = p)生成的随机变量,代表的是首次成功之前的失败次数。也就是说:
- 它的可能取值是
0, 1, 2, ...(比如取值0表示第一次试验就成功了,没有失败) - 概率质量函数为:
P(X = k) = (1-p)^k * p - 对应的期望是:
E[X] = (1-p)/p
验证一下你的例子:
- 当
p=0.5时,期望是(1-0.5)/0.5 = 1,和你的模拟结果1.00134高度一致,这其实是正确的——你之前误以为自己的公式E[X] = p/(1-p)是对的,只是刚好p=0.5时p/(1-p)和(1-p)/p数值相等,才巧合匹配。 - 当
p=0.2时,期望是(1-0.2)/0.2 = 4,你的模拟结果3.99477已经非常接近理论值,这完全符合预期。
2. 你记忆的公式对应的是哪种定义?
你提到的E[X] = p/(1-p),对应的是另一种不那么常见的几何分布变体:首次失败之前的成功次数。这种定义下:
- 随机变量代表首次失败前成功的次数,取值为
0,1,2,... - 期望是
p/(1-p)
如果想要验证这个公式,你需要把R中的成功概率换成1-p(也就是把失败当作“成功”来模拟),比如:
p <- 0.20 # 原成功概率 nrRuns <- 100000 x <- rep(0, nrRuns) for (i in 1:nrRuns){ x[i] <- rgeom(n = 1, prob = 1 - p) # 模拟首次失败前的成功次数 } mean(x)
运行这段代码,你会得到接近0.25的结果,和你原本的预期一致。
总结
几何分布的参数化方式很容易搞混,关键要明确:
- R的
rgeom默认模拟首次成功前的失败次数,期望是(1-p)/p - 如果你需要的是其他定义的几何分布,需要调整参数或者转换变量
内容的提问来源于stack exchange,提问作者FlubberBeer
相关产品推荐
相关产品推荐

