Clase 3. Una variable Categórica

Resúmenes Numéricos

library(mosaic)

La función tally() se puede utilizar para calcular recuentos, porcentajes y proporciones de una variable categórica.

tally(~ homeless, data = HELPrct)
homeless
homeless   housed 
     209      244 
tally(~ homeless, margins = TRUE, data = HELPrct)
homeless
homeless   housed    Total 
     209      244      453 
tally(~ homeless, format = "percent", data = HELPrct)
homeless
homeless   housed 
46.13687 53.86313 
tally(~ homeless, format = "proportion", data = HELPrct)
homeless
 homeless    housed 
0.4613687 0.5386313 

La prueba binomial

Se puede calcular un intervalo de confianza exacto para una proporción (así como una prueba de la hipótesis nula de que la proporción poblacional es igual a un valor determinado [por defecto, 0,5]) utilizando la función binom.test(). La función binom.test() estándar requiere tabular los datos.

binom.test(209, 209 + 244, p=0.51)



data:  209 out of 453
number of successes = 209, number of trials = 453, p-value = 0.03874
alternative hypothesis: true probability of success is not equal to 0.51
95 percent confidence interval:
 0.4147418 0.5085030
sample estimates:
probability of success 
             0.4613687 

El paquete mosaic proporciona una interfaz de fórmulas que evita la necesidad de tabular previamente los datos.

result <- binom.test(~ (homeless == "homeless"), data = HELPrct)
result



data:  HELPrct$(homeless == "homeless")  [with success = TRUE]
number of successes = 209, number of trials = 453, p-value = 0.1101
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
 0.4147418 0.5085030
sample estimates:
probability of success 
             0.4613687 

Como suele ocurrir con los comandos de este tipo, el objeto devuelto por la función proporciona una serie de cantidades útiles.

names(result)
[1] "statistic"   "parameter"   "p.value"     "conf.int"    "estimate"   
[6] "null.value"  "alternative" "data.name"  

Estos pueden extraerse utilizando el operador `$` o una función de extracción. Por ejemplo, el usuario puede extraer el intervalo de confianza o el valor p.

result$statistic
number of successes 
                209 
confint(result)
  probability of success     lower    upper level
1              0.4613687 0.4147418 0.508503  0.95

La prueba de proporciones

Nota: La mayoría de los objetos en R tienen un método `print()`. Por tanto, cuando obtenemos un resultado, lo que vemos en la consola es `print(resultado)`. Es posible que haya mucha información adicional contenida en el propio objeto. En algunas situaciones, como con los gráficos, el objeto se devuelve de forma invisible, por lo que no se imprime nada. Esto evita tener que revisar un listado extenso que no está destinado a la lectura humana. Aun así, es posible asignar el objeto devuelto a una variable y procesarlo más tarde, aunque no aparezca nada en pantalla. Esto resulta útil a veces para las funciones de gráficos *lattice*.

Se pueden calcular un intervalo y una prueba similares utilizando la función prop.test(). A continuación, se presenta el recuento del número de personas en cada uno de los dos niveles de homeless.

La función prop.test() realizará los cálculos de la prueba de proporciones y mostrará el resultado.

prop.test(~ (homeless == "homeless"), correct = FALSE,
data = HELPrct)

    1-sample proportions test without continuity correction

data:  HELPrct$(homeless == "homeless")  [with success = TRUE]
X-squared = 2.7042, df = 1, p-value = 0.1001
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
 0.4159798 0.5074072
sample estimates:
        p 
0.4613687 

En esta instrucción, prop.test analiza la variable homeless de la misma manera que lo haría tally(). La función prop.test() también puede operar directamente con recuentos numéricos, tal como lo hace binom.test().

Nota: escribimos homeless == “homeless” para definir sin ambigüedades qué proporción estamos considerando. Podríamos haber escrito también homeless == “housed”.

Pruebas de Bondad de Ajuste

La Prueba de Chi-cuadrada para Bondad de Ajuste

Imaginemos que un estudio de didáctica a nivel nacional establece que, al enfrentarse a un problema matemático nuevo, los estudiantes de primaria prefieren utilizar tres estrategias de resolución en las siguientes proporciones: 40% Visual (hacen dibujos), 40% Analítica (plantean operaciones directamente) y 20% Prueba y Error (tanteo).

Ustedes observan a una muestra de 80 estudiantes en una escuela en particular y quieren saber: ¿Se ajustan las estrategias de esta escuela a la tendencia nacional, o sus estudiantes tienen un estilo de resolución distinto? Para responder a esto, utilizamos la prueba de bondad de ajuste.

1. El Contraste de Hipótesis

En esta prueba, siempre estamos comparando las frecuencias que observamos en la realidad contra las que esperaríamos ver si una distribución teórica fuera cierta.

  • Hipótesis Nula (\(H_0\)): Las frecuencias observadas se ajustan a la distribución teórica esperada. (Es decir, la proporción en la escuela es efectivamente 40% Visual, 40% Analítica y 20% Prueba y Error; cualquier pequeña variación es solo producto del azar de la muestra).

  • Hipótesis Alternativa (\(H_a\)): Las frecuencias observadas NO se ajustan a la distribución teórica. (Los estilos de resolución de la escuela son significativamente distintos a la tendencia nacional).

2. El Estadístico de Prueba

Para saber qué tanto se desvían nuestros datos de la teoría, calculamos una “distancia” global estandarizada entre lo observado (\(O_i\)) y lo esperado (\(E_i\)).

$$\chi^2 = \sum_{i=1}^{k} \frac{(O_i - E_i)^2}{E_i}$$

¿Cómo interpretamos los elementos de esta fórmula?

  • \(O_i\) (Observado): Cuántos estudiantes realmente utilizaron cada estrategia.

  • \(E_i\) (Esperado): Cuántos estudiantes deberían haberla utilizado según la \(H_0\). (Por ejemplo, si son 80 niños y esperamos un 20% en Prueba y Error, \(E = 80 \times 0.20 = 16\)).

  • El numerador \((O_i - E_i)^2\): Restamos para ver el tamaño del error. Lo elevamos al cuadrado por dos razones: para que las diferencias negativas y positivas no se cancelen al sumar, y para penalizar de forma mucho más severa las desviaciones grandes.

  • El denominador \(E_i\): Nos sirve para estandarizar el peso de la diferencia. Fallar por 5 alumnos no tiene el mismo impacto si esperabas 10 (un error inmenso) que si esperabas 1,000 (un error estadísticamente diminuto).

Al sumar esto para todas las categorías, obtenemos un solo número: el estadístico \(\chi^2\). Si los datos reales son idénticos a la teoría, el numerador será cero, y por tanto \(\chi^2 = 0\). A mayor discrepancia, mayor será el número.

3. La Región de Rechazo y la Toma de Decisión

A diferencia de la distribución Normal o la \(t\) de Student que son simétricas, la distribución Chi-cuadrada tiene propiedades muy particulares:

  1. Comienza en el cero y solo toma valores positivos (precisamente porque viene de sumar números al cuadrado).

  2. Es asimétrica y está fuertemente sesgada hacia la derecha.

La “forma” exacta de esta curva cambia dependiendo de los grados de libertad (\(df = k - 1\), donde \(k\) es el número de categorías. En este caso de 3 estrategias de resolución, \(df = 2\)).

¿Dónde tomamos la decisión de rechazo?

Dado que un \(\chi^2\) pequeño significa que los datos se ajustan bien a la teoría, la región de rechazo siempre se ubica exclusivamente en la cola derecha.

  • Fijamos un nivel de significancia (típicamente \(\alpha = 0.05\)).

  • Identificamos el valor crítico que separa el 95% del área bajo la curva del 5% extremo derecho.

  • Si el estadístico \(\chi^2\) que calculamos con nuestros datos es tan grande que cruza esa frontera y cae en la cola derecha (o equivalentemente, si el p-value < \(\alpha\)), concluimos que la diferencia es excesiva para ser mera casualidad. Rechazamos \(H_0\).

En el contexto de nuestra investigación educativa, rechazar \(H_0\) nos indicaría empíricamente que los estudiantes de esta escuela abordan los problemas matemáticos de forma distinta a la norma nacional, lo cual podría requerir que los profesores adapten su material didáctico.

Se pueden calcular diversas pruebas de bondad de ajuste con respecto a una distribución de referencia. En el caso de los datos del estudio HELP, podríamos contrastar la hipótesis nula de que existe una proporción igual de sujetos en cada grupo de abuso de sustancias en las poblaciones originales.

Además de la opción de formato, existe una opción de márgenes para incluir totales marginales en la tabla. El valor predeterminado en tally() es margins = FALSE.

tally(~ substance, format = "percent", data = HELPrct)
substance
 alcohol  cocaine   heroin 
39.07285 33.55408 27.37307 
observed <- tally(~ substance, data = HELPrct)
observed
substance
alcohol cocaine  heroin 
    177     152     124 
p <- c(1/3, 1/3, 1/3) # equivalent to rep(1/3, 3)
chisq.test(observed, p = p)

    Chi-squared test for given probabilities

data:  observed
X-squared = 9.3113, df = 2, p-value = 0.009508

Alternativamente, el paquete mosaic proporciona una versión de chisq.test() con una salida más detallada.

xchisq.test(observed, p = p)

    Chi-squared test for given probabilities

data:  x
X-squared = 9.3113, df = 2, p-value = 0.009508

  177      152      124   
(151.00) (151.00) (151.00)
[4.4768] [0.0066] [4.8278]
< 2.116> < 0.081> <-2.197>
     
key:
    observed
    (expected)
    [contribution to X-squared]
    <Pearson residual>
# clean up variables no longer needed
rm(p)