Las medidas de asociación en tablas de contingencia bidimensionales permiten resumir, mediante un único indicador numérico, el grado y el sentido de la relación entre dos variables categóricas. Cuando las variables son dicotómicas y la tabla es de tamaño \(2 \times 2\), pueden utilizarse medidas como la diferencia de proporciones, el riesgo relativo o la razón de momios. Sin embargo, cuando se trabaja con tablas \(I \times J\), estas medidas ya no resultan suficientes para describir la asociación de forma sintética.
En este contexto, la elección de la medida adecuada depende de dos elementos fundamentales:
Al finalizar la clase, serás capaz de:
R medidas como la Gamma de Goodman
y Kruskal, el Tau-b de Kendall, el Tau
de Goodman y Kruskal, el Coeficiente de
Incertidumbre y el Kappa de Cohen;# Instalar solo si es necesario
# install.packages(c("DescTools", "irr", "knitr", "dplyr"))
library(DescTools)
library(irr)
library(knitr)
library(dplyr)
Una tabla de contingencia bidimensional resume las frecuencias conjuntas de dos variables categóricas. Si una variable tiene \(I\) categorías y la otra \(J\), la tabla tendrá dimensión \(I \times J\).
Sea \(n_{ij}\) la frecuencia observada en la celda \((i,j)\), con:
\[ n = \sum_{i=1}^{I}\sum_{j=1}^{J} n_{ij} \]
La probabilidad conjunta se define como:
\[ p_{ij} = \frac{n_{ij}}{n} \]
Las distribuciones marginales son:
\[ p_{i\cdot} = \sum_{j=1}^{J} p_{ij}, \qquad p_{\cdot j} = \sum_{i=1}^{I} p_{ij} \]
Las medidas de asociación buscan responder preguntas como las siguientes:
Cuando ambas variables poseen un orden natural en sus categorías, la asociación puede evaluarse a partir del concepto de concordancia y discordancia entre pares de observaciones.
Al comparar dos observaciones:
Sea:
Si \(C > D\), la relación tiende a ser monótona positiva. Si \(D > C\), la relación tiende a ser monótona negativa.
Ejemplo
Supóngase una tabla que relaciona la edad del trabajador con su grado de satisfacción laboral.
tabla_ordinal <- matrix(
c(18, 12, 6,
10, 20, 14,
5, 16, 24),
nrow = 3,
byrow = TRUE,
dimnames = list(
Edad = c("Joven", "Adulta", "Mayor"),
Satisfaccion = c("Baja", "Media", "Alta")
)
)
tabla_ordinal
## Satisfaccion
## Edad Baja Media Alta
## Joven 18 12 6
## Adulta 10 20 14
## Mayor 5 16 24
kable(tabla_ordinal, caption = "Tabla ordinal: edad y satisfacción laboral")
| Baja | Media | Alta | |
|---|---|---|---|
| Joven | 18 | 12 | 6 |
| Adulta | 10 | 20 | 14 |
| Mayor | 5 | 16 | 24 |
En esta tabla, ambas variables son ordinales. A simple vista, las frecuencias más altas tienden a desplazarse hacia la diagonal principal y hacia la esquina superior derecha, lo que sugiere una asociación positiva: a mayor edad, mayor nivel de satisfacción.
Cálculo de pares concordantes y discordantes
El siguiente bloque muestra una función auxiliar para calcular \(C\) y \(D\) directamente desde una tabla de contingencia ordinal.
pares_cd <- function(tab) {
tab <- as.matrix(tab)
nr <- nrow(tab)
nc <- ncol(tab)
C <- 0
D <- 0
for (i in 1:nr) {
for (j in 1:nc) {
if (tab[i, j] == 0) next
# pares concordantes: celdas abajo y a la derecha
if (i < nr && j < nc) {
C <- C + tab[i, j] * sum(tab[(i + 1):nr, (j + 1):nc, drop = FALSE])
}
# pares discordantes: celdas abajo y a la izquierda
if (i < nr && j > 1) {
D <- D + tab[i, j] * sum(tab[(i + 1):nr, 1:(j - 1), drop = FALSE])
}
}
}
data.frame(
concordantes = C,
discordantes = D
)
}
pares_cd(tabla_ordinal)
## concordantes discordantes
## 1 2668 880
Interpretación
La Gamma de Goodman y Kruskal resume la asociación ordinal ignorando los empates:
\[ \gamma = \frac{C - D}{C + D} \]
Rango e interpretación
\[ \gamma \in [-1, 1] \]
Rcd <- pares_cd(tabla_ordinal)
C <- cd$concordantes
D <- cd$discordantes
gamma_manual <- (C - D) / (C + D)
gamma_manual
## [1] 0.5039459
GoodmanKruskalGamma(tabla_ordinal)
## [1] 0.5039459
Interpretación
El valor positivo de la Gamma indica que, en general, las categorías más altas de edad tienden a asociarse con categorías más altas de satisfacción laboral. Cuanto más cercano a 1 sea el coeficiente, más intensa será la asociación monotónica positiva.
Nota
La Gamma es especialmente útil cuando interesa resumir la dirección de la asociación ordinal y cuando los empates no constituyen el foco principal del análisis. No obstante, si la tabla presenta muchos empates, esta medida puede sobreestimar la intensidad de la asociación.
El Tau-b de Kendall incorpora el efecto de los empates, por lo que suele ser una medida más conservadora que la Gamma.
Su forma general es:
\[ \tau_b = \frac{C - D}{\sqrt{(C + D + T_x)(C + D + T_y)}} \]
donde:
Rango e interpretación
\[ \tau_b \in [-1, 1] \]
RKendallTauB(tabla_ordinal)
## [1] 0.3461113
Interpretación
Si el Tau-b resulta positivo, se concluye que las categorías más altas de una variable tienden a asociarse con categorías más altas de la otra. Cuando su magnitud es menor que la Gamma, ello suele deberse a que el Tau-b penaliza la presencia de empates.
| Medida | Tipo de variable | Considera empates | Rango | Uso principal |
|---|---|---|---|---|
| Gamma de Goodman y Kruskal | Ordinal | No | [-1, 1] | Asociación monotónica cuando no interesa penalizar empates |
| Tau-b de Kendall | Ordinal | Sí | [-1, 1] | Asociación monotónica en tablas con posibles empates |
Cuando las variables son nominales, las categorías no poseen un orden natural. En consecuencia, ya no tiene sentido hablar de pares concordantes o discordantes. En este caso, el interés se desplaza hacia ideas como:
Ejemplo
Se construye una tabla hipotética que relaciona el canal principal de búsqueda de empleo con el área de residencia.
tabla_nominal <- matrix(
c(45, 18,
25, 30,
34, 12,
16, 20),
nrow = 4,
byrow = TRUE,
dimnames = list(
Canal = c("Familiares", "Redes sociales", "Portal web", "Oficina de empleo"),
Area = c("Urbana", "Rural")
)
)
tabla_nominal
## Area
## Canal Urbana Rural
## Familiares 45 18
## Redes sociales 25 30
## Portal web 34 12
## Oficina de empleo 16 20
kable(tabla_nominal, caption = "Tabla nominal: canal de búsqueda de empleo y área de residencia")
| Urbana | Rural | |
|---|---|---|
| Familiares | 45 | 18 |
| Redes sociales | 25 | 30 |
| Portal web | 34 | 12 |
| Oficina de empleo | 16 | 20 |
El Tau de Goodman y Kruskal es una medida de reducción proporcional del error de predicción. Evalúa cuánto mejora la predicción de una variable al conocer la otra.
Idea general
Rango e interpretación
\[ \tau \in [0, 1] \]
Importante
Esta medida es direccional. Esto significa que, en general:
\[ \tau(Y|X) \neq \tau(X|Y) \]
RGoodmanKruskalTau(tabla_nominal, direction = "row")
## [1] 0.02649186
GoodmanKruskalTau(tabla_nominal, direction = "column")
## [1] 0.07808415
Interpretación
direction = "row" resume cuánto mejora la predicción de
la variable ubicada en las filas al conocer la variable en
columnas.direction = "column" resume el proceso inverso.Por ello, en el informe de resultados siempre debe explicitarse qué variable se intenta predecir.
El Coeficiente de Incertidumbre se basa en la idea de entropía y cuantifica la reducción relativa de incertidumbre sobre una variable al conocer la otra.
Rango e interpretación
\[ U \in [0, 1] \]
Al igual que el Tau de Goodman y Kruskal, esta medida puede ser direccional.
RUncertCoef(tabla_nominal)
## [1] 0.03866792
UncertCoef(tabla_nominal, direction = "row")
## [1] 0.02886241
UncertCoef(tabla_nominal, direction = "column")
## [1] 0.05856405
Interpretación
Si el coeficiente es pequeño, la variable explicativa aporta poca información adicional para anticipar la categoría de la variable respuesta. Si el coeficiente crece, la incertidumbre disminuye y, por tanto, la asociación nominal resulta más informativa.
| Medida | Tipo de variable | Rango | ¿Es direccional? | Idea principal |
|---|---|---|---|---|
| Tau de Goodman y Kruskal | Nominal | [0, 1] | Sí | Reducción proporcional del error de predicción |
| Coeficiente de Incertidumbre | Nominal | [0, 1] | Sí / también puede resumirse simétricamente | Reducción relativa de la incertidumbre |
Las medidas de acuerdo se utilizan cuando dos observadores, jueces, evaluadores o instrumentos clasifican a los mismos casos en las mismas categorías.
En este contexto, ya no interesa solo si las variables están asociadas, sino si existe coincidencia entre ambas clasificaciones por encima de lo que podría ocurrir por azar.
Ejemplo: evaluación de postulantes
Supóngase que dos evaluadores clasifican a 40 postulantes como Apto o No apto.
acuerdo <- matrix(
c(18, 4,
3, 15),
nrow = 2,
byrow = TRUE,
dimnames = list(
Evaluador_1 = c("Apto", "No apto"),
Evaluador_2 = c("Apto", "No apto")
)
)
acuerdo
## Evaluador_2
## Evaluador_1 Apto No apto
## Apto 18 4
## No apto 3 15
kable(acuerdo, caption = "Tabla de acuerdo entre dos evaluadores")
| Apto | No apto | |
|---|---|---|
| Apto | 18 | 4 |
| No apto | 3 | 15 |
La proporción de acuerdo observado es:
\[ P_o = \frac{\text{suma de la diagonal principal}}{n} \]
n_total <- sum(acuerdo)
po <- sum(diag(acuerdo)) / n_total
po
## [1] 0.825
La proporción de acuerdo esperada por azar se obtiene a partir de los marginales:
\[ P_e = \sum_{i=1}^{I} p_{i\cdot} p_{\cdot i} \]
prop_filas <- rowSums(acuerdo) / n_total
prop_columnas <- colSums(acuerdo) / n_total
pe <- sum(prop_filas * prop_columnas)
pe
## [1] 0.5025
El Kappa de Cohen corrige el acuerdo observado descontando el acuerdo esperado por azar:
\[ \kappa = \frac{P_o - P_e}{1 - P_e} \]
Interpretación
kappa_manual <- (po - pe) / (1 - pe)
kappa_manual
## [1] 0.6482412
R a partir de clasificaciones individualesLa función kappa2() requiere los datos a nivel de caso.
El siguiente bloque reconstruye una base individual a partir de la tabla
de frecuencias.
rater_data <- data.frame(
evaluador1 = c(rep("Apto", 18), rep("Apto", 4), rep("No apto", 3), rep("No apto", 15)),
evaluador2 = c(rep("Apto", 18), rep("No apto", 4), rep("Apto", 3), rep("No apto", 15))
)
head(rater_data)
## evaluador1 evaluador2
## 1 Apto Apto
## 2 Apto Apto
## 3 Apto Apto
## 4 Apto Apto
## 5 Apto Apto
## 6 Apto Apto
kappa2(rater_data)
## Cohen's Kappa for 2 Raters (Weights: unweighted)
##
## Subjects = 40
## Raters = 2
## Kappa = 0.648
##
## z = 4.11
## p-value = 4.04e-05
Interpretación
Si el valor de Kappa es alto y positivo, se concluye que existe un grado de acuerdo importante entre ambos evaluadores más allá de lo que podría explicarse por coincidencia aleatoria.
El Kappa de Cohen se utiliza principalmente para variables nominales con dos evaluadores. Cuando las categorías tienen orden natural, puede emplearse una versión ponderada del Kappa, asignando penalizaciones distintas según la magnitud del desacuerdo.
Utilizando la tabla tabla_ordinal:
A partir de la misma tabla ordinal:
Con la tabla tabla_nominal:
A partir de la tabla acuerdo:
Con los datos reconstruidos en rater_data:
Indique qué medida utilizaría en cada caso y justifique brevemente su elección:
Las medidas de asociación en tablas de contingencia bidimensionales permiten ir más allá de la simple inspección visual de frecuencias. Su uso adecuado depende de reconocer con claridad si las variables son ordinales, nominales o si se está ante un problema de acuerdo entre clasificaciones.
En términos generales:
El análisis de tablas de contingencia no consiste únicamente en calcular un coeficiente, sino en elegir correctamente la medida, interpretarla en función del problema y vincular el resultado con el fenómeno sustantivo estudiado.
| Medida | Tipo.de.variables | Rango | Lectura.principal |
|---|---|---|---|
| Gamma de Goodman y Kruskal | Ordinales | [-1, 1] | Sentido e intensidad de asociación monotónica |
| Tau-b de Kendall | Ordinales | [-1, 1] | Asociación monotónica considerando empates |
| Tau de Goodman y Kruskal | Nominales | [0, 1] | Reducción del error de predicción |
| Coeficiente de Incertidumbre | Nominales | [0, 1] | Reducción de la incertidumbre |
| Kappa de Cohen | Clasificaciones sobre los mismos casos | Usualmente entre -1 y 1 | Acuerdo corregido por azar |
Nota metodológica: La presente guía fue elaborada con apoyo de herramientas de inteligencia artificial generativa, específicamente ChatGPT de OpenAI, como asistencia en la estructuración y redacción del material. La selección de contenidos, la validación conceptual y la revisión final son responsabilidad del docente.