【问题标题】:Why does changing the p-value with rgeom not give the expected result为什么用 rgeom 更改 p 值不会给出预期的结果
【发布时间】:2020-09-19 14:11:38
【问题描述】:

所以我试图证明当 X ~ Geo(X) 时,期望值等于:E[X] = p / (1 - p)

p <- 0.50

#1 Exact
(p/(1 - p))

nrRuns <- 100000

#1 Simulation
x <- rep(0, nrRuns)
for (i in 1:nrRuns){
  x[i]=rgeom(n = 1, prob = p)
}
mean(x)

当 p = 0.50 时,精确计算得到 1,模拟输出 1.00134 符合预期,但是当我将 p 值更改为 0.20 时,精确计算得到 0.25,但我的模拟报告为 3.99477。我希望模拟报告 0.25。那么这怎么可能呢?

【问题讨论】:

  • 确切的期望值是(1 - p)/p,而不是它的倒数。另外,请参阅我的答案以获得更简单的模拟代码。
  • 好吧,E[X^2] = p(1+p) / (1-p)^2E[1/X+1] = (p-1)/p * log(1-p) 也一样吗?
  • 对于其他时刻,您可以查看例如Wikipedia。如果这不能回答您的问题,请说出来。

标签: r montecarlo stochastic


【解决方案1】:

这是 R 的矢量化函数和可重复性的示例。

f <- function(p, R){
  x <- rgeom(R, prob = p)
  c(Exact = (1 - p)/p, Sim = mean(x))
}
nrRuns <- 100000

set.seed(2020)    # make the results reproducible
f(p = 0.2, R = nrRuns)
#  Exact     Sim 
#4.00000 4.02563

现在是问题中的代码。

set.seed(2020)    # Reproduce the result above
p <- 0.2
x <- rep(0, nrRuns)
for (i in 1:nrRuns){
  x[i] <- rgeom(n = 1, prob = p)
}
mean(x)
#[1] 4.02563

结果是一样的。

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多