Estoy tratando de probar la bondad de ajuste para un vector de datos de conteo a un binomio. Para hacerlo, estoy usando la goodfit()
función en el vcd
paquete. Cuando ejecuto la función, sin embargo, devuelve NaN
el valor p de la prueba de Chi-cuadrado. En mi configuración, tengo un vector de datos de conteo con 75 elementos.
> library(vcd)
> counts <- c(32, 35, 44, 35, 41, 33, 42, 49, 36, 41, 42, 45, 38, 43, 36,
35, 40, 40, 43, 34, 39, 31, 40, 39, 36, 37, 37, 37, 32, 48, 41,
32, 37, 36, 49, 37, 41, 36, 34, 37, 41, 32, 36, 36, 30, 33, 33,
42, 39, 36, 36, 29, 31, 41, 36, 39, 40, 37, 39, 39, 31, 39, 37,
40, 33, 41, 34, 46, 35, 41, 44, 38, 44, 34, 42)
> test.gof <- goodfit(counts, type="binomial",
+ par=list(size=length(counts), prob=0.5))
Todo funciona bien, pero cuando inspecciono el goodfit()
objeto obtengo lo siguiente:
> summary(test.gof)
Goodness-of-fit test for binomial distribution
X^2 df P(> X^2)
Pearson NaN 75 NaN
Likelihood Ratio 21.48322 19 0.3107244
Warning message:
In summary.goodfit(test.gof) : Chi-squared approximation may be incorrect
Al principio sospeché que era un problema de tamaño de muestra pequeño, pero también tengo un conjunto de datos con 50 observaciones que no devuelve NaN
el valor p. También he tratado de cambiar el método goodfit()
a ML con resultados similares.
¿Por qué esta función estaría produciendo NaN
en este caso? ¿Existe una función alternativa para calcular GOF en los datos de conteo?
fuente
Respuestas:
Tienes cero frecuencias en conteos observados. Eso explica
NaN
s en sus datos. Si observa eltest.gof
objeto, verá que:Tienes 56 ceros. De todos modos, en mi humilde opinión esta pregunta es para http://stats.stackexchange.com .
fuente
¿Serías más feliz con un objeto goodfit alterado quirúrgicamente?
fuente
Intenta trazarlo. Tendrás una mejor idea de lo que está sucediendo. Como se mencionó anteriormente, está obteniendo NaN porque está pasando 0 frecuencias a chisq.test ()
fuente