Estadística Correlacional Interactiva
  • Inicio
  • Inferencia
    • M01. Datos, medición y variabilidad
    • M02. Probabilidad y distribuciones muestrales
    • M03. Curva normal y puntajes Z
    • M04. Teorema del límite central y error estándar
    • M05. Intervalos de confianza
    • M06. Test de hipótesis y lógica de falsación
    • M07. Hipótesis direccionales y no direccionales
  • Asociación bivariada
    • M08. Asociación, covarianza y correlación de Pearson
    • M09. Inferencia y magnitud de la correlación
    • M10. Correlaciones ordinales: Spearman y Kendall
    • M11. Matrices de correlación y casos perdidos
    • M12. Baterías, consistencia e índices
    • M13. Variables categóricas y tablas de contingencia
    • M14. Chi-cuadrado y magnitud de la asociación
  • Glosario

Unidad 2 · Asociación bivariada · Módulo 12

M12. Baterías, consistencia e índices

En el M11 utilizamos matrices para observar varias asociaciones al mismo tiempo. Ahora aplicaremos esa lógica a fenómenos que no pueden medirse directamente mediante una sola variable. Un constructo es una idea teórica, mientras que un indicador es una observación parcial relacionada con ella. Al reunir varios ítems formamos una batería, pero combinar sus respuestas exige revisar contenido, dirección y correlaciones. La consistencia interna y el alfa de Cronbach aportan información sobre el comportamiento conjunto, aunque no demuestran validez ni una sola dimensión. Construir un índice requiere decisiones explícitas y justificadas.

Pregunta Social

¿Podemos representar la seguridad económica percibida mediante un solo índice?

La seguridad económica percibida corresponde a la evaluación subjetiva que una persona realiza sobre su capacidad para cubrir gastos, mantener ingresos, enfrentar imprevistos y proyectar su futuro económico. No es una característica que pueda observarse directamente de la misma manera que la edad o el número de años de educación.

Nuestra unidad de análisis será la persona ocupada. Para aproximarnos al constructo utilizaremos seis preguntas. Cada una funcionará como un ítem o indicador parcial. Algunas se referirán a la capacidad de cubrir gastos, otras a la estabilidad, los imprevistos, la preocupación o la incertidumbre.

Ningún ítem representa por sí solo todo el fenómeno. Una persona podría sentirse capaz de cubrir sus gastos actuales y, al mismo tiempo, tener poca confianza en la continuidad de sus ingresos. Por eso, una batería intenta reunir distintas manifestaciones relacionadas.

Las respuestas seguirán una escala de 1 a 5, desde “Muy en desacuerdo” hasta “Muy de acuerdo”. Cuatro ítems estarán redactados en una dirección positiva y dos en una dirección negativa. Antes de combinarlos, será necesario alinear su interpretación mediante recodificación.

La matriz entre ítems permitirá observar si las respuestas comparten un patrón. Alfa de Cronbach resumirá una forma de consistencia interna, pero no bastará para decidir que existe una escala válida. El índice solo podrá considerarse una síntesis provisional después de revisar contenido, dirección, estructura y reglas de cálculo.

Los datos y las respuestas utilizados en las visualizaciones, cálculos y ejemplos son construidos con fines pedagógicos. La batería no corresponde a una escala validada ni a un instrumento profesional.

La batería provisional

Detalle de ítems de la batería de seguridad
Ítem Contenido abreviado Dirección original Interpretación antes de recodificar
I1 Cubrir gastos mensuales Positiva Un valor alto indica mayor seguridad
I2 Enfrentar un gasto inesperado Positiva Un valor alto indica mayor seguridad
I3 Mantener los ingresos Positiva Un valor alto indica mayor seguridad
I4 Preocupación por necesidades básicas Negativa Un valor alto indica menor seguridad
I5 Estabilidad de la situación económica Positiva Un valor alto indica mayor seguridad
I6 Incertidumbre sobre el futuro económico Negativa Un valor alto indica menor seguridad

Escala de respuesta

  1. Muy en desacuerdo.
  2. En desacuerdo.
  3. Ni de acuerdo ni en desacuerdo.
  4. De acuerdo.
  5. Muy de acuerdo.

En I1, I2, I3 e I5, una respuesta alta representa mayor seguridad económica percibida. En I4 e I6 ocurre lo contrario: una respuesta alta indica preocupación o incertidumbre.

Por eso, I4 e I6 no deben promediarse directamente con los demás ítems. Primero se invierte su dirección numérica:

\[ 1\leftrightarrow5,\qquad 2\leftrightarrow4,\qquad 3\leftrightarrow3 \]

Recodificar no cambia lo que la persona respondió. Cambia el sentido numérico con el que esa respuesta se incorpora al índice. Después de la recodificación, un valor alto en cualquiera de los seis ítems representa mayor seguridad económica percibida.

Dos escenarios para una misma batería

Escenario A · Batería relativamente coherente

Los ítems invertidos ya fueron recodificados. La matriz presenta correlaciones mayoritariamente positivas, pero no perfectas. Algunos indicadores están más relacionados que otros y cada uno conserva información específica.

El patrón común permite defender provisionalmente un índice promedio, siempre que el contenido de las preguntas corresponda al constructo y no existan señales claras de varias dimensiones.

Los ítems parecen compartir una regularidad general después de alinear su dirección, aunque todavía debe evaluarse si representan adecuadamente el constructo.

Escenario B · Batería problemática

I4 permanece en su dirección original y aparece relacionado negativamente con los ítems positivos. I6 comparte poca información con el resto y podría estar captando ansiedad económica general más que seguridad económica. La matriz también puede mostrar dos grupos internos.

En estas condiciones, alfa cambia al recodificar o excluir preguntas y el promedio mezcla significados diferentes.

Antes de construir un índice deben revisarse la dirección, el contenido y la estructura interna de la batería.

Eliminar un ítem solo porque aumenta alfa puede mejorar una cifra y, al mismo tiempo, empobrecer la cobertura conceptual del constructo.

Antes de construir un índice no basta con observar un único coeficiente. Es necesario revisar qué pretende medir cada ítem, su dirección, sus correlaciones recíprocas, si aparecen bloques o agrupaciones, y qué regla se usará ante casos perdidos.

Idea Central

1

Del constructo a los indicadores

Un constructo es un fenómeno definido teóricamente que no se observa de manera directa. La seguridad económica percibida, por ejemplo, incluye estabilidad, capacidad de respuesta y confianza en el futuro.

Cada ítem representa una manifestación parcial. También contiene variación específica relacionada con su redacción, comprensión o situación particular. Utilizar varias preguntas permite cubrir diferentes aspectos, pero una batería más larga no es automáticamente mejor.

Una respuesta individual no es el constructo: es una observación parcial relacionada con él.

2

De los indicadores a la consistencia

La matriz entre ítems permite examinar cómo se relacionan las preguntas.

  • Una fila con correlaciones negativas puede revelar un ítem invertido sin recodificar.
  • Correlaciones bajas pueden sugerir ruido, ambigüedad o contenido distinto.
  • Dos bloques internos pueden indicar más de una dimensión.
  • Correlaciones casi perfectas pueden reflejar redundancia.

Alfa de Cronbach resume parte de la covariación del conjunto, pero no reemplaza la matriz ni la evaluación del contenido.

La consistencia es una propiedad del conjunto de respuestas, no una prueba de que el instrumento mida correctamente el fenómeno propuesto.

3

De la consistencia al índice

Combinar ítems requiere que todos apunten hacia la misma dirección interpretativa. También exige justificar que sus contenidos pueden resumirse en una sola puntuación y definir cuántas respuestas necesita cada persona.

El promedio conserva la escala original de 1 a 5. Sin embargo, los casos perdidos modifican la cobertura: una regla estricta conserva mayor comparabilidad entre ítems, mientras que una regla flexible permite calcular el índice para más personas.

¿Cómo pasamos del constructo al índice?

El recorrido guiado utilizará una base pequeña para mostrar la cadena de decisiones que conecta una idea teórica con una puntuación individual. Se distinguirán constructo e indicadores, se revisará la variación específica de cada ítem, se alineará la dirección de una pregunta invertida y se observará la matriz. Después se separarán consistencia, dimensionalidad y validez, antes de construir un promedio mediante una regla mínima de respuestas.

Laboratorio interactivo

Nota pedagógica: Explora la coherencia de una batería, alinea ítems invertidos y compara reglas de construcción para distinguir consistencia interna, información compartida y puntuaciones individuales.

Después de explorar

Los ítems deben apuntar hacia una dirección común antes de combinarse. Una correlación negativa puede deberse simplemente a que una pregunta está invertida, pero también puede revelar un contenido diferente. La recodificación debe realizarse antes de interpretar la matriz, alfa o el índice.

Cuando aumenta el ruido de un indicador, sus correlaciones con el resto suelen debilitarse. Si aparecen dos bloques, la batería podría contener más de una dimensión, aunque alfa global sea relativamente alto. Además, alfa depende de la covariación y del número de ítems: agregar preguntas similares puede elevarlo sin aportar mayor cobertura conceptual.

Excluir un ítem no debe ser una respuesta automática a “alfa si se elimina”. La decisión también debe considerar qué aspecto dejaría de medirse. Finalmente, cambiar la regla mínima de respuestas modifica el número de personas con índice y la cantidad de información que sostiene cada puntuación. Todas estas decisiones deben informarse.

Del fenómeno a la puntuación

El constructo corresponde al fenómeno teórico que deseamos representar. Cada ítem es un indicador parcial y varios ítems relacionados forman una batería. La existencia de varias preguntas no garantiza por sí sola que todas midan lo mismo.

Los ítems invertidos deben recodificarse antes de evaluar el patrón conjunto. La matriz ayuda a detectar direcciones inconsistentes, indicadores aislados, bloques y redundancias. Alfa resume una forma de consistencia interna, pero no demuestra validez ni unidimensionalidad. Tampoco convierte “alfa si se elimina” en una orden para retirar preguntas.

Construir un índice exige que las direcciones estén alidadas y que exista una justificación sustantiva para combinar los contenidos. El promedio debe acompañarse de una regla mínima de respuestas, aplicada de la misma forma a todas las personas. El reporte debe documentar los ítems, la recodificación, la evidencia de consistencia, las decisiones de inclusión y las limitaciones de la medición.

Advertencia

Advertencia metodológica: Promediar ítems con escalas diferentes requiere armonizar previamente su métrica o justificar otro procedimiento.

Evita estas interpretaciones

Interpretaciones problemáticas en consistencia e índices
Interpretación problemática Corrección
“Existe un punto de corte universal de alfa.” La interpretación depende del propósito, la batería, la población y el contexto.
“El ítem debe eliminarse si alfa aumenta.” “Alfa si se elimina” es un diagnóstico y debe evaluarse junto con el contenido.
“Más ítems siempre mejoran la escala.” Pueden aumentar redundancia sin ampliar cobertura conceptual.
“Ítems casi idénticos siempre son deseables.” Pueden elevar alfa y aportar muy poca información nueva.
“Una ausencia debe reemplazarse por cero.” La ausencia indica que no se observó la respuesta; cero tendría otro significado.
“Permitir menos respuestas no modifica el índice.” Cambia la cantidad de ítems que sostienen algunas puntuaciones y la cobertura.
“El promedio puede calcularse antes de alinear direcciones.” Mezclaría significados opuestos y produciría una puntuación ambigua.
“Un índice es objetivo porque se obtuvo mediante una fórmula.” Su construcción depende de decisiones teóricas y metodológicas.
“La puntuación demuestra la situación económica real.” Resume percepciones declaradas, no una medida completa de recursos objetivos.
Ejemplo aplicado: un alfa alto no responde todas las preguntas Ver ejemplo Ocultar ejemplo ↓

Los escenarios siguientes comparan tres formas en las que puede comportarse una batería.

Escenarios de comportamiento de baterías
Escenario Patrón de la matriz Comportamiento de alfa Problema principal Decisión prudente
A. Batería coherente Correlaciones positivas distribuidas Compatible con consistencia Falta evaluar contenido, dimensionalidad y validez Construir un índice provisional y reportar límites
B. Ítem invertido sin recodificar Una fila y columna negativas Disminuye o resulta difícil de interpretar Dirección inconsistente Recodificar antes de evaluar
C. Dos grupos de ítems Dos bloques internos Puede mantenerse relativamente alto Posible multidimensionalidad Revisar teoría y aplicar análisis posteriores

Escenario A. Batería coherente

Los seis ítems están orientados en la misma dirección y presentan correlaciones positivas de magnitud variable. No son idénticos, por lo que cada uno conserva cierta información específica.

Interpretación: la batería muestra regularidad interna, pero todavía deben justificarse su contenido, dimensionalidad y validez. Un índice promedio puede utilizarse como síntesis provisional.

Escenario B. Ítem invertido sin recodificar

I4 presenta correlaciones negativas porque una respuesta alta indica mayor preocupación, mientras que una respuesta alta en los demás ítems indica mayor seguridad. Alfa disminuye y el promedio mezcla direcciones.

Interpretación: la relación negativa se debe al sentido del ítem y no necesariamente a que mida otro fenómeno. La recodificación debe preceder a cualquier evaluación conjunta.

Escenario C. Dos grupos de ítems

I1, I2 e I3 forman un bloque relacionado con capacidad y continuidad de ingresos. I4, I5 e I6 forman otro bloque asociado con preocupación y estabilidad subjetiva. Alfa global puede mantenerse porque existen relaciones dentro de cada grupo.

Interpretación: un alfa global relativamente alto no demuestra que todos los ítems representen una sola dimensión. Podría ser necesario estudiar dos subíndices o aplicar procedimientos posteriores.

Advertencia

Varios ítems casi idénticos pueden elevar alfa sin ampliar la representación del constructo. La redundancia numérica no equivale a mejor cobertura conceptual.

Aprendizajes

  • Alfa resume, no valida.
  • La matriz permite diagnosticar.
  • La recodificación precede al índice.
  • La dimensionalidad requiere evidencia adicional.
  • El contenido de los ítems sigue siendo central.
Fórmulas mínimas y complementarias

Fórmulas de Consistencia e Índices

Recodificación general

\[ X_{\text{rec}} = (\max+\min)-X \]

Para una escala de 1 a 5:

\[ X_{\text{rec}}=6-X \]

Por tanto:

\[ 1\rightarrow5,\quad 2\rightarrow4,\quad 3\rightarrow3,\quad 4\rightarrow2,\quad 5\rightarrow1 \]

La respuesta sustantiva no cambia. Cambia la dirección numérica para que, después de recodificar, un valor alto indique mayor seguridad.

Índice promedio

\[ I_i = \frac{\sum_{j=1}^{k_i}X_{ij}}{k_i} \]

donde: - \(I_i\): índice de la persona \(i\); - \(X_{ij}\): respuesta de la persona \(i\) al ítem \(j\); - \(k_i\): número de respuestas válidas utilizadas.

El índice mantiene la escala 1–5. Solo se calcula cuando \(k_i\) cumple la regla mínima definida.

Alfa de Cronbach

\[ \alpha = \frac{k}{k-1} \left(1- \frac{\sum_{j=1}^{k}s_j^2}{s_T^2}\right) \]

donde: - \(k\): número de ítems; - \(s_j^2\): varianza del ítem \(j\); - \(s_T^2\): varianza de la puntuación total.

Alfa compara la suma de las varianzas individuales con la variación de la puntuación total. Tiende a aumentar cuando los ítems covarían más y también puede aumentar al agregar ítems relacionados. No es una prueba de validez.

Correlación media entre ítems

\[ \bar r = \frac{\sum_{i<j}r_{ij}}{k(k-1)/2} \]

Resume la correlación promedio entre las parejas únicas de ítems. Complementa alfa y ayuda a distinguir una batería larga con relaciones modestas de una batería corta con relaciones más concentradas.

Relación entre alfa, \(k\) y correlación media

\[ \alpha_{\text{est}} = \frac{k\bar r}{1+(k-1)\bar r} \]

Esta relación pedagógica muestra que alfa depende de la cantidad de ítems y la correlación media entre ellos.

Alfa si se elimina un ítem

Se recalcula alfa utilizando \(k-1\) ítems. El cambio permite revisar la sensibilidad del conjunto, pero no decide automáticamente la exclusión.

Total frente a promedio

La suma cambia su rango al variar el número de ítems. El promedio conserva la escala original. Si todas las personas responden el mismo número de ítems, suma y promedio contienen información equivalente para ordenar casos. Cuando existen respuestas incompletas, la regla debe definirse explícitamente.

Código en R y Python
  • R
  • Python
set.seed(2026)

n <- 150

# Tendencia común de seguridad económica percibida
seguridad_latente <- rnorm(n)

# Ítems positivos en escala 1–5
crear_item <- function(señal, ruido = 0.8) {
  continuo <- 3 + señal + rnorm(length(señal), 0, ruido)
  pmin(5, pmax(1, round(continuo)))
}

I1 <- crear_item(0.80 * seguridad_latente)
I2 <- crear_item(0.75 * seguridad_latente)
I3 <- crear_item(0.70 * seguridad_latente)
I5 <- crear_item(0.78 * seguridad_latente)

# Ítems negativos: una respuesta alta indica menor seguridad
I4 <- crear_item(-0.72 * seguridad_latente)
I6 <- crear_item(-0.62 * seguridad_latente, ruido = 1.0)

datos <- data.frame(I1, I2, I3, I4, I5, I6)

# Introducir algunas respuestas perdidas
datos$I2[sample(seq_len(n), 8)] <- NA
datos$I4[sample(seq_len(n), 10)] <- NA
datos$I6[sample(seq_len(n), 12)] <- NA

### Revisar frecuencias y ausencias
lapply(datos, table, useNA = "ifany")
colSums(is.na(datos))

### Recodificar ítems invertidos
datos_rec <- datos
datos_rec$I4 <- 6 - datos$I4
datos_rec$I6 <- 6 - datos$I6

head(
  data.frame(
    I4_original = datos$I4,
    I4_recodificado = datos_rec$I4,
    I6_original = datos$I6,
    I6_recodificado = datos_rec$I6
  )
)

### Matrices antes y después
matriz_original <- cor(datos, use = "pairwise.complete.obs")
matriz_recodificada <- cor(datos_rec, use = "pairwise.complete.obs")

round(matriz_original, 2)
round(matriz_recodificada, 2)

### Función para alfa de Cronbach
cronbach_alpha <- function(base) {
  base <- as.data.frame(base)
  base_completa <- base[complete.cases(base), , drop = FALSE]

  k <- ncol(base_completa)

  if (k < 2 || nrow(base_completa) < 2) {
    return(NA_real_)
  }

  varianzas_items <- vapply(base_completa, var, numeric(1))
  puntuacion_total <- rowSums(base_completa)
  varianza_total <- var(puntuacion_total)

  if (is.na(varianza_total) || varianza_total <= 0) {
    return(NA_real_)
  }

  (k / (k - 1)) * (1 - sum(varianzas_items) / varianza_total)
}

alpha_original <- cronbach_alpha(datos)
alpha_recodificado <- cronbach_alpha(datos_rec)

alpha_original
alpha_recodificado

### Correlación media entre ítems
correlacion_media <- function(base) {
  matriz <- cor(base, use = "pairwise.complete.obs")
  mean(matriz[lower.tri(matriz)], na.rm = TRUE)
}

correlacion_media(datos_rec)

### Alfa si se elimina cada ítem
alpha_si_se_elimina <- sapply(
  names(datos_rec),
  function(item) {
    cronbach_alpha(datos_rec[setdiff(names(datos_rec), item)])
  }
)

data.frame(
  item_eliminado = names(alpha_si_se_elimina),
  alpha = as.numeric(alpha_si_se_elimina)
)

### Construir el índice con un mínimo de respuestas
minimo_respuestas <- 5
respuestas_validas <- rowSums(!is.na(datos_rec))

indice <- rowMeans(datos_rec, na.rm = TRUE)
indice[respuestas_validas < minimo_respuestas] <- NA_real_

datos_rec$indice_seguridad <- indice

sum(!is.na(datos_rec$indice_seguridad))
sum(is.na(datos_rec$indice_seguridad))
summary(datos_rec$indice_seguridad)

### Visualizar la matriz
matriz <- matriz_recodificada
items <- colnames(matriz)

image(
  x = seq_along(items),
  y = seq_along(items),
  z = t(matriz[nrow(matriz):1, ]),
  zlim = c(-1, 1),
  axes = FALSE,
  xlab = "",
  ylab = "",
  main = "Matriz entre ítems recodificados"
)

axis(1, at = seq_along(items), labels = items)
axis(2, at = seq_along(items), labels = rev(items))

for (i in seq_along(items)) {
  for (j in seq_along(items)) {
    text(j, length(items) - i + 1, sprintf("%.2f", matriz[i, j]))
  }
}

### Visualizar la distribución del índice
hist(
  datos_rec$indice_seguridad,
  breaks = seq(1, 5, by = 0.25),
  xlim = c(1, 5),
  main = "Índice de seguridad económica",
  xlab = "Promedio de los ítems"
)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(2026)

n = 150
seguridad_latente = rng.normal(size=n)


def crear_item(señal: np.ndarray, ruido: float = 0.8) -> np.ndarray:
    continuo = 3 + señal + rng.normal(0, ruido, len(señal))
    return np.clip(np.rint(continuo), 1, 5)


datos = pd.DataFrame({
    "I1": crear_item(0.80 * seguridad_latente),
    "I2": crear_item(0.75 * seguridad_latente),
    "I3": crear_item(0.70 * seguridad_latente),
    "I4": crear_item(-0.72 * seguridad_latente),
    "I5": crear_item(0.78 * seguridad_latente),
    "I6": crear_item(-0.62 * seguridad_latente, ruido=1.0),
})

# Introducir algunas respuestas perdidas
datos.loc[
    rng.choice(datos.index, size=8, replace=False), "I2"
] = np.nan
datos.loc[
    rng.choice(datos.index, size=10, replace=False), "I4"
] = np.nan
datos.loc[
    rng.choice(datos.index, size=12, replace=False), "I6"
] = np.nan

### Revisar frecuencias y ausencias
for item in datos.columns:
    print(f"\n{item}")
    print(datos[item].value_counts(dropna=False).sort_index())

print("\nAusencias:")
print(datos.isna().sum())

### Recodificar I4 e I6
datos_rec = datos.copy()
datos_rec["I4"] = 6 - datos_rec["I4"]
datos_rec["I6"] = 6 - datos_rec["I6"]

comparacion = pd.DataFrame({
    "I4_original": datos["I4"],
    "I4_recodificado": datos_rec["I4"],
    "I6_original": datos["I6"],
    "I6_recodificado": datos_rec["I6"],
})
print(comparacion.head())

### Comparar matrices
matriz_original = datos.corr()
matriz_recodificada = datos_rec.corr()

print("Antes de recodificar:")
print(matriz_original.round(2))

print("\nDespués de recodificar:")
print(matriz_recodificada.round(2))


### Función para alfa de Cronbach
def cronbach_alpha(base: pd.DataFrame) -> float:
    """Calcula alfa usando casos completos del conjunto."""
    limpia = base.dropna()

    if limpia.shape[1] < 2:
        raise ValueError("Se requieren al menos dos ítems.")

    if limpia.shape[0] < 2:
        return np.nan

    varianzas_items = limpia.var(ddof=1).sum()
    puntuacion_total = limpia.sum(axis=1)
    varianza_total = puntuacion_total.var(ddof=1)

    if not np.isfinite(varianza_total) or np.isclose(varianza_total, 0):
        return np.nan

    k = limpia.shape[1]

    return float((k / (k - 1)) * (1 - varianzas_items / varianza_total))


alpha_original = cronbach_alpha(datos)
alpha_recodificado = cronbach_alpha(datos_rec)

print("Alfa original:", alpha_original)
print("Alfa recodificado:", alpha_recodificado)


### Correlación media entre ítems
def correlacion_media(base: pd.DataFrame) -> float:
    matriz = base.corr()
    mascara = np.tril(np.ones(matriz.shape, dtype=bool), k=-1)
    valores = matriz.to_numpy()[mascara]
    return float(np.nanmean(valores))


print("Correlación media:", correlacion_media(datos_rec))

### Alfa si se elimina cada ítem
resultados_eliminacion = []

for item in datos_rec.columns:
    restantes = datos_rec.drop(columns=item)
    resultados_eliminacion.append({
        "item_eliminado": item,
        "alpha": cronbach_alpha(restantes),
    })

tabla_eliminacion = pd.DataFrame(resultados_eliminacion)
print(tabla_eliminacion)

### Construir el índice
minimo_respuestas = 5
respuestas_validas = datos_rec.notna().sum(axis=1)

indice = datos_rec.mean(axis=1, skipna=True)
indice = indice.where(respuestas_validas >= minimo_respuestas)

datos_rec["indice_seguridad"] = indice

print("Casos con índice:", datos_rec["indice_seguridad"].notna().sum())
print("Casos excluidos:", datos_rec["indice_seguridad"].isna().sum())
print(datos_rec["indice_seguridad"].describe())

### Visualizar la matriz
items = list(matriz_recodificada.columns)
fig, ax = plt.subplots()

imagen = ax.imshow(
    matriz_recodificada.to_numpy(),
    vmin=-1,
    vmax=1,
)

ax.set_xticks(range(len(items)))
ax.set_yticks(range(len(items)))
ax.set_xticklabels(items)
ax.set_yticklabels(items)

for i in range(len(items)):
    for j in range(len(items)):
        valor = matriz_recodificada.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 entre ítems recodificados")
plt.tight_layout()
plt.show()

### Visualizar el índice
fig, ax = plt.subplots()

ax.hist(
    datos_rec["indice_seguridad"].dropna(),
    bins=np.arange(1, 5.25, 0.25),
)

ax.set_xlim(1, 5)
ax.set_xlabel("Índice de seguridad económica")
ax.set_ylabel("Frecuencia")
ax.set_title("Distribución del índice")
plt.show()
Cómo Reportarlo

Plantillas de Comunicación

  • Técnico: Se construyó un índice aditivo promedio (\(1\) a \(5\)) de Percepción de Conflicto Social sintetizando tres ítems de una batería del cuestionario, previa inversión escalar del ítem negativo (\(6 - X_i\)) e inspección de consistencia intercorrelacional (\(\bar{r} = 0,42, N = 200\)).
  • Simple: Combinamos y promediamos varias preguntas complementarias del cuestionario para obtener una sola nota o variable que mide cuánto conflicto percibe cada encuestado en el país.
  • Sociológico: Para superar el sesgo y la fragilidad de los indicadores aislados, sintetizamos la dimensión latente de Percepción de Conflicto Social mediante un índice promedio aditivo de tres ítems (\(\bar{X} = 3,02, s = 0,68\)). La alineación metodológica de las escalas inversas y la consistencia de su matriz de correlaciones respaldan la validez de constructo de esta nueva variable sintética para la investigación empírica.
Bibliografía
  • Ritchey, Ferris J. (2008). Estadística para las ciencias sociales. McGraw-Hill. (Cap. 13 y 14: Conceptualización, operacionalización e índices de medición en la investigación sociológica).
  • 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. 11: Transformación de variables, recodificación y construcción de índices escalares).
  • Agresti, Alan; Franklin, Christine; y Klingenberg, Bernhard. (2023). Statistics: The art and science of learning from data. Pearson. (Cap. 3: Combining quantitative variables and composite measures).

Lo esencial

Un constructo es un fenómeno teórico que se aproxima mediante indicadores. Cada ítem aporta información parcial y variación específica, y varios ítems forman una batería. Antes de combinarlos deben revisarse su contenido, dirección y matriz de correlaciones. Los ítems invertidos requieren recodificación para que todas las puntuaciones apunten hacia la misma interpretación. Alfa de Cronbach resume una forma de consistencia interna y depende tanto de la covariación como del número de ítems. No demuestra validez, unidimensionalidad ni calidad total. La construcción de un índice promedio exige justificar la cobertura conceptual, establecer una regla mínima de respuestas y documentar casos válidos y excluidos. Las ausencias no deben reemplazarse por cero y “alfa si se elimina” no es una orden automática.

Construir un índice es una decisión de medición fundamentada, no el resultado automático de un alfa alto.

← Módulo anterior M11. Matrices de correlación y casos perdidos Siguiente módulo M13. Variables categóricas y tablas de contingencia →
Ejecutar el código
---
pagetitle: "M12. Baterías, consistencia e índices | Estadística Correlacional Interactiva"
page-layout: custom
toc: false
body-class: rs-lesson-page inferencia-module m12-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 12
:::

# M12. Baterías, consistencia e índices {.m01-title}

::: {.m01-module-lead .rs-module-lead}
En el M11 utilizamos matrices para observar varias asociaciones al mismo tiempo. Ahora aplicaremos esa lógica a fenómenos que no pueden medirse directamente mediante una sola variable. Un **constructo** es una idea teórica, mientras que un **indicador** es una observación parcial relacionada con ella. Al reunir varios ítems formamos una batería, pero combinar sus respuestas exige revisar contenido, dirección y correlaciones. La consistencia interna y el alfa de Cronbach aportan información sobre el comportamiento conjunto, aunque no demuestran validez ni una sola dimensión. Construir un índice requiere decisiones explícitas y justificadas.
:::
:::

::: {.rs-lesson-section #pregunta-social}
## Pregunta Social

::: {.m01-editorial-block}
### ¿Podemos representar la seguridad económica percibida mediante un solo índice? {.m01-social-question-title}

::: {.m01-social-question-intro}
La **seguridad económica percibida** corresponde a la evaluación subjetiva que una persona realiza sobre su capacidad para cubrir gastos, mantener ingresos, enfrentar imprevistos y proyectar su futuro económico. No es una característica que pueda observarse directamente de la misma manera que la edad o el número de años de educación.

Nuestra unidad de análisis será la **persona ocupada**. Para aproximarnos al constructo utilizaremos seis preguntas. Cada una funcionará como un **ítem** o indicador parcial. Algunas se referirán a la capacidad de cubrir gastos, otras a la estabilidad, los imprevistos, la preocupación o la incertidumbre.

Ningún ítem representa por sí solo todo el fenómeno. Una persona podría sentirse capaz de cubrir sus gastos actuales y, al mismo tiempo, tener poca confianza en la continuidad de sus ingresos. Por eso, una batería intenta reunir distintas manifestaciones relacionadas.

Las respuestas seguirán una escala de 1 a 5, desde “Muy en desacuerdo” hasta “Muy de acuerdo”. Cuatro ítems estarán redactados en una dirección positiva y dos en una dirección negativa. Antes de combinarlos, será necesario alinear su interpretación mediante recodificación.

La matriz entre ítems permitirá observar si las respuestas comparten un patrón. Alfa de Cronbach resumirá una forma de consistencia interna, pero no bastará para decidir que existe una escala válida. El índice solo podrá considerarse una síntesis provisional después de revisar contenido, dirección, estructura y reglas de cálculo.
:::

::: {.rs-callout-note .rs-callout-note--m01-blue}
Los datos y las respuestas utilizados en las visualizaciones, cálculos y ejemplos son construidos con fines pedagógicos. La batería no corresponde a una escala validada ni a un instrumento profesional.
:::

### La batería provisional

::: {.m01-table-wrap}
| Ítem | Contenido abreviado | Dirección original | Interpretación antes de recodificar |
|---|---|---|---|
| **I1** | Cubrir gastos mensuales | Positiva | Un valor alto indica mayor seguridad |
| **I2** | Enfrentar un gasto inesperado | Positiva | Un valor alto indica mayor seguridad |
| **I3** | Mantener los ingresos | Positiva | Un valor alto indica mayor seguridad |
| **I4** | Preocupación por necesidades básicas | Negativa | Un valor alto indica menor seguridad |
| **I5** | Estabilidad de la situación económica | Positiva | Un valor alto indica mayor seguridad |
| **I6** | Incertidumbre sobre el futuro económico | Negativa | Un valor alto indica menor seguridad |
: Detalle de ítems de la batería de seguridad {.m01-table}
:::

#### Escala de respuesta

1. Muy en desacuerdo.
2. En desacuerdo.
3. Ni de acuerdo ni en desacuerdo.
4. De acuerdo.
5. Muy de acuerdo.

En I1, I2, I3 e I5, una respuesta alta representa mayor seguridad económica percibida. En I4 e I6 ocurre lo contrario: una respuesta alta indica preocupación o incertidumbre.

Por eso, I4 e I6 no deben promediarse directamente con los demás ítems. Primero se invierte su dirección numérica:

$$
1\leftrightarrow5,\qquad
2\leftrightarrow4,\qquad
3\leftrightarrow3
$$

Recodificar no cambia lo que la persona respondió. Cambia el sentido numérico con el que esa respuesta se incorpora al índice. Después de la recodificación, un valor alto en cualquiera de los seis ítems representa mayor seguridad económica percibida.

### Dos escenarios para una misma batería

::: {.m01-group-comparison-box}
::: {.m01-group-col}
[Escenario A · Batería relativamente coherente]{.m01-group-badge .m01-badge-a}

Los ítems invertidos ya fueron recodificados. La matriz presenta correlaciones mayoritariamente positivas, pero no perfectas. Algunos indicadores están más relacionados que otros y cada uno conserva información específica.

El patrón común permite defender provisionalmente un índice promedio, siempre que el contenido de las preguntas corresponda al constructo y no existan señales claras de varias dimensiones.

> Los ítems parecen compartir una regularidad general después de alinear su dirección, aunque todavía debe evaluarse si representan adecuadamente el constructo.
:::

::: {.m01-group-col}
[Escenario B · Batería problemática]{.m01-group-badge .m01-badge-b}

I4 permanece en su dirección original y aparece relacionado negativamente con los ítems positivos. I6 comparte poca información con el resto y podría estar captando ansiedad económica general más que seguridad económica. La matriz también puede mostrar dos grupos internos.

En estas condiciones, alfa cambia al recodificar o excluir preguntas y el promedio mezcla significados diferentes.

> Antes de construir un índice deben revisarse la dirección, el contenido y la estructura interna de la batería.
:::
:::

::: {.rs-callout-warning .rs-callout-warning--m01-amber}
Eliminar un ítem solo porque aumenta alfa puede mejorar una cifra y, al mismo tiempo, empobrecer la cobertura conceptual del constructo.
:::

> **Antes de construir un índice no basta con observar un único coeficiente. Es necesario revisar qué pretende medir cada ítem, su dirección, sus correlaciones recíprocas, si aparecen bloques o agrupaciones, y qué regla se usará ante casos perdidos.**
:::
:::

::: {.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>
```
### Del constructo a los indicadores

Un **constructo** es un fenómeno definido teóricamente que no se observa de manera directa. La seguridad económica percibida, por ejemplo, incluye estabilidad, capacidad de respuesta y confianza en el futuro.

Cada ítem representa una manifestación parcial. También contiene variación específica relacionada con su redacción, comprensión o situación particular. Utilizar varias preguntas permite cubrir diferentes aspectos, pero una batería más larga no es automáticamente mejor.

> Una respuesta individual no es el constructo: es una observación parcial relacionada con él.
:::

::: {.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 los indicadores a la consistencia

La matriz entre ítems permite examinar cómo se relacionan las preguntas.

- Una fila con correlaciones negativas puede revelar un ítem invertido sin recodificar.
- Correlaciones bajas pueden sugerir ruido, ambigüedad o contenido distinto.
- Dos bloques internos pueden indicar más de una dimensión.
- Correlaciones casi perfectas pueden reflejar redundancia.

Alfa de Cronbach resume parte de la covariación del conjunto, pero no reemplaza la matriz ni la evaluación del contenido.

> La consistencia es una propiedad del conjunto de respuestas, no una prueba de que el instrumento mida correctamente el fenómeno propuesto.
:::

::: {.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 consistencia al índice

Combinar ítems requiere que todos apunten hacia la misma dirección interpretativa. También exige justificar que sus contenidos pueden resumirse en una sola puntuación y definir cuántas respuestas necesita cada persona.

El promedio conserva la escala original de 1 a 5. Sin embargo, los casos perdidos modifican la cobertura: una regla estricta conserva mayor comparabilidad entre ítems, mientras que una regla flexible permite calcular el índice para más personas.
:::

:::
:::

::: {.rs-lesson-section #recorrido-guiado}
## ¿Cómo pasamos del constructo al índice?

El recorrido guiado utilizará una base pequeña para mostrar la cadena de decisiones que conecta una idea teórica con una puntuación individual. Se distinguirán constructo e indicadores, se revisará la variación específica de cada ítem, se alineará la dirección de una pregunta invertida y se observará la matriz. Después se separarán consistencia, dimensionalidad y validez, antes de construir un promedio mediante una regla mínima de respuestas.

::: {.column-screen-inset}
```{=html}
<div id="m12-index-tour">
  <!-- El contenido es generado por m12-baterias-consistencia-indices.js -->
</div>
```
:::

```{=html}
<script src="../assets/js/m12-baterias-consistencia-indices.js" defer></script>
```
:::

::: {.rs-lesson-section #laboratorio-interactivo}
## Laboratorio interactivo

::: {.rs-callout-note .rs-callout-note--m01-blue}
**Nota pedagógica:**
Explora la coherencia de una batería, alinea ítems invertidos y compara reglas de construcción para distinguir consistencia interna, información compartida y puntuaciones individuales.
:::

::: {.column-screen-inset}
```{=html}
<div id="m12-battery-lab">
  <!-- El contenido es generado por m12-baterias-consistencia-indices.js -->
</div>
```
:::
:::

::: {.rs-lesson-section #despues-del-laboratorio}
## Después de explorar

Los ítems deben apuntar hacia una dirección común antes de combinarse. Una correlación negativa puede deberse simplemente a que una pregunta está invertida, pero también puede revelar un contenido diferente. La recodificación debe realizarse antes de interpretar la matriz, alfa o el índice.

Cuando aumenta el ruido de un indicador, sus correlaciones con el resto suelen debilitarse. Si aparecen dos bloques, la batería podría contener más de una dimensión, aunque alfa global sea relativamente alto. Además, alfa depende de la covariación y del número de ítems: agregar preguntas similares puede elevarlo sin aportar mayor cobertura conceptual.

Excluir un ítem no debe ser una respuesta automática a “alfa si se elimina”. La decisión también debe considerar qué aspecto dejaría de medirse. Finalmente, cambiar la regla mínima de respuestas modifica el número de personas con índice y la cantidad de información que sostiene cada puntuación. Todas estas decisiones deben informarse.
:::

::: {.rs-lesson-section #interpretacion}
## Del fenómeno a la puntuación

El constructo corresponde al fenómeno teórico que deseamos representar. Cada ítem es un indicador parcial y varios ítems relacionados forman una batería. La existencia de varias preguntas no garantiza por sí sola que todas midan lo mismo.

Los ítems invertidos deben recodificarse antes de evaluar el patrón conjunto. La matriz ayuda a detectar direcciones inconsistentes, indicadores aislados, bloques y redundancias. Alfa resume una forma de consistencia interna, pero no demuestra validez ni unidimensionalidad. Tampoco convierte “alfa si se elimina” en una orden para retirar preguntas.

Construir un índice exige que las direcciones estén alidadas y que exista una justificación sustantiva para combinar los contenidos. El promedio debe acompañarse de una regla mínima de respuestas, aplicada de la misma forma a todas las personas. El reporte debe documentar los ítems, la recodificación, la evidencia de consistencia, las decisiones de inclusión y las limitaciones de la medición.

::: {.callout-warning}
**Advertencia metodológica:** Promediar ítems con escalas diferentes requiere armonizar previamente su métrica o justificar otro procedimiento.
:::

### Evita estas interpretaciones

::: {.m01-table-wrap}
| Interpretación problemática | Corrección |
|---|---|
| “Existe un punto de corte universal de alfa.” | La interpretación depende del propósito, la batería, la población y el contexto. |
| “El ítem debe eliminarse si alfa aumenta.” | “Alfa si se elimina” es un diagnóstico y debe evaluarse junto con el contenido. |
| “Más ítems siempre mejoran la escala.” | Pueden aumentar redundancia sin ampliar cobertura conceptual. |
| “Ítems casi idénticos siempre son deseables.” | Pueden elevar alfa y aportar muy poca información nueva. |
| “Una ausencia debe reemplazarse por cero.” | La ausencia indica que no se observó la respuesta; cero tendría otro significado. |
| “Permitir menos respuestas no modifica el índice.” | Cambia la cantidad de ítems que sostienen algunas puntuaciones y la cobertura. |
| “El promedio puede calcularse antes de alinear direcciones.” | Mezclaría significados opuestos y produciría una puntuación ambigua. |
| “Un índice es objetivo porque se obtuvo mediante una fórmula.” | Su construcción depende de decisiones teóricas y metodológicas. |
| “La puntuación demuestra la situación económica real.” | Resume percepciones declaradas, no una medida completa de recursos objetivos. |
: Interpretaciones problemáticas en consistencia e índices {.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: un alfa alto no responde todas las preguntas</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 en las que puede comportarse una batería.

::: {.m01-table-wrap}
| Escenario | Patrón de la matriz | Comportamiento de alfa | Problema principal | Decisión prudente |
|---|---|---|---|---|
| **A. Batería coherente** | Correlaciones positivas distribuidas | Compatible con consistencia | Falta evaluar contenido, dimensionalidad y validez | Construir un índice provisional y reportar límites |
| **B. Ítem invertido sin recodificar** | Una fila y columna negativas | Disminuye o resulta difícil de interpretar | Dirección inconsistente | Recodificar antes de evaluar |
| **C. Dos grupos de ítems** | Dos bloques internos | Puede mantenerse relativamente alto | Posible multidimensionalidad | Revisar teoría y aplicar análisis posteriores |
: Escenarios de comportamiento de baterías {.m01-table}
:::

### Escenario A. Batería coherente

Los seis ítems están orientados en la misma dirección y presentan correlaciones positivas de magnitud variable. No son idénticos, por lo que cada uno conserva cierta información específica.

**Interpretación:** la batería muestra regularidad interna, pero todavía deben justificarse su contenido, dimensionalidad y validez. Un índice promedio puede utilizarse como síntesis provisional.

### Escenario B. Ítem invertido sin recodificar

I4 presenta correlaciones negativas porque una respuesta alta indica mayor preocupación, mientras que una respuesta alta en los demás ítems indica mayor seguridad. Alfa disminuye y el promedio mezcla direcciones.

**Interpretación:** la relación negativa se debe al sentido del ítem y no necesariamente a que mida otro fenómeno. La recodificación debe preceder a cualquier evaluación conjunta.

### Escenario C. Dos grupos de ítems

I1, I2 e I3 forman un bloque relacionado con capacidad y continuidad de ingresos. I4, I5 e I6 forman otro bloque asociado con preocupación y estabilidad subjetiva. Alfa global puede mantenerse porque existen relaciones dentro de cada grupo.

**Interpretación:** un alfa global relativamente alto no demuestra que todos los ítems representen una sola dimensión. Podría ser necesario estudiar dos subíndices o aplicar procedimientos posteriores.

::: {.callout-warning}
Varios ítems casi idénticos pueden elevar alfa sin ampliar la representación del constructo. La redundancia numérica no equivale a mejor cobertura conceptual.
:::

#### Aprendizajes

- Alfa resume, no valida.
- La matriz permite diagnosticar.
- La recodificación precede al índice.
- La dimensionalidad requiere evidencia adicional.
- El contenido de los ítems sigue siendo central.

:::
</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 Consistencia e Índices

##### Recodificación general

$$
X_{\text{rec}} = (\max+\min)-X
$$

Para una escala de 1 a 5:

$$
X_{\text{rec}}=6-X
$$

Por tanto:

$$
1\rightarrow5,\quad
2\rightarrow4,\quad
3\rightarrow3,\quad
4\rightarrow2,\quad
5\rightarrow1
$$

La respuesta sustantiva no cambia. Cambia la dirección numérica para que, después de recodificar, un valor alto indique mayor seguridad.

##### Índice promedio

$$
I_i = \frac{\sum_{j=1}^{k_i}X_{ij}}{k_i}
$$

donde:
- $I_i$: índice de la persona $i$;
- $X_{ij}$: respuesta de la persona $i$ al ítem $j$;
- $k_i$: número de respuestas válidas utilizadas.

El índice mantiene la escala 1–5. Solo se calcula cuando $k_i$ cumple la regla mínima definida.

##### Alfa de Cronbach

$$
\alpha = \frac{k}{k-1} \left(1- \frac{\sum_{j=1}^{k}s_j^2}{s_T^2}\right)
$$

donde:
- $k$: número de ítems;
- $s_j^2$: varianza del ítem $j$;
- $s_T^2$: varianza de la puntuación total.

Alfa compara la suma de las varianzas individuales con la variación de la puntuación total. Tiende a aumentar cuando los ítems covarían más y también puede aumentar al agregar ítems relacionados. No es una prueba de validez.

##### Correlación media entre ítems

$$
\bar r = \frac{\sum_{i<j}r_{ij}}{k(k-1)/2}
$$

Resume la correlación promedio entre las parejas únicas de ítems. Complementa alfa y ayuda a distinguir una batería larga con relaciones modestas de una batería corta con relaciones más concentradas.

##### Relación entre alfa, $k$ y correlación media

$$
\alpha_{\text{est}} = \frac{k\bar r}{1+(k-1)\bar r}
$$

Esta relación pedagógica muestra que alfa depende de la cantidad de ítems y la correlación media entre ellos.

##### Alfa si se elimina un ítem

Se recalcula alfa utilizando $k-1$ ítems. El cambio permite revisar la sensibilidad del conjunto, pero no decide automáticamente la exclusión.

##### Total frente a promedio

La suma cambia su rango al variar el número de ítems. El promedio conserva la escala original. Si todas las personas responden el mismo número de ítems, suma y promedio contienen información equivalente para ordenar casos. Cuando existen respuestas incompletas, la regla debe definirse explícitamente.
:::

:::
</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 <- 150

# Tendencia común de seguridad económica percibida
seguridad_latente <- rnorm(n)

# Ítems positivos en escala 1–5
crear_item <- function(señal, ruido = 0.8) {
  continuo <- 3 + señal + rnorm(length(señal), 0, ruido)
  pmin(5, pmax(1, round(continuo)))
}

I1 <- crear_item(0.80 * seguridad_latente)
I2 <- crear_item(0.75 * seguridad_latente)
I3 <- crear_item(0.70 * seguridad_latente)
I5 <- crear_item(0.78 * seguridad_latente)

# Ítems negativos: una respuesta alta indica menor seguridad
I4 <- crear_item(-0.72 * seguridad_latente)
I6 <- crear_item(-0.62 * seguridad_latente, ruido = 1.0)

datos <- data.frame(I1, I2, I3, I4, I5, I6)

# Introducir algunas respuestas perdidas
datos$I2[sample(seq_len(n), 8)] <- NA
datos$I4[sample(seq_len(n), 10)] <- NA
datos$I6[sample(seq_len(n), 12)] <- NA

### Revisar frecuencias y ausencias
lapply(datos, table, useNA = "ifany")
colSums(is.na(datos))

### Recodificar ítems invertidos
datos_rec <- datos
datos_rec$I4 <- 6 - datos$I4
datos_rec$I6 <- 6 - datos$I6

head(
  data.frame(
    I4_original = datos$I4,
    I4_recodificado = datos_rec$I4,
    I6_original = datos$I6,
    I6_recodificado = datos_rec$I6
  )
)

### Matrices antes y después
matriz_original <- cor(datos, use = "pairwise.complete.obs")
matriz_recodificada <- cor(datos_rec, use = "pairwise.complete.obs")

round(matriz_original, 2)
round(matriz_recodificada, 2)

### Función para alfa de Cronbach
cronbach_alpha <- function(base) {
  base <- as.data.frame(base)
  base_completa <- base[complete.cases(base), , drop = FALSE]

  k <- ncol(base_completa)

  if (k < 2 || nrow(base_completa) < 2) {
    return(NA_real_)
  }

  varianzas_items <- vapply(base_completa, var, numeric(1))
  puntuacion_total <- rowSums(base_completa)
  varianza_total <- var(puntuacion_total)

  if (is.na(varianza_total) || varianza_total <= 0) {
    return(NA_real_)
  }

  (k / (k - 1)) * (1 - sum(varianzas_items) / varianza_total)
}

alpha_original <- cronbach_alpha(datos)
alpha_recodificado <- cronbach_alpha(datos_rec)

alpha_original
alpha_recodificado

### Correlación media entre ítems
correlacion_media <- function(base) {
  matriz <- cor(base, use = "pairwise.complete.obs")
  mean(matriz[lower.tri(matriz)], na.rm = TRUE)
}

correlacion_media(datos_rec)

### Alfa si se elimina cada ítem
alpha_si_se_elimina <- sapply(
  names(datos_rec),
  function(item) {
    cronbach_alpha(datos_rec[setdiff(names(datos_rec), item)])
  }
)

data.frame(
  item_eliminado = names(alpha_si_se_elimina),
  alpha = as.numeric(alpha_si_se_elimina)
)

### Construir el índice con un mínimo de respuestas
minimo_respuestas <- 5
respuestas_validas <- rowSums(!is.na(datos_rec))

indice <- rowMeans(datos_rec, na.rm = TRUE)
indice[respuestas_validas < minimo_respuestas] <- NA_real_

datos_rec$indice_seguridad <- indice

sum(!is.na(datos_rec$indice_seguridad))
sum(is.na(datos_rec$indice_seguridad))
summary(datos_rec$indice_seguridad)

### Visualizar la matriz
matriz <- matriz_recodificada
items <- colnames(matriz)

image(
  x = seq_along(items),
  y = seq_along(items),
  z = t(matriz[nrow(matriz):1, ]),
  zlim = c(-1, 1),
  axes = FALSE,
  xlab = "",
  ylab = "",
  main = "Matriz entre ítems recodificados"
)

axis(1, at = seq_along(items), labels = items)
axis(2, at = seq_along(items), labels = rev(items))

for (i in seq_along(items)) {
  for (j in seq_along(items)) {
    text(j, length(items) - i + 1, sprintf("%.2f", matriz[i, j]))
  }
}

### Visualizar la distribución del índice
hist(
  datos_rec$indice_seguridad,
  breaks = seq(1, 5, by = 0.25),
  xlim = c(1, 5),
  main = "Índice de seguridad económica",
  xlab = "Promedio de los ítems"
)
```

### Python {.unnumbered .unlisted}

```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

rng = np.random.default_rng(2026)

n = 150
seguridad_latente = rng.normal(size=n)


def crear_item(señal: np.ndarray, ruido: float = 0.8) -> np.ndarray:
    continuo = 3 + señal + rng.normal(0, ruido, len(señal))
    return np.clip(np.rint(continuo), 1, 5)


datos = pd.DataFrame({
    "I1": crear_item(0.80 * seguridad_latente),
    "I2": crear_item(0.75 * seguridad_latente),
    "I3": crear_item(0.70 * seguridad_latente),
    "I4": crear_item(-0.72 * seguridad_latente),
    "I5": crear_item(0.78 * seguridad_latente),
    "I6": crear_item(-0.62 * seguridad_latente, ruido=1.0),
})

# Introducir algunas respuestas perdidas
datos.loc[
    rng.choice(datos.index, size=8, replace=False), "I2"
] = np.nan
datos.loc[
    rng.choice(datos.index, size=10, replace=False), "I4"
] = np.nan
datos.loc[
    rng.choice(datos.index, size=12, replace=False), "I6"
] = np.nan

### Revisar frecuencias y ausencias
for item in datos.columns:
    print(f"\n{item}")
    print(datos[item].value_counts(dropna=False).sort_index())

print("\nAusencias:")
print(datos.isna().sum())

### Recodificar I4 e I6
datos_rec = datos.copy()
datos_rec["I4"] = 6 - datos_rec["I4"]
datos_rec["I6"] = 6 - datos_rec["I6"]

comparacion = pd.DataFrame({
    "I4_original": datos["I4"],
    "I4_recodificado": datos_rec["I4"],
    "I6_original": datos["I6"],
    "I6_recodificado": datos_rec["I6"],
})
print(comparacion.head())

### Comparar matrices
matriz_original = datos.corr()
matriz_recodificada = datos_rec.corr()

print("Antes de recodificar:")
print(matriz_original.round(2))

print("\nDespués de recodificar:")
print(matriz_recodificada.round(2))


### Función para alfa de Cronbach
def cronbach_alpha(base: pd.DataFrame) -> float:
    """Calcula alfa usando casos completos del conjunto."""
    limpia = base.dropna()

    if limpia.shape[1] < 2:
        raise ValueError("Se requieren al menos dos ítems.")

    if limpia.shape[0] < 2:
        return np.nan

    varianzas_items = limpia.var(ddof=1).sum()
    puntuacion_total = limpia.sum(axis=1)
    varianza_total = puntuacion_total.var(ddof=1)

    if not np.isfinite(varianza_total) or np.isclose(varianza_total, 0):
        return np.nan

    k = limpia.shape[1]

    return float((k / (k - 1)) * (1 - varianzas_items / varianza_total))


alpha_original = cronbach_alpha(datos)
alpha_recodificado = cronbach_alpha(datos_rec)

print("Alfa original:", alpha_original)
print("Alfa recodificado:", alpha_recodificado)


### Correlación media entre ítems
def correlacion_media(base: pd.DataFrame) -> float:
    matriz = base.corr()
    mascara = np.tril(np.ones(matriz.shape, dtype=bool), k=-1)
    valores = matriz.to_numpy()[mascara]
    return float(np.nanmean(valores))


print("Correlación media:", correlacion_media(datos_rec))

### Alfa si se elimina cada ítem
resultados_eliminacion = []

for item in datos_rec.columns:
    restantes = datos_rec.drop(columns=item)
    resultados_eliminacion.append({
        "item_eliminado": item,
        "alpha": cronbach_alpha(restantes),
    })

tabla_eliminacion = pd.DataFrame(resultados_eliminacion)
print(tabla_eliminacion)

### Construir el índice
minimo_respuestas = 5
respuestas_validas = datos_rec.notna().sum(axis=1)

indice = datos_rec.mean(axis=1, skipna=True)
indice = indice.where(respuestas_validas >= minimo_respuestas)

datos_rec["indice_seguridad"] = indice

print("Casos con índice:", datos_rec["indice_seguridad"].notna().sum())
print("Casos excluidos:", datos_rec["indice_seguridad"].isna().sum())
print(datos_rec["indice_seguridad"].describe())

### Visualizar la matriz
items = list(matriz_recodificada.columns)
fig, ax = plt.subplots()

imagen = ax.imshow(
    matriz_recodificada.to_numpy(),
    vmin=-1,
    vmax=1,
)

ax.set_xticks(range(len(items)))
ax.set_yticks(range(len(items)))
ax.set_xticklabels(items)
ax.set_yticklabels(items)

for i in range(len(items)):
    for j in range(len(items)):
        valor = matriz_recodificada.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 entre ítems recodificados")
plt.tight_layout()
plt.show()

### Visualizar el índice
fig, ax = plt.subplots()

ax.hist(
    datos_rec["indice_seguridad"].dropna(),
    bins=np.arange(1, 5.25, 0.25),
)

ax.set_xlim(1, 5)
ax.set_xlabel("Índice de seguridad económica")
ax.set_ylabel("Frecuencia")
ax.set_title("Distribución del índice")
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 construyó un índice aditivo promedio ($1$ a $5$) de Percepción de Conflicto Social sintetizando tres ítems de una batería del cuestionario, previa inversión escalar del ítem negativo ($6 - X_i$) e inspección de consistencia intercorrelacional ($\bar{r} = 0,42, N = 200$).*
- **Simple:** *Combinamos y promediamos varias preguntas complementarias del cuestionario para obtener una sola nota o variable que mide cuánto conflicto percibe cada encuestado en el país.*
- **Sociológico:** *Para superar el sesgo y la fragilidad de los indicadores aislados, sintetizamos la dimensión latente de Percepción de Conflicto Social mediante un índice promedio aditivo de tres ítems ($\bar{X} = 3,02, s = 0,68$). La alineación metodológica de las escalas inversas y la consistencia de su matriz de correlaciones respaldan la validez de constructo de esta nueva variable sintética para la investigación empírica.*

:::
</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 y 14: Conceptualización, operacionalización e índices de medición en la investigación sociológica).
- **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. 11: Transformación de variables, recodificación y construcción de índices escalares).
- **Agresti, Alan; Franklin, Christine; y Klingenberg, Bernhard. (2023).** *Statistics: The art and science of learning from data*. Pearson. (Cap. 3: Combining quantitative variables and composite measures).

:::
</details>

:::

::: {.rs-lesson-section #lo-esencial}
## Lo esencial

Un constructo es un fenómeno teórico que se aproxima mediante indicadores. Cada ítem aporta información parcial y variación específica, y varios ítems forman una batería. Antes de combinarlos deben revisarse su contenido, dirección y matriz de correlaciones. Los ítems invertidos requieren recodificación para que todas las puntuaciones apunten hacia la misma interpretación. Alfa de Cronbach resume una forma de consistencia interna y depende tanto de la covariación como del número de ítems. No demuestra validez, unidimensionalidad ni calidad total. La construcción de un índice promedio exige justificar la cobertura conceptual, establecer una regla mínima de respuestas y documentar casos válidos y excluidos. Las ausencias no deben reemplazarse por cero y “alfa si se elimina” no es una orden automática.

> **Construir un índice es una decisión de medición fundamentada, no el resultado automático de un alfa alto.**
:::

```{=html}
<nav class="rs-lesson-footer-nav rs-inference-footer-nav" aria-label="Navegación entre módulos">
  <a href="m11_matrices_correlacion_casos_perdidos.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">M11. Matrices de correlación y casos perdidos</span>
    </span>
  </a>

  <a href="m13_variables_categoricas_tablas_contingencia.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">M13. Variables categóricas y tablas de contingencia</span>
    </span>
    <span class="rs-nav-link__arrow" aria-hidden="true">→</span>
  </a>
</nav>
```

:::

Estadística Correlacional Interactiva
Facultad de Ciencias Sociales
Departamento de Sociología
Universidad de Chile

Volver arriba

Sitio creado por Katherine Aravena .

Código bajo licencia MIT · Ver repositorio en GitHub