1 Presentación

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:

  1. la naturaleza de las variables (ordinales o nominales), y
  2. el tipo de relación que se desea resumir (asociación, reducción del error de predicción o acuerdo entre clasificaciones).

1.1 Objetivos de aprendizaje

Al finalizar la clase, serás capaz de:

  • distinguir entre medidas de asociación para variables ordinales, nominales y medidas de acuerdo;
  • interpretar el sentido y la magnitud de la asociación en tablas bidimensionales;
  • calcular en 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;
  • seleccionar la medida más adecuada según el tipo de variable y el problema de investigación.

1.2 Paquetes a utilizar

# Instalar solo si es necesario
# install.packages(c("DescTools", "irr", "knitr", "dplyr"))

library(DescTools)
library(irr)
library(knitr)
library(dplyr)

2 Recordatorio: tablas de contingencia bidimensionales

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:

  • ¿Existe relación entre ambas variables?
  • ¿La relación es positiva o negativa?
  • ¿Qué tan intensa es?
  • ¿Mejora la predicción de una variable al conocer la otra?
  • ¿Qué tanto coinciden dos clasificaciones realizadas sobre los mismos casos?

3 Medidas de asociación para variables ordinales

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.

3.1 Idea de concordancia y discordancia

Al comparar dos observaciones:

  • el par es concordante si la observación con mayor categoría en \(X\) también presenta mayor categoría en \(Y\);
  • el par es discordante si la observación con mayor categoría en \(X\) presenta menor categoría en \(Y\);
  • existe empate si ambas observaciones coinciden en \(X\), en \(Y\), o en ambas.

Sea:

  • \(C\): número de pares concordantes,
  • \(D\): número de pares discordantes.

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")
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

  • Si el número de pares concordantes supera al de discordantes, la evidencia apunta hacia una asociación positiva.
  • Si ocurre lo contrario, la asociación sería negativa.
  • Si ambos valores son similares, la relación ordinal sería débil o nula.

3.2 Gamma de Goodman y Kruskal

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] \]

  • \(\gamma \approx 1\): asociación ordinal positiva fuerte.
  • \(\gamma \approx -1\): asociación ordinal negativa fuerte.
  • \(\gamma \approx 0\): ausencia de asociación monotónica clara.

3.2.1 Cálculo en R

cd <- 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.

3.3 Tau-b de Kendall

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:

  • \(T_x\): número de pares empatados en \(X\),
  • \(T_y\): número de pares empatados en \(Y\).

Rango e interpretación

\[ \tau_b \in [-1, 1] \]

  • \(\tau_b \approx 1\): relación monótona creciente.
  • \(\tau_b \approx -1\): relación monótona decreciente.
  • \(\tau_b \approx 0\): relación débil o inexistente.

3.3.1 Cálculo en R

KendallTauB(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.

3.4 Comparación entre Gamma y Tau-b

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 [-1, 1] Asociación monotónica en tablas con posibles empates

4 Medidas de asociación para variables nominales

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:

  • la reducción proporcional del error al predecir una variable conociendo la otra;
  • la incertidumbre que se reduce al conocer la variable asociada.

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")
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

4.1 Tau de Goodman y Kruskal

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

  • Si conocer \(X\) no mejora la predicción de \(Y\), el coeficiente será cercano a 0.
  • Si conocer \(X\) permite predecir \(Y\) con mucha mayor precisión, el coeficiente será cercano a 1.

Rango e interpretación

\[ \tau \in [0, 1] \]

  • \(\tau = 0\): independencia o nula mejora predictiva.
  • \(\tau = 1\): predicción perfecta de una variable a partir de la otra.

Importante

Esta medida es direccional. Esto significa que, en general:

\[ \tau(Y|X) \neq \tau(X|Y) \]

4.1.1 Cálculo en R

GoodmanKruskalTau(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.

4.2 Coeficiente de Incertidumbre (Theil’s U)

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] \]

  • \(U = 0\): conocer una variable no reduce la incertidumbre de la otra.
  • \(U = 1\): conocer una variable determina completamente a la otra.

Al igual que el Tau de Goodman y Kruskal, esta medida puede ser direccional.

4.2.1 Cálculo en R

UncertCoef(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.

4.3 Comparación entre medidas nominales

Medida Tipo de variable Rango ¿Es direccional? Idea principal
Tau de Goodman y Kruskal Nominal [0, 1] 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

5 Medidas de acuerdo

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")
Tabla de acuerdo entre dos evaluadores
Apto No apto
Apto 18 4
No apto 3 15

5.1 Proporción de acuerdo observado

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

5.2 Proporción de acuerdo esperado por azar

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

5.3 Kappa de Cohen

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 = 1\): acuerdo perfecto.
  • \(\kappa = 0\): el acuerdo observado no supera al esperado por azar.
  • \(\kappa < 0\): el acuerdo es inferior al esperado por azar, lo que sugiere desacuerdo sistemático.

5.3.1 Cálculo manual

kappa_manual <- (po - pe) / (1 - pe)
kappa_manual
## [1] 0.6482412

5.3.2 Cálculo en R a partir de clasificaciones individuales

La 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.

5.4 Nota metodológica

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.

6 Ejercicios propuestos

6.1 Ejercicio 1. Gamma de Goodman y Kruskal

Utilizando la tabla tabla_ordinal:

  1. calcule el número de pares concordantes y discordantes;
  2. estime la probabilidad de concordancia y de discordancia sin considerar empates;
  3. calcule la Gamma de Goodman y Kruskal;
  4. interprete el signo y la magnitud del resultado.

6.2 Ejercicio 2. Comparación entre Gamma y Tau-b

A partir de la misma tabla ordinal:

  1. calcule la Gamma y el Tau-b;
  2. compare ambos resultados;
  3. explique por qué una de las medidas puede resultar menor que la otra.

6.3 Ejercicio 3. Asociación en variables nominales

Con la tabla tabla_nominal:

  1. calcule el Tau de Goodman y Kruskal en ambas direcciones;
  2. calcule el Coeficiente de Incertidumbre;
  3. indique cuál variable parece más útil para predecir a la otra.

6.4 Ejercicio 4. Acuerdo observado y esperado

A partir de la tabla acuerdo:

  1. calcule \(P_o\);
  2. calcule \(P_e\);
  3. compare ambos resultados e interprete qué significa que \(P_o\) sea mayor que \(P_e\).

6.5 Ejercicio 5. Kappa de Cohen

Con los datos reconstruidos en rater_data:

  1. estime el Kappa de Cohen;
  2. interprete si el acuerdo entre evaluadores puede considerarse bajo, moderado o alto;
  3. explique por qué no basta con observar solo el porcentaje de coincidencias.

6.6 Ejercicio 6. Selección de la medida adecuada

Indique qué medida utilizaría en cada caso y justifique brevemente su elección:

  1. nivel educativo y categoría ocupacional;
  2. sexo y condición de actividad;
  3. clasificación diagnóstica realizada por dos médicos;
  4. satisfacción laboral y antigüedad en el puesto.

7 Conclusiones

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:

  • las medidas para variables ordinales resumen la relación monotónica entre categorías ordenadas;
  • las medidas para variables nominales se centran en la capacidad predictiva o en la reducción de incertidumbre;
  • las medidas de acuerdo evalúan coincidencias por encima del azar.

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.

7.1 Síntesis general de medidas vistas en la clase

Resumen de medidas de asociación y acuerdo
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

7.2 Recomendaciones para la elección de la medida

  1. Si ambas variables son ordinales, utilice una medida basada en concordancia y discordancia.
    • Gamma si se desea una medida simple y no interesa penalizar empates.
    • Tau-b si la tabla presenta empates y se desea una medida más conservadora.
  2. Si ambas variables son nominales, utilice medidas de reducción del error o de reducción de incertidumbre.
    • Tau de Goodman y Kruskal si el interés está en la mejora predictiva.
    • Coeficiente de Incertidumbre si se quiere una lectura desde la teoría de la información.
  3. Si se comparan dos clasificaciones sobre los mismos individuos, utilice medidas de acuerdo.
    • Kappa de Cohen para dos evaluadores.

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.

8 Bibliografía

  • R Core Team. R: A language and environment for statistical computing. Vienna: R Foundation for Statistical Computing.
  • Agresti, A. (2013). Categorical Data Analysis. Wiley.
  • Goodman, L. A., & Kruskal, W. H. (1954). Measures of association for cross classifications.
  • Kendall, M. G. (1945). The treatment of ties in ranking problems.
  • Cohen, J. (1960). A coefficient of agreement for nominal scales.
  • Signorell, A. et al. (2025). DescTools: Tools for Descriptive Statistics. R package, versión 0.99.60.
  • Gamer, M., Lemon, J., Fellows, I. y Singh, P. (2019). irr: Various Coefficients of Interrater Reliability and Agreement. R package, versión 0.84.1.
  • Xie, Y. (2025). knitr: A General-Purpose Package for Dynamic Report Generation in R. R package, versión 1.51.
  • Wickham, H., François, R., Henry, L., Müller, K., Vaughan, D. y Posit Software, PBC. (2026). dplyr: A Grammar of Data Manipulation. R package, versión 1.2.0.