Caso con datos reales
Treinta y dos aglomerados y diez indicadores
Componentes principales y conglomerados sobre una matriz de la EPH: el análisis encuentra la Patagonia sin que nadie le diga dónde queda.
La matriz
32 aglomerados urbanos, 10 indicadores cada uno, todos calculados con la misma fuente —la EPH del primer trimestre de 2026— y con sus ponderadores:
| Indicador | Unidad |
|---|---|
| Tasa de desocupación | % de la PEA |
| Tasa de empleo | % de la población |
| Tasa de actividad | % de la población |
| Ingreso medio | pesos |
| Ingreso mediano | pesos |
| Coeficiente de Gini | 0 a 1 |
| Población de 18+ con secundario completo | % |
| Asalariados no registrados | % |
| Edad media | años |
| Población de 65 y más | % |
Primero: la matriz de correlaciones
| Par de variables | |
|---|---|
| Edad media / población de 65+ | +0,961 |
| Ingreso medio / ingreso mediano | +0,960 |
| Empleo / actividad | +0,921 |
| Ingreso mediano / no registrados | −0,844 |
| Ingreso medio / no registrados | −0,820 |
La cuarta es sustantiva: donde hay más informalidad, los ingresos son más bajos, con una correlación de −0,84.
Componentes principales
| Componente | Varianza | Acumulada |
|---|---|---|
| CP1 | 34,6 % | 34,6 % |
| CP2 | 22,6 % | 57,3 % |
| CP3 | 14,9 % | 72,2 % |
| CP4 | 13,4 % | 85,6 % |
Cuatro componentes tienen valor propio mayor a 1 —el criterio de Kaiser—, y los dos primeros resumen el 57 % de la información de las diez variables originales.
Las cargas del primer componente:
| Variable | Carga |
|---|---|
| Ingreso medio | +0,446 |
| Ingreso mediano | +0,429 |
| Edad media | +0,370 |
| No registrados | −0,334 |
| Actividad | +0,329 |
| Población 65+ | +0,315 |
Dónde cae cada aglomerado
| Extremo negativo del CP1 | Extremo positivo | ||
|---|---|---|---|
| Concordia | −3,41 | CABA | +5,73 |
| Santiago del Estero - La Banda | −2,55 | Mar del Plata - Batán | +2,92 |
| Formosa | −1,84 | Neuquén - Plottier | +2,56 |
CABA está a 5,7 desvíos del promedio en el eje principal: es el caso más atípico de los 32, con enorme distancia respecto del segundo.
Los conglomerados
Método de Ward sobre las variables estandarizadas, tres grupos:
| Grupo | Desocupación | Ingreso medio | No registrados | Secundario+ | |
|---|---|---|---|---|---|
| 1 | 16 | 5,0 % | $846.597 | 40,0 % | 67,2 % |
| 2 | 4 | 5,6 % | $1.537.817 | 17,4 % | 67,3 % |
| 3 | 12 | 8,0 % | $1.153.793 | 35,7 % | 64,9 % |
Quiénes son los cuatro del grupo 2:
Comodoro Rivadavia - Rada Tilly · Neuquén - Plottier · Río Gallegos · Ushuaia - Río Grande
El grupo 1 reúne aglomerados del norte y el litoral, con ingresos bajos y mucha informalidad. El grupo 3 son las grandes áreas metropolitanas, con la desocupación más alta.
El codo, que no siempre aparece
Inercia intra-grupo según la cantidad de conglomerados:
| Inercia | |
|---|---|
| 1 | 310,0 |
| 2 | 244,0 |
| 3 | 206,5 |
| 4 | 183,0 |
| 5 | 162,7 |
| 6 | 160,1 |
Reproducirlo
# R
X <- scale(datos[, variables]) # estandarizar es obligatorio
pca <- prcomp(X)
summary(pca) # varianza explicada
pca$rotation[, 1:2] # las cargas
biplot(pca)
d <- dist(X)
hc <- hclust(d, method = "ward.D2")
plot(hc); rect.hclust(hc, k = 3)
grupos <- cutree(hc, k = 3)
set.seed(2026)
km <- kmeans(X, centers = 3, nstart = 25)
# Python
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.cluster import AgglomerativeClustering, KMeans
Z = StandardScaler().fit_transform(X)
pca = PCA().fit(Z)
pca.explained_variance_ratio_
AgglomerativeClustering(n_clusters=3, linkage='ward').fit_predict(Z)
KMeans(n_clusters=3, random_state=2026, n_init=25).fit_predict(Z)
El script completo es datos/eph/preparar-multivariado-m14.py, con semilla 2026.