La figura a continuación (Figura 1 de la página 646 de este artículo ) compara los valores observados con los valores esperados bajo la distribución de Poisson. Luego ejecuta una prueba de ji cuadrado para ver si los valores observados difieren de los valores esperados en la distribución de Poisson.
Usando R, ¿cómo es posible generar valores esperados bajo la distribución de Poisson y comparar los valores observados usando una prueba de ji cuadrado?
EDITAR:
Aquí está mi intento de hacer lo que hicieron en papel. Quiero saber si la distribución observada de variable
difiere de una distribución de Poisson. También quiero saber si lo que he hecho a continuación es el mismo procedimiento que lo que hicieron en papel. Como el valor P es> 0.05, he concluido a continuación que la distribución de variable
sigue una distribución de Poisson, ¿alguien podría confirmar esto?
df <- data.frame(variable = 0:5, frequency = c(20, 10, 5, 3, 2, 1))
# estimate lambda
mean_df_variable <- mean(df$variable)
# calculate expected values if df$frequency follows a poisson distribution
library(plyr)
expected <- laply(0:5, function(x) dpois(x=x, lambda=mean_df_variable, log = FALSE))
# calculate actual distribution of df$frequency
observed <- df$frequency/sum(df$frequency)
# does distribution of df$frequency differ from a poisson distribution? Apparently
# not because P-value is > 0.05
chisq.test(expected, observed)
Respuestas:
La forma en que realizó la prueba de chi-cuadrado no es correcta. Hay varios problemas. Primero, su marco de datos se ve así:
Entonces, cuando corres
mean(df$variable)
, obtienes2.5
, que es solo la media de0:5
. Es decir, no tiene peso. En cambio, cree su variable así:La
table()
llamada muestra que el código nos da lo que queríamos, por lo quemean()
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:Por último, en
R
lachisq.test()
función de, los argumentosx=
yy=
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 dedpois()
), 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 paray=
. En cualquier caso, en realidad no tiene que hacer eso, solo puede asignar las probabilidades alp=
argumento. Además, deberá agregar un0
vector de valores observados para representar todos los valores posibles que no aparecen en su conjunto de datos:El mensaje de advertencia sugiere que preferimos simular en su lugar, así que lo intentamos nuevamente:
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:
fuente
Si he entendido lo que querías decir, deberías:
fuente