Unidad 2 · Asociación bivariada · Módulo 11
Hasta ahora hemos estudiado una asociación a la vez. Sin embargo, una investigación social puede incluir educación, ingreso, posición ocupacional y distintas dimensiones de bienestar. Cada pareja de variables produce una correlación y una matriz permite organizar esos resultados en una estructura común. Su lectura aprovecha la diagonal, la simetría y la comparación entre celdas para reconocer patrones sin repetir información. Pero los coeficientes no cuentan toda la historia: cuando existen respuestas incompletas, distintas celdas pueden utilizar diferentes personas. Por eso, el tamaño muestral efectivo y la estrategia para tratar los datos perdidos forman parte del resultado.
En una investigación sobre desigualdad y condiciones de vida podríamos observar simultáneamente cinco características de cada persona ocupada:
La pregunta ya no se limita a una relación. Podemos examinar educación e ingreso, educación y prestigio, ingreso y seguridad económica, seguridad y satisfacción vital, además de las demás combinaciones posibles. Cada una continúa siendo una asociación bivariada, pero una matriz permite reunirlas y compararlas.
El patrón construido para este módulo incluirá asociaciones positivas entre educación e ingreso, entre educación y prestigio ocupacional, entre ingreso y seguridad económica, y entre seguridad económica y satisfacción vital. La relación entre educación y satisfacción será más débil. Este conjunto permite reconocer una estructura descriptiva heterogénea sin convertirla en una cadena causal.
También aparecerán respuestas incompletas. Una persona puede informar su educación, prestigio y seguridad económica, pero no declarar ingreso o satisfacción vital. En ese caso, podría participar en algunas correlaciones y quedar excluida de otras.
La base disponible para una correlación puede no coincidir con la base utilizada para otra.
Una matriz sirve, por tanto, para organizar asociaciones y también para revisar qué información sostiene cada una. Ninguna celda controla automáticamente las demás variables ni demuestra mecanismos causales.
Los datos utilizados en las visualizaciones, simulaciones y ejemplos son construidos con fines pedagógicos y no representan estimaciones de una población real.
Escenario A · Base mayoritariamente completa
Casi todas las personas poseen información en las cinco variables. Los tamaños muestrales de las correlaciones son iguales o muy semejantes, por lo que las celdas se basan en conjuntos de casos comparables. El patrón socioeconómico se observa con relativa claridad y la matriz permite aprender primero su estructura: filas, columnas, diagonal, simetría y asociaciones únicas.
Cuando la mayoría de los casos posee información completa, el número de personas utilizado en cada correlación cambia poco y la comparación entre celdas resulta más directa.
Escenario B · Base con respuestas incompletas
El ingreso presenta más omisiones, la satisfacción vital contiene varias respuestas perdidas y la seguridad económica tiene algunas ausencias. Educación y prestigio ocupacional, en cambio, están casi completos.
Con eliminación listwise, una persona queda fuera de toda la matriz si le falta cualquiera de las variables seleccionadas. Con análisis pairwise, participa en cada correlación para la que posee ambos datos. La primera estrategia reduce la muestra y conserva un conjunto común; la segunda utiliza más información, pero produce distintos tamaños muestrales.
La estrategia de análisis cambia la base efectiva: podemos utilizar un único subconjunto reducido o diferentes subconjuntos para cada correlación.
La matriz no está formada solo por coeficientes. Cada resultado depende de las variables analizadas, las personas con información disponible y la estrategia empleada ante las ausencias.
Una matriz de correlaciones reúne varias asociaciones bivariadas. Cada fila representa una variable y cada columna representa otra. Su intersección forma una celda, que contiene el coeficiente correspondiente a esa pareja.
Por ejemplo, la celda ubicada en la fila “educación” y la columna “ingreso” resume la asociación entre esas dos variables. Aunque la matriz incluya prestigio, seguridad y satisfacción, esa celda no controla sus efectos ni estima una relación independiente.
Una celda de la matriz sigue siendo una pregunta bivariada, aunque aparezca rodeada de muchas otras correlaciones.
La diagonal contiene la correlación de cada variable consigo misma y, por definición, vale 1. La matriz también es simétrica: la correlación entre educación e ingreso aparece dos veces, una a cada lado de la diagonal.
Por eso, la mitad superior repite la información de la mitad inferior. Una matriz triangular elimina esa redundancia y facilita concentrarse en:
No todas las celdas poseen la misma relevancia. Una lectura útil resume patrones en vez de describir coeficiente por coeficiente.
Los datos perdidos modifican quién participa en cada cálculo.
Listwise produce un tamaño muestral común. Pairwise puede producir diferentes valores de \(N\) entre celdas. En consecuencia, dos coeficientes visualmente próximos podrían haberse calculado con conjuntos de personas distintos.
El recorrido guiado utilizará una base pequeña para mostrar cómo varias variables producen parejas únicas, cómo cada correlación ocupa una celda y por qué la diagonal y la simetría generan información repetida. Luego aparecerán respuestas incompletas para distinguir casos completos y casos disponibles por pareja. Finalmente, se compararán las matrices listwise, pairwise y de \(N\), preparando una versión triangular adecuada para comunicar resultados.
Nota pedagógica: Compara matrices construidas con datos completos, eliminación listwise y casos disponibles por pareja; revisa cómo cambian simultáneamente las correlaciones y los tamaños muestrales.
Cada celda representa una asociación bivariada concreta. La matriz completa facilita reconocer la diagonal y la simetría, pero contiene información repetida. La versión triangular elimina duplicaciones y ayuda a concentrar la interpretación en las relaciones relevantes.
Listwise mantiene un único conjunto de personas para toda la matriz, aunque puede reducir considerablemente la muestra. Pairwise conserva más información en cada pareja, pero el tamaño muestral y la composición de los casos pueden variar entre celdas. Por eso, coeficientes parecidos no necesariamente se basan en las mismas personas, y diferencias entre estrategias pueden surgir por el cambio de la muestra efectiva.
Conservar más observaciones no resuelve automáticamente el sesgo provocado por la falta de respuesta. Además, ninguna matriz de correlaciones controla terceras variables ni establece una secuencia causal. El patrón debe interpretarse junto con los tamaños muestrales, la estrategia empleada y la pregunta sociológica.
Antes de interpretar una celda, revisa:
Una celda sin encabezados ni \(N\) está incompleta desde el punto de vista interpretativo.
\[ r_{XX}=1 \]
La diagonal contiene autocorrelaciones perfectas. Sirve para organizar la estructura de la matriz, pero no responde una pregunta sociológica.
\[ r_{XY}=r_{YX} \]
La mitad superior y la inferior repiten las mismas asociaciones. Una matriz triangular no está incompleta: elimina información redundante.
Una lectura sustantiva puede identificar:
No es necesario describir todas las celdas.
Antes de comparar dos coeficientes:
Una celda debe relacionarse con su nube de puntos o representación equivalente. Esto permite revisar:
La matriz resume, pero no reemplaza la inspección de cada asociación relevante.
| Aspecto | Listwise | Pairwise |
|---|---|---|
| Casos utilizados | Personas completas en todas las variables seleccionadas | Personas completas en cada pareja |
| Tamaño muestral | Común para toda la matriz | Puede variar entre celdas |
| Ventaja | Comparabilidad del conjunto de personas | Mayor conservación de datos |
| Riesgo | Reducción de muestra y cambio de composición | Subconjuntos distintos y comparación más compleja |
| Reporte | Informar \(N\) inicial y \(N_{\text{listwise}}\) | Informar rango o matriz de \(N_{XY}\) |
La eliminación listwise retira una fila completa si falta cualquiera de las variables seleccionadas. Produce un único conjunto de personas para todas las correlaciones, pero tiene varias consecuencias:
Una persona puede quedar excluida de la correlación educación–prestigio aunque posea ambos datos, simplemente porque no respondió satisfacción vital.
El análisis pairwise utiliza todos los casos que poseen información en las dos variables de cada celda. Esto permite:
Una matriz pairwise puede ser útil para una exploración descriptiva, pero complica la comparación directa y algunos procedimientos posteriores.
La decisión depende del propósito del análisis, la cantidad y el patrón de datos perdidos, la comparabilidad requerida y los procedimientos que se aplicarán posteriormente.
Los escenarios siguientes comparan tres formas de construir una matriz.
| Estrategia | Casos utilizados | Ventaja principal | Limitación principal | Recomendación de reporte |
|---|---|---|---|---|
| Base completa | Mismas personas en todas las celdas | Comparabilidad directa de casos | Situación menos frecuente al aumentar variables | Informar el \(N\) total |
| Listwise | Personas completas en todas las variables | Un único subconjunto para toda la matriz | Puede reducir mucho la muestra y cambiar su composición | Informar casos iniciales, casos completos y variables incluidas |
| Pairwise | Personas disponibles en cada pareja | Conserva más información en varias celdas | Produce distintos \(N\) y subconjuntos | Informar el rango o una matriz de \(N\) |
Todas las correlaciones utilizan el mismo tamaño muestral y se basan en las mismas personas. La matriz presenta un patrón socioeconómico relativamente estable y la versión triangular resume las asociaciones de interés.
Interpretación: la comparabilidad de los casos es directa, aunque cada celda continúa representando una relación bivariada distinta.
Se excluye a toda persona que presente una ausencia en cualquiera de las cinco variables. Todas las correlaciones utilizan un \(N\) menor, pero mantienen un único subconjunto común.
Algunas asociaciones pueden cambiar porque no solo disminuye la cantidad de casos: también puede modificarse la composición social de la muestra analizada.
Interpretación: listwise facilita comparar coeficientes calculados con las mismas personas, pero puede reducir considerablemente la información disponible.
Cada celda utiliza el máximo número de personas con información en ambas variables. Las correlaciones que no incluyen ingreso o satisfacción vital pueden conservar más casos. El \(N\) varía y no existe una muestra única para toda la matriz.
Interpretación: pairwise conserva más observaciones en varias relaciones, pero exige informar y revisar el tamaño muestral de cada correlación.
Para \(k\) variables:
\[ \frac{k(k-1)}{2} \]
Con cinco variables:
\[ \frac{5(5-1)}{2}=10 \]
La matriz contiene diez asociaciones únicas.
\[ r_{XX}=1 \]
Una variable se correlaciona perfectamente consigo misma. La diagonal organiza la matriz y no se interpreta como un hallazgo sustantivo.
\[ r_{XY}=r_{YX} \]
La posición reflejada contiene la misma correlación. Por eso, una matriz triangular puede eliminar la repetición.
\[ N_{\text{listwise}} \]
Corresponde al número de personas con información completa en todas las variables seleccionadas para la matriz.
\[ N_{XY} \]
Corresponde al número de personas con información simultáneamente disponible en las variables \(X\) e \(Y\). Bajo pairwise, \(N_{XY}\) puede cambiar entre celdas.
\[ \mathbf{R} = \begin{pmatrix} 1 & r_{12} & \cdots & r_{1k}\\ r_{21} & 1 & \cdots & r_{2k}\\ \vdots & \vdots & \ddots & \vdots\\ r_{k1} & r_{k2} & \cdots & 1 \end{pmatrix} \]
\[ \mathbf{N} = \begin{pmatrix} N_1 & N_{12} & \cdots & N_{1k}\\ N_{21} & N_2 & \cdots & N_{2k}\\ \vdots & \vdots & \ddots & \vdots\\ N_{k1} & N_{k2} & \cdots & N_k \end{pmatrix} \]
De manera introductoria, suele distinguirse entre:
Nota sobre validez matemática: Una matriz calculada mediante pairwise puede presentar dificultades en ciertos procedimientos posteriores porque sus celdas no necesariamente provienen de un único conjunto de casos, lo que a veces hace que no posea todas las propiedades matemáticas requeridas.
set.seed(2026)
n <- 220
educacion <- pmin(
22,
pmax(6, round(rnorm(n, mean = 13.5, sd = 3)))
)
prestigio <- pmin(
100,
pmax(
10,
20 + 3.2 * educacion + rnorm(n, 0, 12)
)
)
ingreso <- pmax(
250000,
180000 +
52000 * educacion +
6500 * prestigio +
rnorm(n, 0, 380000)
)
seguridad <- pmin(
10,
pmax(
1,
2.5 + ingreso / 450000 + rnorm(n, 0, 1.4)
)
)
satisfaccion <- pmin(
10,
pmax(
1,
3.5 + 0.45 * seguridad + rnorm(n, 0, 1.5)
)
)
datos <- data.frame(
educacion,
ingreso,
prestigio,
seguridad,
satisfaccion
)
# Introducir datos perdidos
datos$ingreso[sample(seq_len(n), 32)] <- NA
datos$satisfaccion[sample(seq_len(n), 25)] <- NA
datos$seguridad[sample(seq_len(n), 15)] <- NA
### Revisar información disponible
variables <- c(
"educacion",
"ingreso",
"prestigio",
"seguridad",
"satisfaccion"
)
base <- datos[variables]
# Ausencias por variable
colSums(is.na(base))
# Casos disponibles por variable
colSums(!is.na(base))
# Casos completos en todas las variables
sum(complete.cases(base))
### Matriz listwise
casos_completos <- complete.cases(base)
base_listwise <- base[casos_completos, ]
matriz_listwise <- cor(
base_listwise,
use = "everything",
method = "pearson"
)
round(matriz_listwise, 3)
nrow(base_listwise)
# También puede utilizarse:
# cor(base, use = "complete.obs", method = "pearson")
### Matriz pairwise
matriz_pairwise <- cor(
base,
use = "pairwise.complete.obs",
method = "pearson"
)
round(matriz_pairwise, 3)
### Construir una matriz de N
matriz_n <- matrix(
NA_integer_,
nrow = length(variables),
ncol = length(variables),
dimnames = list(variables, variables)
)
for (i in seq_along(variables)) {
for (j in seq_along(variables)) {
matriz_n[i, j] <- sum(
complete.cases(
base[c(variables[i], variables[j])]
)
)
}
}
matriz_n
range(matriz_n[lower.tri(matriz_n)])
### Obtener la parte triangular
triangular <- matriz_pairwise
triangular[upper.tri(triangular)] <- NA
round(triangular, 3)
### Comparar estrategias
diferencia <- matriz_pairwise - matriz_listwise
round(diferencia, 3)
### Visualización simple en R base
imagen <- matriz_pairwise
image(
x = seq_len(ncol(imagen)),
y = seq_len(nrow(imagen)),
z = t(imagen[nrow(imagen):1, ]),
zlim = c(-1, 1),
axes = FALSE,
xlab = "",
ylab = "",
main = "Matriz de correlaciones"
)
axis(
1,
at = seq_along(variables),
labels = variables,
las = 2
)
axis(
2,
at = seq_along(variables),
labels = rev(variables),
las = 2
)
for (i in seq_along(variables)) {
for (j in seq_along(variables)) {
text(
j,
length(variables) - i + 1,
labels = sprintf("%.2f", imagen[i, j])
)
}
}import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(2026)
n = 220
educacion = np.clip(
np.rint(rng.normal(13.5, 3, n)),
6,
22,
)
prestigio = np.clip(
20 + 3.2 * educacion + rng.normal(0, 12, n),
10,
100,
)
ingreso = np.maximum(
250_000,
180_000
+ 52_000 * educacion
+ 6_500 * prestigio
+ rng.normal(0, 380_000, n),
)
seguridad = np.clip(
2.5 + ingreso / 450_000 + rng.normal(0, 1.4, n),
1,
10,
)
satisfaccion = np.clip(
3.5 + 0.45 * seguridad + rng.normal(0, 1.5, n),
1,
10,
)
datos = pd.DataFrame({
"educacion": educacion,
"ingreso": ingreso,
"prestigio": prestigio,
"seguridad": seguridad,
"satisfaccion": satisfaccion,
})
# Introducir valores perdidos
datos.loc[
rng.choice(datos.index, size=32, replace=False),
"ingreso",
] = np.nan
datos.loc[
rng.choice(datos.index, size=25, replace=False),
"satisfaccion",
] = np.nan
datos.loc[
rng.choice(datos.index, size=15, replace=False),
"seguridad",
] = np.nan
### Revisar los datos perdidos
variables = [
"educacion",
"ingreso",
"prestigio",
"seguridad",
"satisfaccion",
]
base = datos[variables].copy()
print("Ausencias por variable:")
print(base.isna().sum())
print("\nCasos disponibles por variable:")
print(base.notna().sum())
casos_completos = base.dropna()
print("\nCasos completos:", len(casos_completos))
### Matriz listwise
base_listwise = base.dropna()
matriz_listwise = base_listwise.corr(method="pearson")
print(matriz_listwise.round(3))
### Matriz pairwise
matriz_pairwise = base.corr(method="pearson")
print(matriz_pairwise.round(3))
### Matriz de N
matriz_n = pd.DataFrame(
index=variables,
columns=variables,
dtype=int,
)
for variable_fila in variables:
for variable_columna in variables:
matriz_n.loc[
variable_fila,
variable_columna,
] = base[
[variable_fila, variable_columna]
].dropna().shape[0]
matriz_n = matriz_n.astype(int)
print(matriz_n)
triangulo_inferior = np.tril(
np.ones(matriz_n.shape, dtype=bool),
k=-1,
)
n_unicos = matriz_n.to_numpy()[triangulo_inferior]
print(
"Rango de N entre correlaciones:",
int(n_unicos.min()),
"–",
int(n_unicos.max()),
)
### Matriz triangular
mascara_superior = np.triu(
np.ones(matriz_pairwise.shape, dtype=bool),
k=1,
)
matriz_triangular = matriz_pairwise.mask(mascara_superior)
print(matriz_triangular.round(3))
### Comparar estrategias
diferencia = matriz_pairwise - matriz_listwise
print(diferencia.round(3))
### Visualización simple
fig, ax = plt.subplots()
imagen = ax.imshow(
matriz_pairwise.to_numpy(),
vmin=-1,
vmax=1,
)
ax.set_xticks(range(len(variables)))
ax.set_yticks(range(len(variables)))
ax.set_xticklabels(
variables,
rotation=45,
ha="right",
)
ax.set_yticklabels(variables)
for i in range(len(variables)):
for j in range(len(variables)):
valor = matriz_pairwise.iloc[i, j]
ax.text(
j,
i,
f"{valor:.2f}",
ha="center",
va="center",
)
fig.colorbar(
imagen,
ax=ax,
label="Correlación",
)
ax.set_title("Matriz de correlaciones")
plt.tight_layout()
plt.show()use = "pairwise.complete.obs"), con tamaños de muestra fluctuando entre \(N_{\text{mín}} = 142\) y \(N_{\text{máx}} = 200\) casos por celda.NA, complete.obs frente a pairwise.complete.obs en cor().Una matriz organiza las correlaciones bivariadas entre varias variables. Cada celda cruza una fila con una columna, la diagonal contiene autocorrelaciones iguales a 1 y la simetría repite los resultados a ambos lados. Por eso, una matriz triangular facilita reconocer patrones sin duplicar información. Cuando existen datos perdidos, listwise utiliza un único conjunto de casos completos, mientras que pairwise selecciona casos disponibles para cada pareja. La matriz de \(N\) muestra cuántas personas sostienen cada coeficiente y permite evaluar comparabilidad. Conservar más casos no garantiza menor sesgo, y un tamaño muestral común tampoco asegura representatividad. Todo reporte debe informar variables, estrategia, tamaños efectivos y asociaciones principales. La matriz continúa siendo bivariada: no controla terceras variables ni demuestra causalidad.
Una matriz no se interpreta solo con coeficientes: cada celda debe leerse junto con las variables, los casos utilizados y la estrategia de análisis.
---
pagetitle: "M11. Matrices de correlación y casos perdidos | Estadística Correlacional Interactiva"
page-layout: custom
toc: false
body-class: rs-lesson-page inferencia-module m11-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 11
:::
# M11. Matrices de correlación y casos perdidos {.m01-title}
::: {.m01-module-lead .rs-module-lead}
Hasta ahora hemos estudiado una asociación a la vez. Sin embargo, una investigación social puede incluir educación, ingreso, posición ocupacional y distintas dimensiones de bienestar. Cada pareja de variables produce una correlación y una **matriz** permite organizar esos resultados en una estructura común. Su lectura aprovecha la diagonal, la simetría y la comparación entre celdas para reconocer patrones sin repetir información. Pero los coeficientes no cuentan toda la historia: cuando existen respuestas incompletas, distintas celdas pueden utilizar diferentes personas. Por eso, el tamaño muestral efectivo y la estrategia para tratar los datos perdidos forman parte del resultado.
:::
:::
::: {.rs-lesson-section #pregunta-social}
## Pregunta Social
::: {.m01-editorial-block}
### ¿Cómo se relacionan la educación, los ingresos, la posición ocupacional y el bienestar? {.m01-social-question-title}
::: {.m01-social-question-intro}
En una investigación sobre desigualdad y condiciones de vida podríamos observar simultáneamente cinco características de cada persona ocupada:
1. años de educación formal;
2. ingreso laboral mensual;
3. prestigio o estatus ocupacional;
4. seguridad económica percibida;
5. satisfacción con la vida.
La pregunta ya no se limita a una relación. Podemos examinar educación e ingreso, educación y prestigio, ingreso y seguridad económica, seguridad y satisfacción vital, además de las demás combinaciones posibles. Cada una continúa siendo una asociación **bivariada**, pero una matriz permite reunirlas y compararlas.
El patrón construido para este módulo incluirá asociaciones positivas entre educación e ingreso, entre educación y prestigio ocupacional, entre ingreso y seguridad económica, y entre seguridad económica y satisfacción vital. La relación entre educación y satisfacción será más débil. Este conjunto permite reconocer una estructura descriptiva heterogénea sin convertirla en una cadena causal.
También aparecerán respuestas incompletas. Una persona puede informar su educación, prestigio y seguridad económica, pero no declarar ingreso o satisfacción vital. En ese caso, podría participar en algunas correlaciones y quedar excluida de otras.
> La base disponible para una correlación puede no coincidir con la base utilizada para otra.
Una matriz sirve, por tanto, para organizar asociaciones y también para revisar qué información sostiene cada una. Ninguna celda controla automáticamente las demás variables ni demuestra mecanismos causales.
:::
::: {.rs-callout-note .rs-callout-note--m01-blue}
Los datos utilizados en las visualizaciones, simulaciones y ejemplos son construidos con fines pedagógicos y no representan estimaciones de una población real.
:::
### Dos bases para una misma pregunta
::: {.m01-group-comparison-box}
::: {.m01-group-col}
[Escenario A · Base mayoritariamente completa]{.m01-group-badge .m01-badge-a}
Casi todas las personas poseen información en las cinco variables. Los tamaños muestrales de las correlaciones son iguales o muy semejantes, por lo que las celdas se basan en conjuntos de casos comparables. El patrón socioeconómico se observa con relativa claridad y la matriz permite aprender primero su estructura: filas, columnas, diagonal, simetría y asociaciones únicas.
> Cuando la mayoría de los casos posee información completa, el número de personas utilizado en cada correlación cambia poco y la comparación entre celdas resulta más directa.
:::
::: {.m01-group-col}
[Escenario B · Base con respuestas incompletas]{.m01-group-badge .m01-badge-b}
El ingreso presenta más omisiones, la satisfacción vital contiene varias respuestas perdidas y la seguridad económica tiene algunas ausencias. Educación y prestigio ocupacional, en cambio, están casi completos.
Con eliminación **listwise**, una persona queda fuera de toda la matriz si le falta cualquiera de las variables seleccionadas. Con análisis **pairwise**, participa en cada correlación para la que posee ambos datos. La primera estrategia reduce la muestra y conserva un conjunto común; la segunda utiliza más información, pero produce distintos tamaños muestrales.
> La estrategia de análisis cambia la base efectiva: podemos utilizar un único subconjunto reducido o diferentes subconjuntos para cada correlación.
:::
:::
> **La matriz no está formada solo por coeficientes. Cada resultado depende de las variables analizadas, las personas con información disponible y la estrategia empleada ante las ausencias.**
:::
:::
::: {.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 una correlación a una matriz
Una matriz de correlaciones reúne varias asociaciones bivariadas. Cada fila representa una variable y cada columna representa otra. Su intersección forma una **celda**, que contiene el coeficiente correspondiente a esa pareja.
Por ejemplo, la celda ubicada en la fila “educación” y la columna “ingreso” resume la asociación entre esas dos variables. Aunque la matriz incluya prestigio, seguridad y satisfacción, esa celda no controla sus efectos ni estima una relación independiente.
> Una celda de la matriz sigue siendo una pregunta bivariada, aunque aparezca rodeada de muchas otras correlaciones.
:::
::: {.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 celdas al patrón
La diagonal contiene la correlación de cada variable consigo misma y, por definición, vale 1. La matriz también es simétrica: la correlación entre educación e ingreso aparece dos veces, una a cada lado de la diagonal.
Por eso, la mitad superior repite la información de la mitad inferior. Una **matriz triangular** elimina esa redundancia y facilita concentrarse en:
- signos;
- magnitudes;
- asociaciones cercanas a cero;
- regularidades vinculadas con la pregunta social.
No todas las celdas poseen la misma relevancia. Una lectura útil resume patrones en vez de describir coeficiente por coeficiente.
:::
::: {.m01-flow-step .rs-flow-step role="listitem"}
```{=html}
<div class="m01-flow-step-num rs-flow-step-num" aria-hidden="true">3</div>
```
### Del patrón a los casos utilizados
Los datos perdidos modifican quién participa en cada cálculo.
- **Listwise:** conserva solamente a las personas con información completa en todas las variables seleccionadas.
- **Pairwise:** utiliza, para cada celda, a quienes tienen información en las dos variables involucradas.
Listwise produce un tamaño muestral común. Pairwise puede producir diferentes valores de $N$ entre celdas. En consecuencia, dos coeficientes visualmente próximos podrían haberse calculado con conjuntos de personas distintos.
:::
:::
:::
::: {.rs-lesson-section #recorrido-guiado}
## ¿Cómo se construye una matriz interpretable?
El recorrido guiado utilizará una base pequeña para mostrar cómo varias variables producen parejas únicas, cómo cada correlación ocupa una celda y por qué la diagonal y la simetría generan información repetida. Luego aparecerán respuestas incompletas para distinguir casos completos y casos disponibles por pareja. Finalmente, se compararán las matrices listwise, pairwise y de $N$, preparando una versión triangular adecuada para comunicar resultados.
::: {.column-screen-inset}
```{=html}
<div id="m11-matrix-tour">
<!-- El contenido es generado por m11-matrices-correlacion-casos-perdidos.js -->
</div>
```
:::
```{=html}
<script src="../assets/js/m11-matrices-correlacion-casos-perdidos.js" defer></script>
```
:::
::: {.rs-lesson-section #laboratorio-interactivo}
## Laboratorio interactivo
::: {.rs-callout-note .rs-callout-note--m01-blue}
**Nota pedagógica:**
Compara matrices construidas con datos completos, eliminación listwise y casos disponibles por pareja; revisa cómo cambian simultáneamente las correlaciones y los tamaños muestrales.
:::
::: {.column-screen-inset}
```{=html}
<div id="m11-matrix-lab">
<!-- El contenido es generado por m11-matrices-correlacion-casos-perdidos.js -->
</div>
```
:::
:::
::: {.rs-lesson-section #despues-del-laboratorio}
## Después de explorar
Cada celda representa una asociación bivariada concreta. La matriz completa facilita reconocer la diagonal y la simetría, pero contiene información repetida. La versión triangular elimina duplicaciones y ayuda a concentrar la interpretación en las relaciones relevantes.
Listwise mantiene un único conjunto de personas para toda la matriz, aunque puede reducir considerablemente la muestra. Pairwise conserva más información en cada pareja, pero el tamaño muestral y la composición de los casos pueden variar entre celdas. Por eso, coeficientes parecidos no necesariamente se basan en las mismas personas, y diferencias entre estrategias pueden surgir por el cambio de la muestra efectiva.
Conservar más observaciones no resuelve automáticamente el sesgo provocado por la falta de respuesta. Además, ninguna matriz de correlaciones controla terceras variables ni establece una secuencia causal. El patrón debe interpretarse junto con los tamaños muestrales, la estrategia empleada y la pregunta sociológica.
:::
::: {.rs-lesson-section #interpretacion}
## Cómo leer una matriz sin perderse
### 1. Identifica las variables
Antes de interpretar una celda, revisa:
- la variable de la fila;
- la variable de la columna;
- el signo del coeficiente;
- el nivel de medición;
- el tamaño muestral utilizado;
- la estrategia aplicada.
Una celda sin encabezados ni $N$ está incompleta desde el punto de vista interpretativo.
### 2. Omite la diagonal como resultado sustantivo
$$
r_{XX}=1
$$
La diagonal contiene autocorrelaciones perfectas. Sirve para organizar la estructura de la matriz, pero no responde una pregunta sociológica.
### 3. Evita duplicar resultados
$$
r_{XY}=r_{YX}
$$
La mitad superior y la inferior repiten las mismas asociaciones. Una matriz triangular no está incompleta: elimina información redundante.
### 4. Busca patrones, no una lista
Una lectura sustantiva puede identificar:
- un bloque de asociaciones socioeconómicas;
- relaciones entre recursos y seguridad;
- vínculos con satisfacción vital;
- coeficientes cercanos a cero;
- signos inesperados;
- diferencias relevantes entre asociaciones.
No es necesario describir todas las celdas.
### 5. Revisa el tamaño muestral
Antes de comparar dos coeficientes:
- identifica el $N$ de cada celda;
- comprueba la estrategia;
- revisa si utilizaron las mismas personas;
- considera la proporción de casos excluidos;
- evita comparar mecánicamente resultados de bases muy diferentes.
### 6. Vuelve a la representación bivariada
Una celda debe relacionarse con su nube de puntos o representación equivalente. Esto permite revisar:
- forma;
- linealidad;
- heterogeneidad;
- posibles casos extremos;
- sentido sociológico.
La matriz resume, pero no reemplaza la inspección de cada asociación relevante.
### ¿Casos completos o casos disponibles?
::: {.m01-table-wrap}
| Aspecto | Listwise | Pairwise |
|---|---|---|
| **Casos utilizados** | Personas completas en todas las variables seleccionadas | Personas completas en cada pareja |
| **Tamaño muestral** | Común para toda la matriz | Puede variar entre celdas |
| **Ventaja** | Comparabilidad del conjunto de personas | Mayor conservación de datos |
| **Riesgo** | Reducción de muestra y cambio de composición | Subconjuntos distintos y comparación más compleja |
| **Reporte** | Informar $N$ inicial y $N_{\text{listwise}}$ | Informar rango o matriz de $N_{XY}$ |
: Comparativa de estrategias ante casos perdidos {.m01-table}
:::
#### Listwise
La eliminación listwise retira una fila completa si falta cualquiera de las variables seleccionadas. Produce un único conjunto de personas para todas las correlaciones, pero tiene varias consecuencias:
- puede reducir de manera importante el tamaño muestral;
- puede descartar datos útiles para algunas parejas;
- el subconjunto final depende de las variables incorporadas;
- no garantiza que desaparezca el sesgo;
- puede cambiar la composición social de la muestra.
Una persona puede quedar excluida de la correlación educación–prestigio aunque posea ambos datos, simplemente porque no respondió satisfacción vital.
#### Pairwise
El análisis pairwise utiliza todos los casos que poseen información en las dos variables de cada celda. Esto permite:
- conservar más observaciones;
- aprovechar información parcial;
- obtener tamaños muestrales diferentes;
- construir coeficientes con subconjuntos de composición distinta.
Una matriz pairwise puede ser útil para una exploración descriptiva, pero complica la comparación directa y algunos procedimientos posteriores.
> **La decisión depende del propósito del análisis, la cantidad y el patrón de datos perdidos, la comparabilidad requerida y los procedimientos que se aplicarán posteriormente.**
:::
::: {.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: la misma matriz no siempre utiliza la misma muestra</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}
Los escenarios siguientes comparan tres formas de construir una matriz.
::: {.m01-table-wrap}
| Estrategia | Casos utilizados | Ventaja principal | Limitación principal | Recomendación de reporte |
|---|---|---|---|---|
| **Base completa** | Mismas personas en todas las celdas | Comparabilidad directa de casos | Situación menos frecuente al aumentar variables | Informar el $N$ total |
| **Listwise** | Personas completas en todas las variables | Un único subconjunto para toda la matriz | Puede reducir mucho la muestra y cambiar su composición | Informar casos iniciales, casos completos y variables incluidas |
| **Pairwise** | Personas disponibles en cada pareja | Conserva más información en varias celdas | Produce distintos $N$ y subconjuntos | Informar el rango o una matriz de $N$ |
: Escenarios de depuración de casos perdidos {.m01-table}
:::
### Escenario A. Base completa
Todas las correlaciones utilizan el mismo tamaño muestral y se basan en las mismas personas. La matriz presenta un patrón socioeconómico relativamente estable y la versión triangular resume las asociaciones de interés.
**Interpretación:** la comparabilidad de los casos es directa, aunque cada celda continúa representando una relación bivariada distinta.
### Escenario B. Eliminación listwise
Se excluye a toda persona que presente una ausencia en cualquiera de las cinco variables. Todas las correlaciones utilizan un $N$ menor, pero mantienen un único subconjunto común.
Algunas asociaciones pueden cambiar porque no solo disminuye la cantidad de casos: también puede modificarse la composición social de la muestra analizada.
**Interpretación:** listwise facilita comparar coeficientes calculados con las mismas personas, pero puede reducir considerablemente la información disponible.
### Escenario C. Casos disponibles pairwise
Cada celda utiliza el máximo número de personas con información en ambas variables. Las correlaciones que no incluyen ingreso o satisfacción vital pueden conservar más casos. El $N$ varía y no existe una muestra única para toda la matriz.
**Interpretación:** pairwise conserva más observaciones en varias relaciones, pero exige informar y revisar el tamaño muestral de cada correlación.
#### Aprendizajes
- Más observaciones no eliminan automáticamente el sesgo.
- Un $N$ común facilita la comparabilidad entre casos.
- Pairwise conserva datos, pero utiliza subconjuntos distintos.
- El mecanismo de ausencia continúa siendo relevante.
- La estrategia debe reportarse.
- La interpretación debe concentrarse en las relaciones vinculadas con la pregunta social.
:::
</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 Matrices de Correlación
##### Número de correlaciones únicas
Para $k$ variables:
$$
\frac{k(k-1)}{2}
$$
Con cinco variables:
$$
\frac{5(5-1)}{2}=10
$$
La matriz contiene diez asociaciones únicas.
##### Diagonal
$$
r_{XX}=1
$$
Una variable se correlaciona perfectamente consigo misma. La diagonal organiza la matriz y no se interpreta como un hallazgo sustantivo.
##### Simetría
$$
r_{XY}=r_{YX}
$$
La posición reflejada contiene la misma correlación. Por eso, una matriz triangular puede eliminar la repetición.
##### Casos listwise
$$
N_{\text{listwise}}
$$
Corresponde al número de personas con información completa en todas las variables seleccionadas para la matriz.
##### Casos pairwise
$$
N_{XY}
$$
Corresponde al número de personas con información simultáneamente disponible en las variables $X$ e $Y$. Bajo pairwise, $N_{XY}$ puede cambiar entre celdas.
##### Matriz de correlaciones
$$
\mathbf{R}
=
\begin{pmatrix}
1 & r_{12} & \cdots & r_{1k}\\
r_{21} & 1 & \cdots & r_{2k}\\
\vdots & \vdots & \ddots & \vdots\\
r_{k1} & r_{k2} & \cdots & 1
\end{pmatrix}
$$
##### Matriz de tamaños muestrales
$$
\mathbf{N}
=
\begin{pmatrix}
N_1 & N_{12} & \cdots & N_{1k}\\
N_{21} & N_2 & \cdots & N_{2k}\\
\vdots & \vdots & \ddots & \vdots\\
N_{k1} & N_{k2} & \cdots & N_k
\end{pmatrix}
$$
- Bajo listwise, los tamaños fuera de la diagonal suelen ser iguales.
- Bajo pairwise, pueden diferir.
- La diagonal puede mostrar los casos disponibles por variable.
##### Mecanismos de ausencia
De manera introductoria, suele distinguirse entre:
- **MCAR:** la ausencia no se relaciona con variables observadas ni no observadas.
- **MAR:** la ausencia puede explicarse mediante información observada.
- **MNAR:** la ausencia se relaciona con información no observada o con el propio valor faltante.
::: {.callout-warning}
**Nota sobre validez matemática:** Una matriz calculada mediante pairwise puede presentar dificultades en ciertos procedimientos posteriores porque sus celdas no necesariamente provienen de un único conjunto de casos, lo que a veces hace que no posea todas las propiedades matemáticas requeridas.
:::
:::
:::
</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
set.seed(2026)
n <- 220
educacion <- pmin(
22,
pmax(6, round(rnorm(n, mean = 13.5, sd = 3)))
)
prestigio <- pmin(
100,
pmax(
10,
20 + 3.2 * educacion + rnorm(n, 0, 12)
)
)
ingreso <- pmax(
250000,
180000 +
52000 * educacion +
6500 * prestigio +
rnorm(n, 0, 380000)
)
seguridad <- pmin(
10,
pmax(
1,
2.5 + ingreso / 450000 + rnorm(n, 0, 1.4)
)
)
satisfaccion <- pmin(
10,
pmax(
1,
3.5 + 0.45 * seguridad + rnorm(n, 0, 1.5)
)
)
datos <- data.frame(
educacion,
ingreso,
prestigio,
seguridad,
satisfaccion
)
# Introducir datos perdidos
datos$ingreso[sample(seq_len(n), 32)] <- NA
datos$satisfaccion[sample(seq_len(n), 25)] <- NA
datos$seguridad[sample(seq_len(n), 15)] <- NA
### Revisar información disponible
variables <- c(
"educacion",
"ingreso",
"prestigio",
"seguridad",
"satisfaccion"
)
base <- datos[variables]
# Ausencias por variable
colSums(is.na(base))
# Casos disponibles por variable
colSums(!is.na(base))
# Casos completos en todas las variables
sum(complete.cases(base))
### Matriz listwise
casos_completos <- complete.cases(base)
base_listwise <- base[casos_completos, ]
matriz_listwise <- cor(
base_listwise,
use = "everything",
method = "pearson"
)
round(matriz_listwise, 3)
nrow(base_listwise)
# También puede utilizarse:
# cor(base, use = "complete.obs", method = "pearson")
### Matriz pairwise
matriz_pairwise <- cor(
base,
use = "pairwise.complete.obs",
method = "pearson"
)
round(matriz_pairwise, 3)
### Construir una matriz de N
matriz_n <- matrix(
NA_integer_,
nrow = length(variables),
ncol = length(variables),
dimnames = list(variables, variables)
)
for (i in seq_along(variables)) {
for (j in seq_along(variables)) {
matriz_n[i, j] <- sum(
complete.cases(
base[c(variables[i], variables[j])]
)
)
}
}
matriz_n
range(matriz_n[lower.tri(matriz_n)])
### Obtener la parte triangular
triangular <- matriz_pairwise
triangular[upper.tri(triangular)] <- NA
round(triangular, 3)
### Comparar estrategias
diferencia <- matriz_pairwise - matriz_listwise
round(diferencia, 3)
### Visualización simple en R base
imagen <- matriz_pairwise
image(
x = seq_len(ncol(imagen)),
y = seq_len(nrow(imagen)),
z = t(imagen[nrow(imagen):1, ]),
zlim = c(-1, 1),
axes = FALSE,
xlab = "",
ylab = "",
main = "Matriz de correlaciones"
)
axis(
1,
at = seq_along(variables),
labels = variables,
las = 2
)
axis(
2,
at = seq_along(variables),
labels = rev(variables),
las = 2
)
for (i in seq_along(variables)) {
for (j in seq_along(variables)) {
text(
j,
length(variables) - i + 1,
labels = sprintf("%.2f", imagen[i, j])
)
}
}
```
### Python {.unnumbered .unlisted}
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rng = np.random.default_rng(2026)
n = 220
educacion = np.clip(
np.rint(rng.normal(13.5, 3, n)),
6,
22,
)
prestigio = np.clip(
20 + 3.2 * educacion + rng.normal(0, 12, n),
10,
100,
)
ingreso = np.maximum(
250_000,
180_000
+ 52_000 * educacion
+ 6_500 * prestigio
+ rng.normal(0, 380_000, n),
)
seguridad = np.clip(
2.5 + ingreso / 450_000 + rng.normal(0, 1.4, n),
1,
10,
)
satisfaccion = np.clip(
3.5 + 0.45 * seguridad + rng.normal(0, 1.5, n),
1,
10,
)
datos = pd.DataFrame({
"educacion": educacion,
"ingreso": ingreso,
"prestigio": prestigio,
"seguridad": seguridad,
"satisfaccion": satisfaccion,
})
# Introducir valores perdidos
datos.loc[
rng.choice(datos.index, size=32, replace=False),
"ingreso",
] = np.nan
datos.loc[
rng.choice(datos.index, size=25, replace=False),
"satisfaccion",
] = np.nan
datos.loc[
rng.choice(datos.index, size=15, replace=False),
"seguridad",
] = np.nan
### Revisar los datos perdidos
variables = [
"educacion",
"ingreso",
"prestigio",
"seguridad",
"satisfaccion",
]
base = datos[variables].copy()
print("Ausencias por variable:")
print(base.isna().sum())
print("\nCasos disponibles por variable:")
print(base.notna().sum())
casos_completos = base.dropna()
print("\nCasos completos:", len(casos_completos))
### Matriz listwise
base_listwise = base.dropna()
matriz_listwise = base_listwise.corr(method="pearson")
print(matriz_listwise.round(3))
### Matriz pairwise
matriz_pairwise = base.corr(method="pearson")
print(matriz_pairwise.round(3))
### Matriz de N
matriz_n = pd.DataFrame(
index=variables,
columns=variables,
dtype=int,
)
for variable_fila in variables:
for variable_columna in variables:
matriz_n.loc[
variable_fila,
variable_columna,
] = base[
[variable_fila, variable_columna]
].dropna().shape[0]
matriz_n = matriz_n.astype(int)
print(matriz_n)
triangulo_inferior = np.tril(
np.ones(matriz_n.shape, dtype=bool),
k=-1,
)
n_unicos = matriz_n.to_numpy()[triangulo_inferior]
print(
"Rango de N entre correlaciones:",
int(n_unicos.min()),
"–",
int(n_unicos.max()),
)
### Matriz triangular
mascara_superior = np.triu(
np.ones(matriz_pairwise.shape, dtype=bool),
k=1,
)
matriz_triangular = matriz_pairwise.mask(mascara_superior)
print(matriz_triangular.round(3))
### Comparar estrategias
diferencia = matriz_pairwise - matriz_listwise
print(diferencia.round(3))
### Visualización simple
fig, ax = plt.subplots()
imagen = ax.imshow(
matriz_pairwise.to_numpy(),
vmin=-1,
vmax=1,
)
ax.set_xticks(range(len(variables)))
ax.set_yticks(range(len(variables)))
ax.set_xticklabels(
variables,
rotation=45,
ha="right",
)
ax.set_yticklabels(variables)
for i in range(len(variables)):
for j in range(len(variables)):
valor = matriz_pairwise.iloc[i, j]
ax.text(
j,
i,
f"{valor:.2f}",
ha="center",
va="center",
)
fig.colorbar(
imagen,
ax=ax,
label="Correlación",
)
ax.set_title("Matriz de correlaciones")
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:** *Se estimó una matriz de correlación de Pearson para el conjunto de variables actitudinales aplicando una estrategia de eliminación por pares para el tratamiento de valores faltantes (`use = "pairwise.complete.obs"`), con tamaños de muestra fluctuando entre $N_{\text{mín}} = 142$ y $N_{\text{máx}} = 200$ casos por celda.*
- **Simple:** *La matriz resume en una sola tabla todas las asociaciones posibles entre las preguntas del estudio, mostrando con claridad qué variables caminan juntas y aprovechando la información de todas las personas que respondieron cada par de preguntas.*
- **Sociológico:** *El análisis de la matriz bivariada revela un patrón de asociación coherente entre las percepciones de desigualdad estructural y las evaluaciones del conflicto social ($r = +0,35, p < 0,001$). El manejo metodológico de la no respuesta mediante eliminación bivariada por pares permitió descartar que estas correlaciones estén impulsadas por la pérdida de encuestados en ítems sensibles del cuestionario, consolidando la robustez exploratoria de nuestro mapa analítico.*
:::
</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. 13: Matrices intercorrelacionales).
- **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. 9 y 10: Construcción e interpretación de matrices bivariadas en sociología).
- **Navarro, Danielle. (2018).** *Learning Statistics with R*. Manejo de `NA`, `complete.obs` frente a `pairwise.complete.obs` en `cor()`.
:::
</details>
:::
::: {.rs-lesson-section #lo-esencial}
## Lo esencial
Una matriz organiza las correlaciones bivariadas entre varias variables. Cada celda cruza una fila con una columna, la diagonal contiene autocorrelaciones iguales a 1 y la simetría repite los resultados a ambos lados. Por eso, una matriz triangular facilita reconocer patrones sin duplicar información. Cuando existen datos perdidos, listwise utiliza un único conjunto de casos completos, mientras que pairwise selecciona casos disponibles para cada pareja. La matriz de $N$ muestra cuántas personas sostienen cada coeficiente y permite evaluar comparabilidad. Conservar más casos no garantiza menor sesgo, y un tamaño muestral común tampoco asegura representatividad. Todo reporte debe informar variables, estrategia, tamaños efectivos y asociaciones principales. La matriz continúa siendo bivariada: no controla terceras variables ni demuestra causalidad.
> **Una matriz no se interpreta solo con coeficientes: cada celda debe leerse junto con las variables, los casos utilizados y la estrategia de análisis.**
:::
```{=html}
<nav class="rs-lesson-footer-nav rs-inference-footer-nav" aria-label="Navegación entre módulos">
<a href="m10_correlaciones_ordinales_spearman_kendall.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">M10. Correlaciones ordinales: Spearman y Kendall</span>
</span>
</a>
<a href="m12_baterias_consistencia_indices.qmd" class="rs-nav-link rs-nav-link--next">
<span class="rs-nav-link__copy">
<span class="rs-nav-link__label">Siguiente módulo</span>
<span class="rs-nav-link__title">M12. Baterías, consistencia e índices</span>
</span>
<span class="rs-nav-link__arrow" aria-hidden="true">→</span>
</a>
</nav>
```
:::