为什么用rgeom更改p值不能得到预期的结果

问题描述

因此,我试图证明当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。那怎么可能呢?

解决方法

这是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

结果相同。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...