La forma en que realizó la prueba de chi-cuadrado no es correcta. Hay varios problemas. Primero, su marco de datos se ve así:
variable frequency
1 0 20
2 1 10
3 2 5
4 3 3
5 4 2
6 5 1
Entonces, cuando corres mean(df$variable)
, obtienes 2.5
, que es solo la media de 0:5
. Es decir, no tiene peso. En cambio, cree su variable así:
x = rep(0:5, times=c(20, 10, 5, 3, 2, 1))
table(x)
# x
# 0 1 2 3 4 5
# 20 10 5 3 2 1
mean(x)
# [1] 1.02439
La table()
llamada muestra que el código nos da lo que queríamos, por lo que mean()
estima lambda correctamente.
A continuación, sus probabilidades estimadas solo van a 5
, pero la distribución de Poisson va al infinito. Por lo tanto, debe tener en cuenta las probabilidades de los valores que no tiene en su conjunto de datos. Esto no es difícil de hacer, solo calcula el complemento:
probs = dpois(0:5, lambda=mean(x))
probs
# [1] 0.359015310 0.367771781 0.188370912 0.064321775 0.016472650 0.003374884
comp = 1-sum(probs)
# [1] 0.0006726867
Por último, en R
la chisq.test()
función de, los argumentos x=
y y=
no son exactamente para los valores esperados y observados en la forma en que configura esto. Por un lado, lo que llama "esperado" son en realidad probabilidades (es decir, la salida de dpois()
), para hacer estos valores esperados, tendría que multiplicar esas probabilidades (y asegurarse de incluir el cumplido) por el recuento total. Pero incluso entonces, no los usarías para y=
. En cualquier caso, en realidad no tiene que hacer eso, solo puede asignar las probabilidades al p=
argumento. Además, deberá agregar un 0
vector de valores observados para representar todos los valores posibles que no aparecen en su conjunto de datos:
chisq.test(x=c(20, 10, 5, 3, 2, 1, 0), p=c(probs, comp))
# Chi-squared test for given probabilities
#
# data: c(20, 10, 5, 3, 2, 1, 0)
# X-squared = 12.6058, df = 6, p-value = 0.04974
#
# Warning message:
# In chisq.test(x = c(20, 10, 5, 3, 2, 1, 0), p = c(probs, comp)) :
# Chi-squared approximation may be incorrect
El mensaje de advertencia sugiere que preferimos simular en su lugar, así que lo intentamos nuevamente:
chisq.test(x=c(20, 10, 5, 3, 2, 1, 0), p=c(probs, comp), simulate.p.value=TRUE)
# Chi-squared test for given probabilities with simulated p-value
# (based on 2000 replicates)
#
# data: c(20, 10, 5, 3, 2, 1, 0)
# X-squared = 12.6058, df = NA, p-value = 0.07046
Presumiblemente, este es un valor p más preciso, pero plantea una pregunta sobre cómo debe interpretarse. Usted pregunta "Como el valor P es> 0.05, he concluido a continuación que la distribución de la variable sigue una distribución de Poisson, ¿alguien podría confirmar esto?" Usando el enfoque correcto, notamos que el primer valor p fue solo <.05, pero el segundo valor p (simulado) fue solo> .05. Aunque el último valor p es más preciso, no me apresuraría a concluir que los datos provienen de una distribución de Poisson. Aquí hay algunos hechos a tener en cuenta: