Почему изменение p-значения с помощью rgeom не дает ожидаемого результата

Итак, я пытаюсь доказать, что когда 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. Так как же это возможно?


person FlubberBeer    schedule 19.09.2020    source источник
comment
Точные ожидаемые значения равны (1 - p)/p, а не обратным. Кроме того, см. мой ответ для более простого кода моделирования.   -  person Rui Barradas    schedule 19.09.2020
comment
Ой, ладно, то же самое относится к E[X^2] = p(1+p) / (1-p)^2 и E[1/X+1] = (p-1)/p * log(1-p)?   -  person FlubberBeer    schedule 19.09.2020
comment
Для других моментов вы можете увидеть, например, Википедию. Если это не ответ на ваш вопрос, так и скажите.   -  person Rui Barradas    schedule 19.09.2020


Ответы (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

Результаты такие же.

person Rui Barradas    schedule 19.09.2020