¿Cómo puedo probar la misma variable categórica en dos poblaciones?

8

Tengo datos que se parecen un poco a esto:

ID         Status
01         A
02         G
03         E
...        ...
100        G

Entiendes la idea, creo. Tengo estos datos de dos poblaciones separadas (cohortes) y quiero comparar la distribución de la variable de estado en una población con la distribución en otra. La pregunta que estoy respondiendo es algo como esto: si no supieras nada mejor, ¿podrían ser de la misma población? Creo que esto significa que debería realizar el chi cuadrado de una persona, aunque no estoy seguro. Tampoco estoy seguro de la metodología para transformar la variable de una manera que le permita ejecutar la prueba. (Especialmente me gustaría saber cómo hacer esto en R.)

Zelbiniano
fuente

Respuestas:

10

Permítanme (a) primero explicar la idea subyacente en lugar de la mecánica: se vuelven más obvias en retrospectiva. Luego (b) hablaré sobre el chi-cuadrado (y si es apropiado, ¡puede que no lo sea!), Y luego (c) hablaré sobre cómo hacerlo en R.

(a) Bajo nulo, las poblaciones son las mismas. Imagine que coloca sus dos cohortes en un conjunto de datos grande pero agrega una columna que contiene las etiquetas de las cohortes. Luego, debajo de nulo, la etiqueta de cohorte es efectivamente solo una etiqueta aleatoria que no le dice nada más sobre la distribución de la que provino la observación.

Bajo la alternativa, por supuesto, las etiquetas de cohorte son importantes: conocer la etiqueta de cohorte le dice más que no saberlo porque las distribuciones bajo las dos etiquetas son diferentes.

(Esto sugiere inmediatamente algún tipo de prueba de permutación / prueba de aleatorización en la que una estadística, una sensible a la alternativa, calculada en la muestra se compara con la distribución de la misma estadística con las etiquetas de cohorte reasignadas a las filas al azar. Si hizo todo posibles reasignaciones es una prueba de permutación, si solo las muestra es una prueba de aleatorización).

(b) Entonces, ¿cómo hacer un chi-cuadrado?

Calcula los valores esperados bajo nulo. Dado que las etiquetas de cohorte no importan debajo del valor nulo, se calcula el número esperado en cada celda en función de la distribución general:

                       Status
                 A   B   ...  E   ...  G ...      Total
  Cohort 1:     10  15       18                    84
  Cohort 2:      9   7       25                    78

  Total:        19  22   ... 43 ...               162

Entonces, si la distribución fuera la misma, no habría asociación entre la cohorte y el estado, y (condicional en los totales de las filas y los totales de las columnas) el número esperado en la celda es row-total-i columna-total-j / total-total(yo,j)×

Entonces solo obtienes una prueba de independencia de chi-cuadrado ordinaria .

¡SIN EMBARGO!

Si las etiquetas de estado forman una categoría ordenada , esta prueba de chi-cuadrado arroja mucha información: tendrá un bajo poder contra alternativas interesantes (como un ligero cambio hacia categorías más altas o más bajas). En esa situación, debe hacer algo más adecuado, es decir, que tenga en cuenta ese pedido. Hay muchas opciones

-

(c) Ahora, acerca de cómo hacerlo en R, depende de cómo estén configurados actualmente sus datos en R, ¡ realmente sería útil tener un ejemplo reproducible como un subconjunto de sus datos!

Asumiré que lo tiene en un marco de datos con dos columnas, una con el estado (un factor) y otra con la cohorte (un segundo factor).

Al igual que:

  status  cohort
1      B Cohort1
2      B Cohort1
3      D Cohort1
4      B Cohort1
5      C Cohort1
6      D Cohort1
. 
.
. 
25      G Cohort2
26      E Cohort2
27      E Cohort2
28      D Cohort2
29      C Cohort2
30      G Cohort2

Entonces, si se tratara de un marco de datos llamado statusresults, obtendría una tabla como la que hice anteriormente con:

> with(statusresults,table(cohort,status))
         status
cohort    A B C D E F G
  Cohort1 2 6 7 3 0 0 0
  Cohort2 0 0 2 2 4 1 3

Y para la prueba chisquare, simplemente irías:

> with(statusresults, chisq.test(status, cohort))

    Pearson's Chi-squared test

data:  status and cohort 
X-squared = 18.5185, df = 6, p-value = 0.005059

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

(la advertencia se debe a que los recuentos esperados son bajos en algunas celdas, dado que utilicé una muestra muy pequeña)

Si ha ordenado categorías para el estado, debe decirlo, para que podamos analizar otras posibilidades para el análisis que no sea el simple cuadrado.

Glen_b -Reinstate a Monica
fuente
Gracias por el ejemplo de chi-2! ¿Qué recomendaría si el recuento de células es tan bajo como en su ejemplo? ¿Se violan los requisitos previos para una prueba de chi-cuadrado?
Mark Heckmann
@ MarkHeckmann Realmente no hay "requisitos previos" como tales. La distribución de chi-cuadrado es siempre una aproximación a la verdadera distribución nula del chi-cuadrado, y es una cuestión de cuán aproximada puede ser la aproximación (por ejemplo, cuánta imprecisión en los valores de p puede tolerar en qué partes del distribución). La regla general más común es demasiado estricta, como se discute en numerosos artículos. Pero si los números esperados fueran demasiado pequeños, usaría la simulación de la distribución nula de la prueba de chi-cuadrado, o elegiría cualquier estadística apropiada y usaría el enfoque de permutación descrito en (a).
Glen_b -Reinstate Monica
1

Tienes razón con respecto a la idea de hacer una prueba de Chi-cuadrado. Asi que aqui esta:

#Create two data sets (id, outcome and group label)
Dat1 <- as.data.frame(cbind(1:999,sample(c("A","G","E"),999,replace=T,prob=c(.2,.4,.4)),"group1"))
Dat2 <- as.data.frame(cbind(1:500,sample(c("A","G","E"),500,replace=T,prob=c(.4,.2,.4)),"group2"))

#Combine data sets
Dat  <- rbind(Dat1,Dat2)

#Receive descriptive statistics and compute Chi-Square
attach(Dat)
table(V3,V2)
chisq.test(table(V3,V2))
detach(Dat)

Si es correcto, su Chi-cuadrado será significativo, por lo tanto, existe una diferencia significativa entre las distribuciones de los dos grupos. Para una referencia para comenzar, vea: http://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test http://www.statmethods.net/stats/frequencies.html

Pezuñas Huub
fuente
0

Quizás te interese este artículo [1]. Extracto del resumen:
el objetivo de la prueba de dos muestras (también conocida como la prueba de homogeneidad) es, dado dos conjuntos de muestras, juzgar si las distribuciones de probabilidad detrás de las muestras son las mismas o no. En este artículo, proponemos un nuevo método no paramétrico de prueba de dos muestras basado en un estimador de razón de densidad de mínimos cuadrados. A través de varios experimentos, mostramos que el método propuesto en general produce un error de tipo II más pequeño (es decir, la probabilidad de juzgar que las dos distribuciones son las mismas cuando en realidad son diferentes) que un método de vanguardia, con un poco error tipo I mayor (es decir, la probabilidad de juzgar que las dos distribuciones son diferentes cuando en realidad son las mismas).

Los autores también proporcionan código matlab para el mismo [2].

[1] http://www.ms.ku-tokyo.ac.jp/2011/LSTT.pdf
[2] http://www.ms.ku-tokyo.ac.jp/software.html#uLSIF

TenaliRaman
fuente