Advertencia en R: la aproximación de Chi cuadrado puede ser incorrecta


40

Tengo datos que muestran los resultados del examen de ingreso de bomberos. Estoy probando la hipótesis de que los resultados del examen y el origen étnico no son mutuamente independientes. Para probar esto, realicé una prueba de chi-cuadrado de Pearson en R. Los resultados muestran lo que esperaba, pero me dio una advertencia de que " In chisq.test(a) : Chi-squared approximation may be incorrect."

> a
       white black asian hispanic
pass       5     2     2        0
noShow     0     1     0        0
fail       0     2     3        4
> chisq.test(a)

    Pearson's Chi-squared test

data:  a
X-squared = 12.6667, df = 6, p-value = 0.04865

Warning message:
In chisq.test(a) : Chi-squared approximation may be incorrect

¿Alguien sabe por qué dio una advertencia? ¿Es porque estoy usando un método incorrecto?


2
Nunca confíe en un resultado con tan pocas mediciones. Cuando tiene cientos de personas en cada columna, puede tener cierta confianza en sus resultados. Aún así, el resultado podría deberse más al vecindario o la riqueza que a la raza misma.
Rodrigo

Respuestas:


41

Dio la advertencia porque muchos de los valores esperados serán muy pequeños y, por lo tanto, las aproximaciones de p pueden no ser correctas.

En Rpuede utilizar chisq.test(a, simulate.p.value = TRUE)para simular valores de p.

Sin embargo, con tamaños de celda tan pequeños, todas las estimaciones serán pobres. Puede ser bueno simplemente probar pasar frente a fallar (eliminar "no show") ya sea con chi-cuadrado o regresión logística. De hecho, dado que está bastante claro que la calificación de aprobado / reprobado es una variable dependiente, la regresión logística podría ser mejor.


¿Qué simulate.p.value = TRUEhace realmente cuando se agrega chisq.test?
Al14

1
Utiliza simulaciones para encontrar el valor p
Peter Flom - Restablecer Monica

1
Tenga en cuenta que simulate.p.value = TRUEutiliza la simulación condicional en los marginales , por lo que es realmente una versión de la prueba exacta de Fisher.
kjetil b halvorsen

23

El problema es que la aproximación de chi-cuadrado a la distribución del estadístico de prueba se basa en que los recuentos se distribuyen más o menos normalmente. Si muchos de los recuentos esperados son muy pequeños, la aproximación puede ser pobre.

Tenga en cuenta que la distribución real de la estadística de chi-cuadrado para la independencia en las tablas de contingencia es discreta, no continua.

La categoría noshow será un gran contribuyente al problema; Una cosa a considerar es fusionar noshow y fallar. Seguirá recibiendo la advertencia, pero no afectará tanto los resultados y la distribución debería ser bastante razonable (la regla que se aplica antes de que se emita la advertencia es demasiado estricta).

Pero, en cualquier caso, si está dispuesto a condicionar los márgenes (como lo hace cuando ejecuta la prueba exacta de Fisher) puede resolver el problema muy fácilmente en R; establecer el simulate.p.valueargumento a TRUE; entonces no depende de la aproximación de chi-cuadrado a la distribución de la estadística de prueba.


¿podría explicarme por qué "... la aproximación de chi-cuadrado a la distribución de la estadística de prueba se basa en que los recuentos se distribuyen más o menos normalmente"? No entiendo cómo esto puede ser cierto si uno, por ejemplo, tiene una tabla de contingencia de 2x2. ¿Cómo pueden distribuirse los recuentos (aproximadamente) normalmente? ¿Cómo pueden distribuirse normalmente los recuentos blanco, negro, hispano y asiático? ¿Te refieres a un poco igual? ¿Y cómo se relaciona esto con esta pregunta? : stats.stackexchange.com/questions/141407/…
Erosennin

La distribución multivariada de las variables aleatorias de conteo debe ser aproximadamente normal (aunque será degenerada). El conjunto de recuentos observados es solo una observación vectorial simple de esta normal multivariada: no se puede juzgar la distribución de una observación. Para hacer la evaluación de la que estoy hablando, debe confiar en los supuestos; es razonablemente fácil hacerlo para las celdas individuales (es decir, la distribución marginal para una celda dada, debajo de la nula). Parece que estás combinando recuentos entre celdas, pero eso no tiene sentido porque todos provienen de diferentes distribuciones
Glen_b: reinstala a Mónica el

Primero, ¡gracias por tomarte el tiempo! ¿Entonces está diciendo que los recuentos "hacia abajo" de la tabla de contingencia deberían ser (degeneradamente) multivariados normales, si observamos muchas observaciones? ¿No significa esto que los recuentos de cada celda individual también deberían ser normales, y también cuenta "de lado" en la tabla de contingencia (supongo que esto es lo que quiere decir con "cruzado")? F.ex una celda con el valor esperado 5, debería distribuirse normalmente alrededor de 5, ¿verdad? Entonces, si una celda a través de tiene un valor esperado de 40, esta celda debería distribuirse normalmente alrededor de 40, y juntas una normal multivariada de media 5 y 40, ¿no?
Erosennin

1
r×dordo(r-1)(do-1)
Glen_b -Reinstalar Monica

Esto es pesado y muy interesante. Si alguna vez tienes tiempo, volví a publicar mi primera pregunta aquí: stats.stackexchange.com/questions/142429/… .
Erosennin

12

Para recuentos tan pequeños, puede usar la prueba exacta de Fisher:

> fisher.test(a)

        Fisher's Exact Test for Count Data

data:  a 
p-value = 0.02618
alternative hypothesis: two.sided 

3

Consulte la sección "Suposiciones" del artículo de prueba de chi cuadrado de Pearson .

En pocas palabras, cuando el recuento en cualquiera de las celdas de la tabla es inferior a 5, se rompe uno de los supuestos. Creo que a eso se refiere el mensaje de error. En el artículo vinculado también puede encontrar información sobre la corrección que se puede aplicar.


66
χ2

0

Su pregunta principal habla sobre el tamaño de la muestra, pero veo que se comparan más de dos grupos. Si el valor p de la prueba es 0.05 o menos, sería difícil interpretar los resultados. Por lo tanto, estoy compartiendo un breve script que uso en tales situaciones:

# Load the required packages:
library(MASS) # for chisq
library(descr) # for crosstable

CrossTable(a$exam_result, a$ethnicity
       fisher = T, chisq = T, expected = T,
       prop.c = F, prop.t = F, prop.chisq = F, 
       sresid = T, format = 'SPSS')

Este código generará el Chi-cuadrado de Pearson y el Chi de Fisher. Produce recuentos y proporciones de cada una de las entradas de la tabla. Basado en los residuos estandarizados o las puntuaciones de los valores z, es decir,

sresid

Si está fuera del rango | 1.96 | es decir, menor que -1.96 o mayor que 1.96, entonces es significativo p <0.05. El signo luego indicaría si está relacionado positivamente o negativamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.