Unidad 2 · Asociación bivariada · Módulo 14
En el M13 construimos tablas de contingencia, elegimos porcentajes según el denominador y comparamos perfiles entre grupos. Esas herramientas permiten describir diferencias, pero no indican por sí solas cuánta evidencia existe frente a la independencia ni qué tan marcada es la asociación. En este módulo utilizaremos las frecuencias esperadas como modelo de referencia, resumiremos la discrepancia global mediante chi-cuadrado y localizaremos excesos y déficits con residuos. Finalmente, V de Cramer permitirá discutir la magnitud. Evidencia, diagnóstico, dirección y relevancia responden preguntas diferentes y deben interpretarse de manera integrada.
En el módulo anterior analizamos cómo se distribuían los niveles de seguridad económica entre personas con empleos estables e inestables. Nuestra unidad de análisis continúa siendo la persona ocupada. La estabilidad laboral se registra mediante dos categorías —estable e inestable— y la seguridad económica percibida se resume como baja, media o alta.
La tabla tiene una estructura \(2\times3\). Los porcentajes por fila permiten comparar los perfiles de seguridad dentro de cada tipo de empleo. Si las proporciones son semejantes, el patrón puede ser descriptivamente compatible con independencia. Si se separan, observamos una asociación descriptiva.
Sin embargo, una diferencia visible no responde todavía tres preguntas fundamentales:
Para avanzar necesitamos comparar las frecuencias observadas con las frecuencias esperadas bajo un modelo de independencia. Chi-cuadrado resume la discrepancia global. Los residuos muestran dónde existen excesos o déficits. V de Cramer resume la magnitud general del patrón.
La seguridad económica se presenta en tres categorías para facilitar el análisis categórico. Esta transformación reduce parte de la información contenida en el índice continuo. Además, ninguna de estas herramientas demuestra que la estabilidad laboral cause por sí sola la seguridad económica.
Los datos y resultados utilizados en las visualizaciones, cálculos y ejemplos son construidos con fines pedagógicos. No representan estimaciones de una población real.
| Estabilidad laboral | Seguridad baja | Seguridad media | Seguridad alta | Total |
|---|---|---|---|---|
| Inestable | \(O_{11}\) | \(O_{12}\) | \(O_{13}\) | \(n_{1+}\) |
| Estable | \(O_{21}\) | \(O_{22}\) | \(O_{23}\) | \(n_{2+}\) |
| Total | \(n_{+1}\) | \(n_{+2}\) | \(n_{+3}\) | \(N\) |
Cada \(O_{ij}\) representa una frecuencia observada: el número real de personas ubicado en una combinación de categorías. Los márgenes contienen los totales por fila, por columna y para la muestra completa.
Al calcular las frecuencias esperadas se mantienen esos márgenes. La tabla esperada no representa una muestra nueva ni datos imaginarios obtenidos en otro estudio. Es una referencia matemática construida con los mismos totales, suponiendo que las variables fueran independientes. La comparación se realiza celda por celda: \(O_{ij}\) frente a \(E_{ij}\).
Escenario A · Perfiles semejantes
Las personas con empleo estable e inestable presentan distribuciones parecidas de seguridad baja, media y alta. Las frecuencias observadas se aproximan a las esperadas bajo independencia.
Las diferencias \(O-E\) son pequeñas, las contribuciones de las celdas son reducidas y los residuos se acercan a cero. Chi-cuadrado también es bajo y V de Cramer indica una asociación global limitada.
Las diferencias observadas son pequeñas respecto del patrón que esperaríamos si ambas variables fueran independientes.
Escenario B · Perfiles diferentes
El empleo inestable concentra una mayor proporción de seguridad baja, mientras que el empleo estable concentra una mayor proporción de seguridad alta. Algunas frecuencias observadas se alejan claramente de sus valores esperados.
Las contribuciones aumentan y los residuos permiten distinguir excesos y déficits. Chi-cuadrado resume una discrepancia global mayor y V de Cramer refleja una asociación más marcada.
Algunas combinaciones presentan más o menos casos de los esperados bajo independencia y forman un patrón global de asociación.
Una diferencia porcentual debe evaluarse respecto de un modelo de independencia. Sin embargo, el valor \(p\) no basta: una conclusión completa combina perfiles, evidencia global, residuos, magnitud, condiciones y contexto social.
La independencia funciona como un modelo de referencia. Las frecuencias esperadas mantienen los totales observados de las filas y columnas, pero distribuyen los casos como si la estabilidad laboral no aportara información sobre la seguridad económica.
Independencia no significa que todas las celdas deban contener el mismo número de personas. Si los grupos laborales o las categorías de seguridad tienen tamaños diferentes, sus esperadas también serán distintas.
La frecuencia esperada no es una predicción sobre otra muestra: es la cantidad que correspondería a una celda si los márgenes se mantuvieran y las variables fueran independientes.
Cada celda contiene una observada \(O\) y una esperada \(E\). La diferencia \(O-E\) indica si hay un exceso o un déficit de casos. Al elevarla al cuadrado evitamos que diferencias positivas y negativas se cancelen. Al dividir por \(E\), ajustamos la discrepancia según la escala de la celda.
Las contribuciones se suman para formar chi-cuadrado. El estadístico es global y no negativo. No indica dirección ni importancia sustantiva.
Una celda puede contribuir mucho al estadístico, pero el signo de \(O-E\) o del residuo es necesario para saber si presenta exceso o déficit.
El valor \(p\) evalúa cuán compatibles son los datos con la independencia. Los residuos localizan las discrepancias. V de Cramer resume la magnitud global. Los perfiles aportan dirección sustantiva y las condiciones indican si la aproximación es razonable.
Estas piezas no son intercambiables: \(p\) informa evidencia; los residuos informan localización; V de Cramer informa magnitud; los perfiles informan dirección; las condiciones informan la calidad de la aproximación.
El recorrido guiado utilizará una tabla fija para mostrar cómo las hipótesis de independencia conducen a las frecuencias esperadas. Después se compararán \(O\) y \(E\), se construirán las contribuciones y se sumará el estadístico global. Finalmente, se incorporarán los grados de libertad, el valor \(p\), los residuos ajustados, V de Cramer y las condiciones necesarias para redactar una conclusión sociológica integrada.
Nota pedagógica: Compara frecuencias observadas y esperadas, contribuciones por celda, residuos ajustados y V de Cramer mientras modificas el patrón, el tamaño muestral y los márgenes.
Las frecuencias observadas corresponden a los datos efectivos. Las esperadas forman una referencia bajo independencia y preservan exactamente los márgenes de la tabla. Cuando los perfiles se separan, aumentan las discrepancias entre \(O\) y \(E\).
Chi-cuadrado y el valor \(p\) dependen del tamaño muestral. Si mantenemos las mismas proporciones y aumentamos \(N\), chi-cuadrado suele crecer y el valor \(p\) disminuir. Esto no significa que la asociación se haya vuelto más intensa. V de Cramer puede mantenerse aproximadamente estable porque resume el patrón proporcional.
Los residuos positivos indican más casos de los esperados; los negativos, menos. Chi-cuadrado no localiza esas celdas y V de Cramer no comunica dirección. Por eso, ambos deben leerse junto con residuos y perfiles.
Antes de concluir también debemos revisar la independencia de los casos y las frecuencias esperadas. Una asociación estadística continúa siendo una relación descriptiva e inferencial, no una demostración causal.
La hipótesis nula plantea que la estabilidad laboral y la seguridad económica son independientes. La alternativa plantea que existe asociación, sin especificar una dirección.
Las frecuencias esperadas se calculan a partir de los márgenes. La diferencia \(O-E\) muestra exceso o déficit. Cada celda produce una contribución no negativa y chi-cuadrado suma esas contribuciones para resumir la discrepancia global.
Los grados de libertad dependen del número de filas y columnas. El valor \(p\) se interpreta suponiendo independencia: indica cuán extremos serían resultados como el observado bajo ese modelo. No representa la probabilidad de que \(H_0\) sea verdadera.
Los residuos localizan excesos y déficits. V de Cramer resume la magnitud global, mientras que los perfiles muestran la dirección sociológica del patrón. Antes de concluir deben revisarse las condiciones de validez.
| Condición | Qué revisar | Implicación |
|---|---|---|
| Independencia de observaciones | Cada persona aparece una sola vez y no existe dependencia no modelada | Depende del diseño, no solo de la tabla |
| Categorías excluyentes | Cada persona ocupa una única celda | Evita dobles conteos |
| Frecuencias | La tabla contiene conteos, no porcentajes | Chi-cuadrado se calcula con frecuencias |
| Esperadas | Valor mínimo y cantidad de celdas pequeñas (Regla de Cochran) | Evalúa la calidad de la aproximación |
| Categorías poco frecuentes | Combinaciones con poca información | Requiere cautela o alternativas |
La independencia de las observaciones no puede comprobarse únicamente mirando la tabla. Depende de cómo fueron seleccionadas y registradas las personas. Las orientaciones sobre frecuencias esperadas sirven para evaluar la calidad de la aproximación. El número 5 no debe utilizarse como una frontera absoluta.
Advertencia metodológica (Regla de Cochran): El Chi-cuadrado pierde validez si existen celdas vacías o casi vacías. Ninguna celda debe tener una frecuencia esperada (\(E_{ij}\)) inferior a \(1\) y al menos el \(80\%\) de las celdas debe tener una frecuencia esperada igual o superior a \(5\). Si se viola esto en muestras pequeñas, aplique la Prueba Exacta de Fisher o recurra a simulaciones. No corresponde unir categorías de manera automática solo para superar una regla numérica. La decisión debe conservar una interpretación sustantiva defendible.
| Interpretación problemática | Corrección |
|---|---|
| “La hipótesis nula plantea que las celdas son iguales.” | Plantea independencia entre las variables, preservando los márgenes. |
| “Chi-cuadrado mide la fuerza de la asociación.” | Mide la discrepancia global y es sensible al tamaño muestral (\(N\)). |
| “Un valor \(p\) muy pequeño indica una asociación muy fuerte.” | Indica evidencia clara en contra de \(H_0\); no mide la magnitud. |
| “La esperada de cada celda debe ser un número entero.” | Es un promedio matemático teórico y suele tener decimales. |
| “Un residuo ajustado de 1,5 es significativamente grande.” | Se interpreta en relación con los límites críticos convencionales (\(|Z| > 1,96\)). |
| “V de Cramer puede tomar valores negativos.” | Es un coeficiente que varía estrictamente entre 0 y 1. |
| “Phi se prefiere en tablas grandes.” | Se reserva principalmente para tablas \(2 \times 2\). |
| “Multiplicar las frecuencias cambia la fuerza V.” | V de Cramer permanece estable; solo aumentan el estadístico \(\chi^2\) y la significancia. |
Supongamos la tabla observada del M13 con \(N = 240\) personas ocupadas:
| Empleo (Fila \(X\)) | Seguridad Baja | Seguridad Media | Seguridad Alta | Total (\(n_{i+}\)) |
|---|---|---|---|---|
| Inestable | 32 | 34 | 14 | 80 |
| Estable | 16 | 62 | 82 | 160 |
| Total (\(n_{+j}\)) | 48 | 96 | 96 | 240 |
Paso 1: Calcular frecuencias esperadas \(E_{ij}\) bajo independencia:
Paso 2: Calcular el estadístico Chi-cuadrado (\(\chi^2\)):
\[\chi^2 = 16,0 + 0,125 + 10,125 + 8,0 + 0,0625 + 5,0625 = 39,375\]
Con \(df = (2-1)(3-1) = 2\), el valor crítico al \(95\%\) de confianza es \(5,99\). Como \(39,375 > 5,99\), el valor \(p\) es menor a \(0,001\) y rechazamos la hipótesis de independencia.
Paso 3: Calcular residuos ajustados (\(R^{\text{aj}}_{ij}\)) para diagnosticar localmente:
Paso 4: Calcular la fuerza de la asociación (V de Cramer):
\[V = \sqrt{\frac{39,375}{240 \times \min(2-1, 3-1)}} = \sqrt{\frac{39,375}{240 \times 1}} = \sqrt{0,164} = 0,405\]
Conclusión: La relación es altamente significativa (\(p < 0,001\)) y de magnitud moderada-fuerte (\(V = 0,40\) en escala de 0 a 1).
\[ E_{ij} = \frac{n_{i+} n_{+j}}{N} \]
\[ \chi^2 = \sum_i\sum_j \frac{(O_{ij}-E_{ij})^2}{E_{ij}} \]
\[ gl = (r-1)(c-1) \]
\[ r_{ij} = \frac{O_{ij}-E_{ij}}{\sqrt{E_{ij}}} \]
\[ r_{ij}^{\text{aj}} = \frac{O_{ij}-E_{ij}}{\sqrt{E_{ij} \left(1-\frac{n_{i+}}{N}\right) \left(1-\frac{n_{+j}}{N}\right)}} \]
El residuo ajustado incorpora los márgenes de la tabla para aproximar adecuadamente una distribución normal estándar.
\[ \phi = \sqrt{\frac{\chi^2}{N}} \]
Se utiliza especialmente en tablas de contingencia \(2\times2\).
\[ V = \sqrt{\frac{\chi^2}{N\min(r-1,c-1)}} \]
\[ \text{Contribución}_{ij} = \frac{(O_{ij}-E_{ij})^2}{E_{ij}} \]
# Definir la tabla observada del ejemplo
observadas <- matrix(
c(
28, 32, 15,
22, 58, 65
),
nrow = 2,
byrow = TRUE,
dimnames = list(
Empleo = c("Inestable", "Estable"),
Seguridad = c("Baja", "Media", "Alta")
)
)
observadas
addmargins(observadas)
### Ejecutar la prueba
prueba <- chisq.test(observadas, correct = FALSE)
prueba
### Extraer resultados
chi2 <- unname(prueba$statistic)
gl <- unname(prueba$parameter)
p_valor <- prueba$p.value
esperadas <- prueba$expected
chi2
gl
p_valor
round(esperadas, 2)
### Revisar condiciones de Cochran
esperada_minima <- min(esperadas)
celdas_menores_5 <- sum(esperadas < 5)
proporcion_menores_5 <- mean(esperadas < 5)
esperada_minima
celdas_menores_5
proporcion_menores_5
### Contribuciones
contribuciones <- ((observadas - esperadas)^2) / esperadas
round(contribuciones, 3)
### Diferencia y residuos
diferencia <- observadas - esperadas
residuos_pearson <- prueba$residuals
residuos_ajustados <- prueba$stdres # stdres contiene los ajustados
round(diferencia, 2)
round(residuos_pearson, 2)
round(residuos_ajustados, 2)
### Phi y V de Cramer
N <- sum(observadas)
r <- nrow(observadas)
c <- ncol(observadas)
phi <- sqrt(chi2 / N)
V <- sqrt(chi2 / (N * min(r - 1, c - 1)))
phi
V
### Simulación de muestra grande (perfiles constantes)
observadas_grandes <- observadas * 10
prueba_grande <- chisq.test(observadas_grandes, correct = FALSE)
chi2_grande <- unname(prueba_grande$statistic)
p_grande <- prueba_grande$p.value
N_grande <- sum(observadas_grandes)
V_grande <- sqrt(chi2_grande / (N_grande * min(nrow(observadas_grandes) - 1, ncol(observadas_grandes) - 1)))
data.frame(
escenario = c("Original", "Frecuencias x 10"),
N = c(N, N_grande),
chi2 = c(chi2, chi2_grande),
p = c(p_valor, p_grande),
V = c(V, V_grande)
)
### Visualizar residuos ajustados en R base
image(
t(residuos_ajustados[nrow(residuos_ajustados):1, ]),
axes = FALSE,
zlim = c(-max(abs(residuos_ajustados)), max(abs(residuos_ajustados))),
main = "Residuos ajustados"
)
axis(1, at = seq(0, 1, length.out = ncol(residuos_ajustados)), labels = colnames(residuos_ajustados))
axis(2, at = seq(0, 1, length.out = nrow(residuos_ajustados)), labels = rev(rownames(residuos_ajustados)))
### Preparar resumen formateado para reporte
formatear_p <- function(p) {
if (p < 0.001) return("< 0,001")
sub("\\.", ",", sprintf("%.3f", p))
}
resultado_reporte <- data.frame(
N = N,
chi2 = round(chi2, 2),
gl = gl,
p = formatear_p(p_valor),
V = round(V, 2),
esperada_minima = round(esperada_minima, 2)
)
resultado_reporteimport numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import chi2_contingency
observadas = pd.DataFrame(
[
[28, 32, 15],
[22, 58, 65],
],
index=["Inestable", "Estable"],
columns=["Baja", "Media", "Alta"],
)
print(observadas)
### Ejecutar chi-cuadrado
chi2, p_valor, gl, esperadas_array = chi2_contingency(
observadas.to_numpy(), correction=False
)
esperadas = pd.DataFrame(
esperadas_array, index=observadas.index, columns=observadas.columns
)
print("Chi-cuadrado:", chi2)
print("Grados de libertad:", gl)
print("Valor p:", p_valor)
print(esperadas.round(2))
### Validar la tabla
def validar_tabla(tabla: pd.DataFrame) -> None:
if tabla.ndim != 2:
raise ValueError("La tabla debe tener dos dimensiones.")
if tabla.shape[0] < 2 or tabla.shape[1] < 2:
raise ValueError("Se requieren al menos dos filas y dos columnas.")
valores = tabla.to_numpy(dtype=float)
if not np.isfinite(valores).all():
raise ValueError("La tabla contiene valores no finitos.")
if (valores < 0).any():
raise ValueError("Las frecuencias no pueden ser negativas.")
if np.isclose(valores.sum(), 0):
raise ValueError("El total debe ser mayor que cero.")
validar_tabla(observadas)
### Revisar condiciones de Cochran
esperada_minima = esperadas.to_numpy().min()
celdas_menores_5 = (esperadas.to_numpy() < 5).sum()
proporcion_menores_5 = (esperadas.to_numpy() < 5).mean()
print("Esperada mínima:", esperada_minima)
print("Celdas con esperada menor que 5:", celdas_menores_5)
print("Proporción:", proporcion_menores_5)
### Contribuciones y residuos de Pearson
diferencia = observadas - esperadas
contribuciones = diferencia.pow(2) / esperadas
residuos_pearson = diferencia / np.sqrt(esperadas)
print("Diferencias:")
print(diferencia.round(2))
print("\nContribuciones:")
print(contribuciones.round(3))
print("\nResiduos de Pearson:")
print(residuos_pearson.round(2))
### Residuos ajustados (Z-scores)
N = observadas.to_numpy().sum()
proporcion_filas = observadas.sum(axis=1) / N
proporcion_columnas = observadas.sum(axis=0) / N
ajuste_filas = (1 - proporcion_filas).to_numpy()[:, None]
ajuste_columnas = (1 - proporcion_columnas).to_numpy()[None, :]
denominador_ajustado = np.sqrt(esperadas.to_numpy() * ajuste_filas * ajuste_columnas)
if np.isclose(denominador_ajustado, 0).any():
raise ZeroDivisionError("No es posible calcular los residuos ajustados.")
residuos_ajustados = pd.DataFrame(
diferencia.to_numpy() / denominador_ajustado,
index=observadas.index,
columns=observadas.columns,
)
print(residuos_ajustados.round(2))
### Phi y V de Cramer
filas, columnas = observadas.shape
phi = np.sqrt(chi2 / N)
denominador_v = N * min(filas - 1, columnas - 1)
V = np.sqrt(chi2 / denominador_v)
print("Phi:", phi)
print("V de Cramer:", V)
### Escalar la tabla manteniendo los perfiles
observadas_grandes = observadas * 10
chi2_grande, p_grande, gl_grande, _ = chi2_contingency(
observadas_grandes.to_numpy(), correction=False
)
N_grande = observadas_grandes.to_numpy().sum()
V_grande = np.sqrt(
chi2_grande / (N_grande * min(observadas_grandes.shape[0] - 1, observadas_grandes.shape[1] - 1))
)
comparacion = pd.DataFrame({
"escenario": ["Original", "Frecuencias x 10"],
"N": [N, N_grande],
"chi2": [chi2, chi2_grande],
"p": [p_valor, p_grande],
"V": [V, V_grande],
})
print(comparacion)
### Visualizar residuos ajustados
fig, ax = plt.subplots()
imagen = ax.imshow(residuos_ajustados.to_numpy())
ax.set_xticks(range(residuos_ajustados.shape[1]))
ax.set_yticks(range(residuos_ajustados.shape[0]))
ax.set_xticklabels(residuos_ajustados.columns)
ax.set_yticklabels(residuos_ajustados.index)
for i in range(residuos_ajustados.shape[0]):
for j in range(residuos_ajustados.shape[1]):
valor = residuos_ajustados.iloc[i, j]
etiqueta = "exceso" if valor > 0 else "déficit" if valor < 0 else "neutro"
ax.text(j, i, f"{valor:.2f}\n{etiqueta}", ha="center", va="center")
fig.colorbar(imagen, ax=ax, label="Residuo ajustado")
ax.set_title("Diagnóstico local de residuos")
plt.tight_layout()
plt.show()Los perfiles describen cómo se distribuye la seguridad económica dentro de cada tipo de empleo. La prueba chi-cuadrado compara las frecuencias observadas con las esperadas bajo independencia. La diferencia \(O-E\) muestra exceso o déficit; las contribuciones transforman esas discrepancias en una suma global. Los grados de libertad y el valor \(p\) permiten evaluar la evidencia bajo \(H_0\), pero no miden importancia. Las condiciones de validez deben revisarse siempre. Los residuos ajustados localizan las celdas responsables del patrón y V de Cramer resume su magnitud global sin indicar dirección. Phi se reserva especialmente para tablas \(2\times2\). Aumentar \(N\) mejora la detectabilidad, pero no hace automáticamente más intensa la asociación. Una conclusión responsable integra evidencia, magnitud, diagnóstico, perfiles y contexto, sin confundir asociación con causalidad.
Chi-cuadrado evalúa la evidencia global, los residuos localizan las discrepancias y V de Cramer resume la magnitud de la asociación.
---
pagetitle: "M14. Chi-cuadrado y magnitud de la asociación | Estadística Correlacional Interactiva"
page-layout: custom
toc: false
body-class: rs-lesson-page inferencia-module m14-page
format:
html:
css:
- ../assets/css/m01-datos-medicion.css
- ../assets/css/inferencia-modules.css
---
::: {.rs-lesson-page-wrap}
::: {.m01-module-intro}
::: {.inference-module-kicker .m01-module-kicker}
Unidad 2 · Asociación bivariada · Módulo 14
:::
# M14. Chi-cuadrado y magnitud de la asociación {.m01-title}
::: {.m01-module-lead .rs-module-lead}
En el M13 construimos tablas de contingencia, elegimos porcentajes según el denominador y comparamos perfiles entre grupos. Esas herramientas permiten describir diferencias, pero no indican por sí solas cuánta evidencia existe frente a la independencia ni qué tan marcada es la asociación. En este módulo utilizaremos las frecuencias esperadas como modelo de referencia, resumiremos la discrepancia global mediante chi-cuadrado y localizaremos excesos y déficits con residuos. Finalmente, V de Cramer permitirá discutir la magnitud. Evidencia, diagnóstico, dirección y relevancia responden preguntas diferentes y deben interpretarse de manera integrada.
:::
:::
::: {.rs-lesson-section #pregunta-social}
## Pregunta Social
::: {.m01-editorial-block}
### ¿Existe una asociación entre la estabilidad del empleo y la seguridad económica percibida? {.m01-social-question-title}
::: {.m01-social-question-intro}
En el módulo anterior analizamos cómo se distribuían los niveles de seguridad económica entre personas con empleos estables e inestables. Nuestra **unidad de análisis** continúa siendo la persona ocupada. La estabilidad laboral se registra mediante dos categorías —estable e inestable— y la seguridad económica percibida se resume como baja, media o alta.
La tabla tiene una estructura $2\times3$. Los porcentajes por fila permiten comparar los perfiles de seguridad dentro de cada tipo de empleo. Si las proporciones son semejantes, el patrón puede ser descriptivamente compatible con independencia. Si se separan, observamos una asociación descriptiva.
Sin embargo, una diferencia visible no responde todavía tres preguntas fundamentales:
1. ¿Cuánta evidencia aporta la tabla frente a la independencia?
2. ¿En qué celdas se concentran las principales discrepancias?
3. ¿Qué tan marcada es la asociación global?
Para avanzar necesitamos comparar las **frecuencias observadas** con las **frecuencias esperadas** bajo un modelo de independencia. Chi-cuadrado resume la discrepancia global. Los residuos muestran dónde existen excesos o déficits. V de Cramer resume la magnitud general del patrón.
La seguridad económica se presenta en tres categorías para facilitar el análisis categórico. Esta transformación reduce parte de la información contenida en el índice continuo. Además, ninguna de estas herramientas demuestra que la estabilidad laboral cause por sí sola la seguridad económica.
:::
::: {.rs-callout-note .rs-callout-note--m01-blue}
Los datos y resultados utilizados en las visualizaciones, cálculos y ejemplos son construidos con fines pedagógicos. No representan estimaciones de una población real.
:::
### La tabla observada
::: {.m01-table-wrap}
| Estabilidad laboral | Seguridad baja | Seguridad media | Seguridad alta | Total |
|---|---:|---:|---:|---:|
| **Inestable** | $O_{11}$ | $O_{12}$ | $O_{13}$ | $n_{1+}$ |
| **Estable** | $O_{21}$ | $O_{22}$ | $O_{23}$ | $n_{2+}$ |
| **Total** | $n_{+1}$ | $n_{+2}$ | $n_{+3}$ | $N$ |
: Tabla de contingencia con frecuencias observadas {.m01-table}
:::
Cada $O_{ij}$ representa una frecuencia observada: el número real de personas ubicado en una combinación de categorías. Los márgenes contienen los totales por fila, por columna y para la muestra completa.
Al calcular las frecuencias esperadas se mantienen esos márgenes. La tabla esperada no representa una muestra nueva ni datos imaginarios obtenidos en otro estudio. Es una referencia matemática construida con los mismos totales, suponiendo que las variables fueran independientes. La comparación se realiza celda por celda: $O_{ij}$ frente a $E_{ij}$.
### Dos patrones de referencia
::: {.m01-group-comparison-box}
::: {.m01-group-col}
[Escenario A · Perfiles semejantes]{.m01-group-badge .m01-badge-a}
Las personas con empleo estable e inestable presentan distribuciones parecidas de seguridad baja, media y alta. Las frecuencias observadas se aproximan a las esperadas bajo independencia.
Las diferencias $O-E$ son pequeñas, las contribuciones de las celdas son reducidas y los residuos se acercan a cero. Chi-cuadrado también es bajo y V de Cramer indica una asociación global limitada.
> Las diferencias observadas son pequeñas respecto del patrón que esperaríamos si ambas variables fueran independientes.
:::
::: {.m01-group-col}
[Escenario B · Perfiles diferentes]{.m01-group-badge .m01-badge-b}
El empleo inestable concentra una mayor proporción de seguridad baja, mientras que el empleo estable concentra una mayor proporción de seguridad alta. Algunas frecuencias observadas se alejan claramente de sus valores esperados.
Las contribuciones aumentan y los residuos permiten distinguir excesos y déficits. Chi-cuadrado resume una discrepancia global mayor y V de Cramer refleja una asociación más marcada.
> Algunas combinaciones presentan más o menos casos de los esperados bajo independencia y forman un patrón global de asociación.
:::
:::
> **Una diferencia porcentual debe evaluarse respecto de un modelo de independencia. Sin embargo, el valor $p$ no basta: una conclusión completa combina perfiles, evidencia global, residuos, magnitud, condiciones y contexto social.**
:::
:::
::: {.rs-lesson-section #idea-central}
## Idea Central
::: {.m01-sequence-flow .rs-sequence-flow role="list"}
::: {.m01-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="m01-flow-step-num rs-flow-step-num" aria-hidden="true">1</div>
```
### De los perfiles a lo esperado
La independencia funciona como un modelo de referencia. Las frecuencias esperadas mantienen los totales observados de las filas y columnas, pero distribuyen los casos como si la estabilidad laboral no aportara información sobre la seguridad económica.
Independencia no significa que todas las celdas deban contener el mismo número de personas. Si los grupos laborales o las categorías de seguridad tienen tamaños diferentes, sus esperadas también serán distintas.
> La frecuencia esperada no es una predicción sobre otra muestra: es la cantidad que correspondería a una celda si los márgenes se mantuvieran y las variables fueran independientes.
:::
::: {.m01-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="m01-flow-step-num rs-flow-step-num" aria-hidden="true">2</div>
```
### De las diferencias a chi-cuadrado
Cada celda contiene una observada $O$ y una esperada $E$. La diferencia $O-E$ indica si hay un exceso o un déficit de casos. Al elevarla al cuadrado evitamos que diferencias positivas y negativas se cancelen. Al dividir por $E$, ajustamos la discrepancia según la escala de la celda.
Las contribuciones se suman para formar chi-cuadrado. El estadístico es global y no negativo. No indica dirección ni importancia sustantiva.
> Una celda puede contribuir mucho al estadístico, pero el signo de $O-E$ o del residuo es necesario para saber si presenta exceso o déficit.
:::
::: {.m01-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="m01-flow-step-num rs-flow-step-num" aria-hidden="true">3</div>
```
### De la evidencia al diagnóstico y la magnitud
El valor $p$ evalúa cuán compatibles son los datos con la independencia. Los residuos localizan las discrepancias. V de Cramer resume la magnitud global. Los perfiles aportan dirección sustantiva y las condiciones indican si la aproximación es razonable.
Estas piezas no son intercambiables: $p$ informa evidencia; los residuos informan localización; V de Cramer informa magnitud; los perfiles informan dirección; las condiciones informan la calidad de la aproximación.
:::
:::
:::
::: {.rs-lesson-section #recorrido-guiado}
## ¿Cómo se construye chi-cuadrado?
El recorrido guiado utilizará una tabla fija para mostrar cómo las hipótesis de independencia conducen a las frecuencias esperadas. Después se compararán $O$ y $E$, se construirán las contribuciones y se sumará el estadístico global. Finalmente, se incorporarán los grados de libertad, el valor $p$, los residuos ajustados, V de Cramer y las condiciones necesarias para redactar una conclusión sociológica integrada.
::: {.column-screen-inset}
```{=html}
<div id="m14-chi-square-tour">
<!-- El contenido es generado por m14-chi-cuadrado-magnitud.js -->
</div>
```
:::
:::
::: {.rs-lesson-section #laboratorios-interactivos}
## Laboratorio interactivo
::: {.rs-callout-note .rs-callout-note--m01-blue}
**Nota pedagógica:**
Compara frecuencias observadas y esperadas, contribuciones por celda, residuos ajustados y V de Cramer mientras modificas el patrón, el tamaño muestral y los márgenes.
:::
::: {.column-screen-inset}
```{=html}
<div id="m14-chi-square-lab">
<!-- El contenido es generado por m14-chi-cuadrado-magnitud.js -->
</div>
```
:::
:::
::: {.rs-lesson-section #despues-del-laboratorio}
## Después de explorar
Las frecuencias observadas corresponden a los datos efectivos. Las esperadas forman una referencia bajo independencia y preservan exactamente los márgenes de la tabla. Cuando los perfiles se separan, aumentan las discrepancias entre $O$ y $E$.
Chi-cuadrado y el valor $p$ dependen del tamaño muestral. Si mantenemos las mismas proporciones y aumentamos $N$, chi-cuadrado suele crecer y el valor $p$ disminuir. Esto no significa que la asociación se haya vuelto más intensa. V de Cramer puede mantenerse aproximadamente estable porque resume el patrón proporcional.
Los residuos positivos indican más casos de los esperados; los negativos, menos. Chi-cuadrado no localiza esas celdas y V de Cramer no comunica dirección. Por eso, ambos deben leerse junto con residuos y perfiles.
Antes de concluir también debemos revisar la independencia de los casos y las frecuencias esperadas. Una asociación estadística continúa siendo una relación descriptiva e inferencial, no una demostración causal.
:::
```{=html}
<script src="../assets/js/m14-chi-cuadrado-magnitud.js" defer></script>
```
::: {.rs-lesson-section #interpretacion}
## Del modelo de independencia a la conclusión
La hipótesis nula plantea que la estabilidad laboral y la seguridad económica son independientes. La alternativa plantea que existe asociación, sin especificar una dirección.
Las frecuencias esperadas se calculan a partir de los márgenes. La diferencia $O-E$ muestra exceso o déficit. Cada celda produce una contribución no negativa y chi-cuadrado suma esas contribuciones para resumir la discrepancia global.
Los grados de libertad dependen del número de filas y columnas. El valor $p$ se interpreta suponiendo independencia: indica cuán extremos serían resultados como el observado bajo ese modelo. No representa la probabilidad de que $H_0$ sea verdadera.
Los residuos localizan excesos y déficits. V de Cramer resume la magnitud global, mientras que los perfiles muestran la dirección sociológica del patrón. Antes de concluir deben revisarse las condiciones de validez.
### Condiciones de aplicación
::: {.m01-table-wrap}
| Condición | Qué revisar | Implicación |
|---|---|---|
| **Independencia de observaciones** | Cada persona aparece una sola vez y no existe dependencia no modelada | Depende del diseño, no solo de la tabla |
| **Categorías excluyentes** | Cada persona ocupa una única celda | Evita dobles conteos |
| **Frecuencias** | La tabla contiene conteos, no porcentajes | Chi-cuadrado se calcula con frecuencias |
| **Esperadas** | Valor mínimo y cantidad de celdas pequeñas (Regla de Cochran) | Evalúa la calidad de la aproximación |
| **Categorías poco frecuentes** | Combinaciones con poca información | Requiere cautela o alternativas |
: Condiciones de aplicación de Chi-cuadrado {.m01-table}
:::
La independencia de las observaciones no puede comprobarse únicamente mirando la tabla. Depende de cómo fueron seleccionadas y registradas las personas. Las orientaciones sobre frecuencias esperadas sirven para evaluar la calidad de la aproximación. El número 5 no debe utilizarse como una frontera absoluta.
::: {.callout-warning}
**Advertencia metodológica (Regla de Cochran):** El Chi-cuadrado pierde validez si existen celdas vacías o casi vacías. Ninguna celda debe tener una frecuencia esperada ($E_{ij}$) inferior a $1$ y al menos el $80\%$ de las celdas debe tener una frecuencia esperada igual o superior a $5$. Si se viola esto en muestras pequeñas, aplique la **Prueba Exacta de Fisher** o recurra a simulaciones. No corresponde unir categorías de manera automática solo para superar una regla numérica. La decisión debe conservar una interpretación sustantiva defendible.
:::
### Evita estas interpretaciones
::: {.m01-table-wrap}
| Interpretación problemática | Corrección |
|---|---|
| “La hipótesis nula plantea que las celdas son iguales.” | Plantea independencia entre las variables, preservando los márgenes. |
| “Chi-cuadrado mide la fuerza de la asociación.” | Mide la discrepancia global y es sensible al tamaño muestral ($N$). |
| “Un valor $p$ muy pequeño indica una asociación muy fuerte.” | Indica evidencia clara en contra de $H_0$; no mide la magnitud. |
| “La esperada de cada celda debe ser un número entero.” | Es un promedio matemático teórico y suele tener decimales. |
| “Un residuo ajustado de 1,5 es significativamente grande.” | Se interpreta en relación con los límites críticos convencionales ($|Z| > 1,96$). |
| “V de Cramer puede tomar valores negativos.” | Es un coeficiente que varía estrictamente entre 0 y 1. |
| “Phi se prefiere en tablas grandes.” | Se reserva principalmente para tablas $2 \times 2$. |
| “Multiplicar las frecuencias cambia la fuerza V.” | V de Cramer permanece estable; solo aumentan el estadístico $\chi^2$ y la significancia. |
: Interpretaciones problemáticas en inferencia categórica {.m01-table}
:::
:::
::: {.rs-lesson-section .rs-example-section #ejemplo-aplicado}
<details class="rs-example-disclosure">
<summary class="rs-example-disclosure__summary">
<span class="rs-example-disclosure__heading" role="heading" aria-level="2">Ejemplo aplicado: cálculo de discrepancias globales y locales</span>
<span class="rs-example-disclosure__action">
<span class="rs-example-disclosure__show">Ver ejemplo</span>
<span class="rs-example-disclosure__hide">Ocultar ejemplo</span>
<span class="rs-example-disclosure__chevron" aria-hidden="true">↓</span>
</span>
</summary>
::: {.rs-example-disclosure__content}
Supongamos la tabla observada del M13 con $N = 240$ personas ocupadas:
::: {.m01-table-wrap}
| Empleo (Fila $X$) | Seguridad Baja | Seguridad Media | Seguridad Alta | Total ($n_{i+}$) |
|---|---:|---:|---:|---:|
| **Inestable** | 32 | 34 | 14 | **80** |
| **Estable** | 16 | 62 | 82 | **160** |
| **Total ($n_{+j}$)** | **48** | **96** | **96** | **240** |
: Frecuencias observadas de la muestra {.m01-table}
:::
**Paso 1: Calcular frecuencias esperadas $E_{ij}$ bajo independencia:**
- $E_{11} = (80 \times 48) / 240 = 16,0$
- $E_{12} = (80 \times 96) / 240 = 32,0$
- $E_{13} = (80 \times 96) / 240 = 32,0$
- $E_{21} = (160 \times 48) / 240 = 32,0$
- $E_{22} = (160 \times 96) / 240 = 64,0$
- $E_{23} = (160 \times 96) / 240 = 64,0$
**Paso 2: Calcular el estadístico Chi-cuadrado ($\chi^2$):**
- Celda (1,1): $(32-16)^2 / 16 = 16,0$
- Celda (1,2): $(34-32)^2 / 32 = 0,125$
- Celda (1,3): $(14-32)^2 / 32 = 10,125$
- Celda (2,1): $(16-32)^2 / 32 = 8,0$
- Celda (2,2): $(62-64)^2 / 64 = 0,0625$
- Celda (2,3): $(82-64)^2 / 64 = 5,0625$
$$\chi^2 = 16,0 + 0,125 + 10,125 + 8,0 + 0,0625 + 5,0625 = 39,375$$
Con $df = (2-1)(3-1) = 2$, el valor crítico al $95\%$ de confianza es $5,99$. Como $39,375 > 5,99$, el valor $p$ es menor a $0,001$ y rechazamos la hipótesis de independencia.
**Paso 3: Calcular residuos ajustados ($R^{\text{aj}}_{ij}$) para diagnosticar localmente:**
- Celda Inestable / Seguridad Baja: $Z = +5,16$ (Atracción fuerte: hay significativamente más personas inestables con seguridad baja de lo esperado por azar).
- Celda Inestable / Seguridad Alta: $Z = -4,35$ (Exclusión fuerte: hay significativamente menos personas inestables con seguridad alta de lo esperado).
**Paso 4: Calcular la fuerza de la asociación (V de Cramer):**
$$V = \sqrt{\frac{39,375}{240 \times \min(2-1, 3-1)}} = \sqrt{\frac{39,375}{240 \times 1}} = \sqrt{0,164} = 0,405$$
*Conclusión:* La relación es altamente significativa ($p < 0,001$) y de magnitud moderada-fuerte ($V = 0,40$ en escala de 0 a 1).
:::
</details>
:::
::: {.inference-endmatter}
<details class="inference-endmatter__item inference-endmatter__formulas">
<summary><span>Fórmulas mínimas y complementarias</span></summary>
::: {.inference-endmatter__content}
::: {.m01-formula-card}
#### Fórmulas de Chi-cuadrado y Magnitud de la Asociación
##### Frecuencia Esperada ($E_{ij}$)
$$
E_{ij} = \frac{n_{i+} n_{+j}}{N}
$$
##### Estadístico Chi-cuadrado ($\chi^2$)
$$
\chi^2 = \sum_i\sum_j \frac{(O_{ij}-E_{ij})^2}{E_{ij}}
$$
$$
gl = (r-1)(c-1)
$$
##### Residuo de Pearson (no ajustado)
$$
r_{ij} = \frac{O_{ij}-E_{ij}}{\sqrt{E_{ij}}}
$$
##### Residuo ajustado (Z-score)
$$
r_{ij}^{\text{aj}} = \frac{O_{ij}-E_{ij}}{\sqrt{E_{ij} \left(1-\frac{n_{i+}}{N}\right) \left(1-\frac{n_{+j}}{N}\right)}}
$$
El residuo ajustado incorpora los márgenes de la tabla para aproximar adecuadamente una distribución normal estándar.
##### Coeficiente Phi ($\phi$)
$$
\phi = \sqrt{\frac{\chi^2}{N}}
$$
Se utiliza especialmente en tablas de contingencia $2\times2$.
##### Coeficiente V de Cramer ($V$)
$$
V = \sqrt{\frac{\chi^2}{N\min(r-1,c-1)}}
$$
##### Contribución de celda al estadístico
$$
\text{Contribución}_{ij} = \frac{(O_{ij}-E_{ij})^2}{E_{ij}}
$$
:::
:::
</details>
<details class="inference-endmatter__item inference-endmatter__code">
<summary><span>Código en R y Python</span></summary>
::: {.inference-endmatter__content}
::: {.panel-tabset .rs-code-tabs}
### R {.unnumbered .unlisted}
```r
# Definir la tabla observada del ejemplo
observadas <- matrix(
c(
28, 32, 15,
22, 58, 65
),
nrow = 2,
byrow = TRUE,
dimnames = list(
Empleo = c("Inestable", "Estable"),
Seguridad = c("Baja", "Media", "Alta")
)
)
observadas
addmargins(observadas)
### Ejecutar la prueba
prueba <- chisq.test(observadas, correct = FALSE)
prueba
### Extraer resultados
chi2 <- unname(prueba$statistic)
gl <- unname(prueba$parameter)
p_valor <- prueba$p.value
esperadas <- prueba$expected
chi2
gl
p_valor
round(esperadas, 2)
### Revisar condiciones de Cochran
esperada_minima <- min(esperadas)
celdas_menores_5 <- sum(esperadas < 5)
proporcion_menores_5 <- mean(esperadas < 5)
esperada_minima
celdas_menores_5
proporcion_menores_5
### Contribuciones
contribuciones <- ((observadas - esperadas)^2) / esperadas
round(contribuciones, 3)
### Diferencia y residuos
diferencia <- observadas - esperadas
residuos_pearson <- prueba$residuals
residuos_ajustados <- prueba$stdres # stdres contiene los ajustados
round(diferencia, 2)
round(residuos_pearson, 2)
round(residuos_ajustados, 2)
### Phi y V de Cramer
N <- sum(observadas)
r <- nrow(observadas)
c <- ncol(observadas)
phi <- sqrt(chi2 / N)
V <- sqrt(chi2 / (N * min(r - 1, c - 1)))
phi
V
### Simulación de muestra grande (perfiles constantes)
observadas_grandes <- observadas * 10
prueba_grande <- chisq.test(observadas_grandes, correct = FALSE)
chi2_grande <- unname(prueba_grande$statistic)
p_grande <- prueba_grande$p.value
N_grande <- sum(observadas_grandes)
V_grande <- sqrt(chi2_grande / (N_grande * min(nrow(observadas_grandes) - 1, ncol(observadas_grandes) - 1)))
data.frame(
escenario = c("Original", "Frecuencias x 10"),
N = c(N, N_grande),
chi2 = c(chi2, chi2_grande),
p = c(p_valor, p_grande),
V = c(V, V_grande)
)
### Visualizar residuos ajustados en R base
image(
t(residuos_ajustados[nrow(residuos_ajustados):1, ]),
axes = FALSE,
zlim = c(-max(abs(residuos_ajustados)), max(abs(residuos_ajustados))),
main = "Residuos ajustados"
)
axis(1, at = seq(0, 1, length.out = ncol(residuos_ajustados)), labels = colnames(residuos_ajustados))
axis(2, at = seq(0, 1, length.out = nrow(residuos_ajustados)), labels = rev(rownames(residuos_ajustados)))
### Preparar resumen formateado para reporte
formatear_p <- function(p) {
if (p < 0.001) return("< 0,001")
sub("\\.", ",", sprintf("%.3f", p))
}
resultado_reporte <- data.frame(
N = N,
chi2 = round(chi2, 2),
gl = gl,
p = formatear_p(p_valor),
V = round(V, 2),
esperada_minima = round(esperada_minima, 2)
)
resultado_reporte
```
### Python {.unnumbered .unlisted}
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import chi2_contingency
observadas = pd.DataFrame(
[
[28, 32, 15],
[22, 58, 65],
],
index=["Inestable", "Estable"],
columns=["Baja", "Media", "Alta"],
)
print(observadas)
### Ejecutar chi-cuadrado
chi2, p_valor, gl, esperadas_array = chi2_contingency(
observadas.to_numpy(), correction=False
)
esperadas = pd.DataFrame(
esperadas_array, index=observadas.index, columns=observadas.columns
)
print("Chi-cuadrado:", chi2)
print("Grados de libertad:", gl)
print("Valor p:", p_valor)
print(esperadas.round(2))
### Validar la tabla
def validar_tabla(tabla: pd.DataFrame) -> None:
if tabla.ndim != 2:
raise ValueError("La tabla debe tener dos dimensiones.")
if tabla.shape[0] < 2 or tabla.shape[1] < 2:
raise ValueError("Se requieren al menos dos filas y dos columnas.")
valores = tabla.to_numpy(dtype=float)
if not np.isfinite(valores).all():
raise ValueError("La tabla contiene valores no finitos.")
if (valores < 0).any():
raise ValueError("Las frecuencias no pueden ser negativas.")
if np.isclose(valores.sum(), 0):
raise ValueError("El total debe ser mayor que cero.")
validar_tabla(observadas)
### Revisar condiciones de Cochran
esperada_minima = esperadas.to_numpy().min()
celdas_menores_5 = (esperadas.to_numpy() < 5).sum()
proporcion_menores_5 = (esperadas.to_numpy() < 5).mean()
print("Esperada mínima:", esperada_minima)
print("Celdas con esperada menor que 5:", celdas_menores_5)
print("Proporción:", proporcion_menores_5)
### Contribuciones y residuos de Pearson
diferencia = observadas - esperadas
contribuciones = diferencia.pow(2) / esperadas
residuos_pearson = diferencia / np.sqrt(esperadas)
print("Diferencias:")
print(diferencia.round(2))
print("\nContribuciones:")
print(contribuciones.round(3))
print("\nResiduos de Pearson:")
print(residuos_pearson.round(2))
### Residuos ajustados (Z-scores)
N = observadas.to_numpy().sum()
proporcion_filas = observadas.sum(axis=1) / N
proporcion_columnas = observadas.sum(axis=0) / N
ajuste_filas = (1 - proporcion_filas).to_numpy()[:, None]
ajuste_columnas = (1 - proporcion_columnas).to_numpy()[None, :]
denominador_ajustado = np.sqrt(esperadas.to_numpy() * ajuste_filas * ajuste_columnas)
if np.isclose(denominador_ajustado, 0).any():
raise ZeroDivisionError("No es posible calcular los residuos ajustados.")
residuos_ajustados = pd.DataFrame(
diferencia.to_numpy() / denominador_ajustado,
index=observadas.index,
columns=observadas.columns,
)
print(residuos_ajustados.round(2))
### Phi y V de Cramer
filas, columnas = observadas.shape
phi = np.sqrt(chi2 / N)
denominador_v = N * min(filas - 1, columnas - 1)
V = np.sqrt(chi2 / denominador_v)
print("Phi:", phi)
print("V de Cramer:", V)
### Escalar la tabla manteniendo los perfiles
observadas_grandes = observadas * 10
chi2_grande, p_grande, gl_grande, _ = chi2_contingency(
observadas_grandes.to_numpy(), correction=False
)
N_grande = observadas_grandes.to_numpy().sum()
V_grande = np.sqrt(
chi2_grande / (N_grande * min(observadas_grandes.shape[0] - 1, observadas_grandes.shape[1] - 1))
)
comparacion = pd.DataFrame({
"escenario": ["Original", "Frecuencias x 10"],
"N": [N, N_grande],
"chi2": [chi2, chi2_grande],
"p": [p_valor, p_grande],
"V": [V, V_grande],
})
print(comparacion)
### Visualizar residuos ajustados
fig, ax = plt.subplots()
imagen = ax.imshow(residuos_ajustados.to_numpy())
ax.set_xticks(range(residuos_ajustados.shape[1]))
ax.set_yticks(range(residuos_ajustados.shape[0]))
ax.set_xticklabels(residuos_ajustados.columns)
ax.set_yticklabels(residuos_ajustados.index)
for i in range(residuos_ajustados.shape[0]):
for j in range(residuos_ajustados.shape[1]):
valor = residuos_ajustados.iloc[i, j]
etiqueta = "exceso" if valor > 0 else "déficit" if valor < 0 else "neutro"
ax.text(j, i, f"{valor:.2f}\n{etiqueta}", ha="center", va="center")
fig.colorbar(imagen, ax=ax, label="Residuo ajustado")
ax.set_title("Diagnóstico local de residuos")
plt.tight_layout()
plt.show()
```
:::
:::
</details>
<details class="inference-endmatter__item inference-endmatter__report">
<summary><span>Cómo Reportarlo</span></summary>
::: {.inference-endmatter__content}
#### Plantillas de Comunicación
- **Técnico:** *La prueba de independencia de Chi-cuadrado evidenció una asociación estadísticamente significativa entre estabilidad laboral y seguridad económica ($\chi^2 = 39,38, df = 2, p < 0,001$). El análisis de residuos ajustados reportó una sobre-representación significativa de personas inestables en el tramo de baja seguridad ($Z = +5,16$). Complementando con el coeficiente $V$ de Cramer, se observó un tamaño de efecto moderado-fuerte ($V = 0,41, N = 240$).*
- **Simple:** *La distribución de la seguridad económica no es una cuestión de azar; las personas con empleo estable presentan de forma consistente y significativa niveles de seguridad económica más altos, lo que representa una asociación sustancial en la muestra.*
- **Sociológico:** *Los resultados de la prueba de Chi-cuadrado corroboran una fuerte asociación entre la estabilidad laboral y la seguridad económica percibida ($\chi^2 = 39,38, p < 0,001$). Tras corregir el efecto del tamaño de la muestra mediante la $V$ de Cramer ($V = 0,41$), confirmamos una relación estructurante de magnitud considerable, impulsada por un marcado exceso de situaciones de precariedad (seguridad baja) en el segmento de empleo inestable ($Z = +5,16$) y una clara exclusión del mismo respecto al nivel de seguridad alto ($Z = -4,35$).*
:::
</details>
<details class="inference-endmatter__item inference-endmatter__references">
<summary><span>Bibliografía</span></summary>
::: {.inference-endmatter__content}
- **Ritchey, Ferris J. (2008).** *Estadística para las ciencias sociales*. McGraw-Hill. (Cap. 14: La prueba de Chi-cuadrado y residuos).
- **Pardo, Antonio; Ruiz, Miguel Ángel; y San Martín, Rafael. (2009).** *Análisis de datos en ciencias sociales y de la salud I*. Síntesis. (Cap. 12: Contraste $\chi^2$, residuos tipificados y coeficientes de asociación).
- **Agresti, Alan; Franklin, Christine; y Klingenberg, Bernhard. (2023).** *Statistics: The art and science of learning from data*. Pearson. (Cap. 11: The Chi-Square test of independence).
- **Cohen, Jacob. (1988).** *Statistical power analysis for the behavioral sciences*. Lawrence Erlbaum Associates. (Cap. 7: Chi-square tests, Phi and Cramer's $V$).
:::
</details>
:::
::: {.rs-lesson-section #lo-esencial}
## Lo esencial
Los perfiles describen cómo se distribuye la seguridad económica dentro de cada tipo de empleo. La prueba chi-cuadrado compara las frecuencias observadas con las esperadas bajo independencia. La diferencia $O-E$ muestra exceso o déficit; las contribuciones transforman esas discrepancias en una suma global. Los grados de libertad y el valor $p$ permiten evaluar la evidencia bajo $H_0$, pero no miden importancia. Las condiciones de validez deben revisarse siempre. Los residuos ajustados localizan las celdas responsables del patrón y V de Cramer resume su magnitud global sin indicar dirección. Phi se reserva especialmente para tablas $2\times2$. Aumentar $N$ mejora la detectabilidad, pero no hace automáticamente más intensa la asociación. Una conclusión responsable integra evidencia, magnitud, diagnóstico, perfiles y contexto, sin confundir asociación con causalidad.
> **Chi-cuadrado evalúa la evidencia global, los residuos localizan las discrepancias y V de Cramer resume la magnitud de la asociación.**
:::
```{=html}
<nav class="rs-lesson-footer-nav rs-inference-footer-nav" aria-label="Navegación entre módulos">
<a href="m13_variables_categoricas_tablas_contingencia.qmd" class="rs-nav-link rs-nav-link--previous">
<span class="rs-nav-link__arrow" aria-hidden="true">←</span>
<span class="rs-nav-link__copy">
<span class="rs-nav-link__label">Módulo anterior</span>
<span class="rs-nav-link__title">M13. Variables categóricas y tablas de contingencia</span>
</span>
</a>
<a href="../index.qmd" class="rs-nav-link rs-nav-link--next">
<span class="rs-nav-link__copy">
<span class="rs-nav-link__label">Volver al inicio</span>
<span class="rs-nav-link__title">Estadística Correlacional Interactiva</span>
</span>
<span class="rs-nav-link__arrow" aria-hidden="true">→</span>
</a>
</nav>
```
:::