Saltar al contenido principal
LibreTexts Español

12.2: La prueba χ2 de independencia (o asociación)

  • Page ID
    151266
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    GUARDBOT1: ¡alto!
    GUARDBOT2: ¿Ser robot o humano?
    LEELA: Robot... seremos.
    FREÍR: Uh, ¡sí! ¡Solo dos robots lo están robotizando! ¿Eh?
    GUARDBOT1: Administrar la prueba.
    GUARDBOT2: ¿Cuál de las siguientes opciones preferirías más? A: Un cachorro, B: Una flor bonita de tu amorcito, o C: ¿Un gran archivo de datos correctamente formateado?
    GUARDBOT1: ¡Elige!

    — Futurama, “Miedo a un planeta bot
    El otro día estaba viendo un documental animado que examinaba las pintorescas costumbres de los nativos del planeta Chapek 9. Al parecer, para poder acceder a su ciudad capital, un visitante debe demostrar que es un robot, no un humano. Para determinar si el visitante es humano o no, preguntan si el visitante prefiere cachorros, flores o archivos de datos grandes, debidamente formateados. “Bastante listo”, pensé para mí mismo “pero ¿y si los humanos y los robots tienen las mismas preferencias? Esa probablemente no sería una muy buena prueba entonces, ¿verdad?” Al pasar, tengo en mis manos los datos de prueba que las autoridades civiles de Chapek 9 utilizaron para verificar esto. Resulta que lo que hicieron fue muy sencillo... encontraron un montón de robots y un montón de humanos y les preguntaron qué preferían. Guardé sus datos en un archivo llamado Chapek9.rData, que ahora puedo cargar y echar un vistazo rápido a:

    load( "./rbook-master/data/chapek9.Rdata" )
    str(chapek9)
    
    ## 'data.frame':    180 obs. of  2 variables:
    ##  $ species: Factor w/ 2 levels "robot","human": 1 2 2 2 1 2 2 1 2 1 ...
    ##  $ choice : Factor w/ 3 levels "puppy","flower",..: 2 3 3 3 3 2 3 3 1 2 ...

    Bien, entonces tenemos un solo marco de datos llamado chapek9, que contiene dos factores, especies y elección. Como siempre, es agradable echar un vistazo rápido a los datos,

    head(chapek9)
    
    ##   species choice
    ## 1   robot flower
    ## 2   human   data
    ## 3   human   data
    ## 4   human   data
    ## 5   robot   data
    ## 6   human flower

    y luego tomar un resumen (),

    summary(chapek9)
    
    ##   species      choice   
    ##  robot:87   puppy : 28  
    ##  human:93   flower: 43  
    ##             data  :109

    En total hay 180 entradas en el marco de datos, una por cada persona (contando tanto a los robots como a los humanos como “personas”) a quien se le pidió que tomara una decisión. Específicamente, hay 93 humanos y 87 robots; y abrumadoramente la opción preferida es el archivo de datos. No obstante, estos resúmenes no abordan la pregunta que nos interesa. Para ello, necesitamos una descripción más detallada de los datos. Lo que queremos hacer es mirar las opciones desglosadas por especies. Es decir, necesitamos tabular de manera cruzada los datos (ver Sección 7.1). Hay bastantes formas de hacer esto, como hemos visto, pero como nuestros datos se almacenan en un marco de datos, es conveniente usar la función xtabs ().

    chapekFrequencies <- xtabs( ~ choice + species, data = chapek9)
    chapekFrequencies
    ##         species
    ## choice   robot human
    ##   puppy     13    15
    ##   flower    30    13
    ##   data      44    65

    Eso es más o menos lo que buscamos. Entonces, si agregamos los totales de fila y columna (lo cual es conveniente para los fines de explicar las pruebas estadísticas), tendríamos una tabla como esta,

    Robot Humano Total
    Cachorro 13 15 28
    Flor 30 13 43
    Archivo de datos 44 65 109
    Total 87 93 180
    que real ly lo haría ser un buen manera de reportar las estadísticas descriptivas para este conjunto de datos. En cualquier caso, es bastante claro que la gran mayoría de los humanos eligieron el archivo de datos, mientras que los robots tendían a estar mucho más parejos en sus preferencias. Dejando de lado la pregunta de por qué es más probable que los humanos elijan el archivo de datos por el momento (lo que sí parece bastante extraño, es cierto), nuestro primer orden del día es determinar si la discrepancia entre las elecciones humanas y las elecciones de robots en el conjunto de datos es estadísticamente significativo.

    Construyendo nuestra prueba de hipótesis

    ¿Cómo analizamos estos datos? Específicamente, dado que mi hipótesis de investigación es que “humanos y robots responden a la pregunta de diferentes maneras”, ¿cómo puedo construir una prueba de la hipótesis nula de que “humanos y robots responden la pregunta de la misma manera”? Como antes, comenzamos por establecer alguna notación para describir los datos:

    Robot Humano Total
    Cachorro O 11 O 12 R 1
    Flor O 21 O 22 R 2
    Archivo de datos O 31 O 32 R 3
    Total C 1 C 2 N

    En esta notación decimos que O ij es un recuento (frecuencia observada) del número de encuestados que son de especies j (robots o humanos) que dieron respuesta i (cachorro, flor o datos) cuando se les pidió que hicieran una elección. El número total de observaciones se escribe N, como de costumbre. Finalmente, he usado R i para denotar los totales de fila (por ejemplo, R1 es el número total de personas que eligieron la flor), y C j para denotar los totales de columna (por ejemplo, C1 es el número total de robots). 176

    Entonces ahora pensemos en lo que dice la hipótesis nula. Si los robots y los humanos están respondiendo de la misma manera a la pregunta, significa que la probabilidad de que “un robot diga cachorro” es la misma que la probabilidad de que “un humano diga cachorro”, y así sucesivamente para las otras dos posibilidades. Entonces, si usamos P ij para denotar “la probabilidad de que un miembro de la especie j dé respuesta i” entonces nuestra hipótesis nula es que:

    H0: Todo lo siguiente es cierto:
      P 11 =P 12 (misma probabilidad de decir cachorro)
      P 21 =P 22 (misma probabilidad de decir flor) y
      P 31 =P 32 (misma probabilidad de decir datos).

    Y en realidad, dado que la hipótesis nula es afirmar que las verdaderas probabilidades de elección no dependen de la especie de la persona que hace la elección, podemos dejar que P i se refiera a esta probabilidad: e.g., P 1 es la verdadera probabilidad de elegir al cachorro.

    A continuación, de la misma manera que hicimos con la prueba de bondad de ajuste, lo que tenemos que hacer es calcular las frecuencias esperadas. Es decir, para cada uno de los recuentos observados O ij, necesitamos averiguar qué nos diría esperar la hipótesis nula. Denotemos esta frecuencia esperada por E ij. Esta vez, es un poco más complicado. Si hay un total de Cj personas que pertenecen a la especie j, y la verdadera probabilidad de que alguien (independientemente de la especie) elija la opción i es P i, entonces la frecuencia esperada es solo:

    \(E_{i j}=C_{j} \times P_{i}\)

    Ahora bien, todo esto está muy bien y bien, pero tenemos un problema. A diferencia de la situación que tuvimos con la prueba de bondad de ajuste, la hipótesis nula en realidad no especifica un valor particular para P i. ¡Es algo que tenemos que estimar (Capítulo 10) a partir de los datos! Afortunadamente, esto es bastante fácil de hacer. Si 28 de 180 personas seleccionaron las flores, entonces una estimación natural para la probabilidad de elegir flores es 28/180, que es aproximadamente .16. Si expresamos esto en términos matemáticos, lo que estamos diciendo es que nuestra estimación para la probabilidad de elegir la opción i es solo el total de la fila dividido por el tamaño total de la muestra:

    \(\hat{P}_{i}=\dfrac{R_{i}}{N}\)

    Por lo tanto, nuestra frecuencia esperada puede escribirse como el producto (es decir, multiplicación) del total de la fila y el total de la columna, dividido por el número total de observaciones: 177

    \(E_{i j}=\dfrac{R_{i} \times C_{j}}{N}\)

    Ahora que hemos descubierto cómo calcular las frecuencias esperadas, es sencillo definir una estadística de prueba; siguiendo exactamente la misma estrategia que usamos en la prueba de bondad de ajuste. De hecho, es más o menos la misma estadística. Para una tabla de contingencia con r filas y c columnas, la ecuación que define nuestro estadístico X 2 es

    \(X^{2}=\sum_{i=1}^{r} \sum_{j=1}^{c} \dfrac{\left(E_{i j}-O_{i j}\right)^{2}}{E_{i j}}\)

    La única diferencia es que tengo que incluir dos signos de suma (i.e.,) para indicar que estamos sumando sobre ambas filas y columnas. Como antes, valores grandes de X 2 indican que la hipótesis nula proporciona una mala descripción de los datos, mientras que valores pequeños de X 2 sugieren que hace un buen trabajo de contabilidad de los datos. Por lo tanto, al igual que la última vez, queremos rechazar la hipótesis nula si X 2 es demasiado grande.

    No es sorprendente que esta estadística esté distribuida por X 2. Todo lo que tenemos que hacer es averiguar cuántos grados de libertad están involucrados, lo cual en realidad no es demasiado difícil. Como mencioné antes, puedes (generalmente) pensar en los grados de libertad como iguales al número de puntos de datos que estás analizando, menos el número de restricciones. Una tabla de contingencia con r filas y c columnas contiene un total de r×c frecuencias observadas, por lo que ese es el número total de observaciones. ¿Qué pasa con las restricciones? Aquí, es un poco más complicado. La respuesta es siempre la misma

    df= (r−1) (c−1)

    pero la explicación de por qué los grados de libertad toman este valor es diferente dependiendo del diseño experimental. Por el bien del argumento, supongamos que honestamente habíamos tenido la intención de sondear exactamente 87 robots y 93 humanos (totales de columna fijados por el experimentador), pero dejamos los totales de fila libres para variar (los totales de fila son variables aleatorias). Pensemos en las limitaciones que aquí se aplican. Bueno, ya que fijamos deliberadamente los totales de columna por Acto de Experimentador, tenemos c restricciones ahí mismo. Pero, en realidad hay más que eso. ¿Recuerdas cómo nuestra hipótesis nula tenía algunos parámetros libres (es decir, tuvimos que estimar los valores de P i)? Esos también importan. No voy a explicar por qué en este libro, pero cada parámetro libre en la hipótesis nula es más bien como una restricción adicional. Entonces, ¿cuántos de esos hay? Bueno, ya que estas probabilidades tienen que sumar a 1, solo hay r−1 de éstas. Entonces nuestros grados totales de libertad son:

    df= (número de observaciones) − (número de restricciones)

    = (rc) − (c+ (r−1))

    =rc−c−r+1

    = (r−1) (c−1)

    Alternativamente, supongamos que lo único que el experimentador fijó fue el tamaño total de la muestra N. Es decir, interrogamos a las primeras 180 personas que vimos, y solo resultó que 87 eran robots y 93 eran humanos. Esta vez alrededor nuestro razonamiento sería ligeramente diferente, pero aún así conduciría es a la misma respuesta. Nuestra hipótesis nula todavía tiene r−1 parámetros libres correspondientes a las probabilidades de elección, pero ahora también tiene c−1 parámetros libres correspondientes a las probabilidades de especie, porque también tendríamos que estimar la probabilidad de que una persona muestreada aleatoriamente resulte ser un robot. 178 Por último, como en realidad arreglamos el número total de observaciones N, esa es una restricción más. Así que ahora tenemos, observaciones rc, y (c−1) + (r−1) +1 restricciones. ¿Qué da eso?

    df= (número de observaciones) − (número de restricciones)

    =rc− ((c−1) + (r−1) +1)

    =rc−c−r+1

    = (r−1) (c−1)

    Increíble.

    Haciendo la prueba en R

    Bien, ahora que sabemos cómo funciona la prueba, echemos un vistazo a cómo se hace en R. Tan tentador como es guiarte a través de los tediosos cálculos para que te veas obligado a aprenderlo a lo largo, me parece que no tiene sentido. Ya te mostré cómo hacerlo el largo camino para la prueba de bondad de ajuste en la última sección, y como la prueba de independencia no es conceptualmente diferente, no aprenderás nada nuevo haciéndolo el largo camino. Entonces, en cambio, iré directo a mostrarte el camino más fácil. Como siempre, R te permite hacerlo de múltiples maneras. Ahí está la función chisq.test (), de la que hablaré en la Sección @ref (chisq.test, pero primero quiero usar la función AssociationTest () en el paquete lsr, que creo que es más fácil para los principiantes. Funciona exactamente de la misma manera que la función xtabs (). Recordemos que, para producir la tabla de contingencia, utilizamos este comando:

    xtabs( formula = ~choice+species, data = chapek9 )
    ##         species
    ## choice   robot human
    ##   puppy     13    15
    ##   flower    30    13
    ##   data      44    65

    La función associationTest () tiene exactamente la misma estructura: necesita una fórmula que especifique qué variables está tabulando de manera cruzada y el nombre de un marco de datos que contiene esas variables. Entonces el comando es solo esto:

    associationTest( formula = ~choice+species, data = chapek9 )
    ## 
    ##      Chi-square test of categorical association
    ## 
    ## Variables:   choice, species 
    ## 
    ## Hypotheses: 
    ##    null:        variables are independent of one another
    ##    alternative: some contingency exists between variables
    ## 
    ## Observed contingency table:
    ##         species
    ## choice   robot human
    ##   puppy     13    15
    ##   flower    30    13
    ##   data      44    65
    ## 
    ## Expected contingency table under the null hypothesis:
    ##         species
    ## choice   robot human
    ##   puppy   13.5  14.5
    ##   flower  20.8  22.2
    ##   data    52.7  56.3
    ## 
    ## Test results: 
    ##    X-squared statistic:  10.722 
    ##    degrees of freedom:  2 
    ##    p-value:  0.005 
    ## 
    ## Other information: 
    ##    estimated effect size (Cramer's v):  0.244

    Al igual que hicimos con la prueba de bondad de ajuste, la voy a pasar línea por línea. Las dos primeras líneas son, una vez más, solo recordarte qué tipo de prueba ejecutaste y qué variables se utilizaron:

    Chi-square test of categorical association
    
    Variables:   choice, species
    

    A continuación, te dice cuáles son las hipótesis nulas y alternativas (y nuevamente, quiero recordarte que no te acostumbres a ver estas hipótesis escritas de manera tan explícita):

    Hypotheses: 
       null:        variables are independent of one another
       alternative: some contingency exists between variables

    A continuación, te muestra la tabla de contingencia observada que se está probando:

    Observed contingency table:
            species
    choice   robot human
      puppy     13    15
      flower    30    13
      data      44    65

    y también te muestra cuáles serían las frecuencias esperadas si la hipótesis nula fuera cierta:

    Expected contingency table under the null hypothesis:
            species
    choice   robot human
      puppy   13.5  14.5
      flower  20.8  22.2
      data    52.7  56.3

    En la siguiente parte se describen los resultados de la propia prueba de hipótesis:

    Test results: 
       X-squared statistic:  10.722 
       degrees of freedom:  2 
       p-value:  0.005 

    Y finalmente, reporta una medida del tamaño del efecto:

    Other information: 
       estimated effect size (Cramer's v):  0.244 

    Puedes ignorar este bit por ahora. Hablaré de ello en un momento.

    Esta salida nos da suficiente información para escribir el resultado:

    La χ2 de Pearson reveló una asociación significativa entre especies y elección (χ 2 (2) =10.7, p<.01): los robots parecían ser más propensos a decir que prefieren las flores, pero los humanos tenían más probabilidades de decir que prefieren los datos.

    Observe que, una vez más, proporcioné un poco de interpretación para ayudar al lector humano a entender lo que está pasando con los datos. Más adelante en mi sección de discusión, proporcionaría un poco más de contexto. Para ilustrar la diferencia, esto es lo que probablemente diría más adelante:

    El hecho de que los humanos parecían tener una preferencia más fuerte por los archivos de datos sin procesar que por los robots es algo contradictorio. Sin embargo, en contexto tiene cierto sentido: la autoridad civil en Chapek 9 tiene una desafortunada tendencia a matar y diseccionar humanos cuando son identificados. Como tal, parece muy probable que los participantes humanos no respondieran honestamente a la pregunta, para evitar consecuencias potencialmente indeseables. Esto debe considerarse como una debilidad metodológica sustancial.

    Esto podría clasificarse como un ejemplo bastante extremo de un efecto de reactividad, supongo. Obviamente, en este caso el problema es lo suficientemente grave como para que el estudio sea más o menos inservible como herramienta para entender la diferencia de preferencias entre humanos y robots. Sin embargo, espero que esto ilustre la diferencia entre obtener un resultado estadísticamente significativo (nuestra hipótesis nula es rechazada a favor de la alternativa), y encontrar algo de valor científico (los datos no nos dicen nada de interés sobre nuestra hipótesis de investigación debido a una gran falla metodológica).

    Posdata

    Más tarde descubrí que los datos estaban inventados, y había estado viendo caricaturas en lugar de trabajar.


    This page titled 12.2: La prueba χ2 de independencia (o asociación) is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.