Introducción

El conjunto de datos con el que trabajaremos proviene de la American Community Survey (ACS) de el United States Census Bureau (o simplemente, Census Bureau). En particular, se emplearon estimaciones quinquenales, las cuales combinan información recolectada entre los años 2019 y 2023 para producir estimaciones confiables de variables socioeconómicas a nivel de ZIP Code Tabulation Area (ZCTA) (áreas de tabulación de códigos postales).

Las ZCTAs son áreas geográficas creadas por el Census Bureau para aproximar los conocidos ZIP Codes (códigos postales) del United States Postal Service. Un ZIP Code no es un área geográfica, sino una ruta de distribución de correo. Por ello, puede cambiar con el tiempo, puede no representar una región continua, e incluso algunos corresponden únicamente a edificios, empresas o apartados postales. Para resolver ese problema, el Census Bureau construyó las ZCTAs, que sí son polígonos geográficos. Cada una de ellas representa una pequeña región del territorio estadounidense asociada aproximadamente a un código postal. Dado que estas unidades geográficas son áreas pequeñas, por defecto la información para ellas es quinquenal, pues esto ofrece mayor precisión (reducción del error de muestreo) al combinar información de cinco años consecutivos. Las ZCTAs son ampliamente utilizadas en la actualidad para investigación en materia de Economía, Salud Pública, Sociología y Geografía.

Actualmente, se tiene registro de \(33777\) ZCTAs con información agregada estimada por el Census Bureau para cada una en materia de información censal: medidas demográficas, económicas, laborales, diversos índices multidimensionales, de desarrollo urbano, entre otras.

Nuestra pregunta de investigación en este ejemplo es qué dimensiones latentes describen las diferencias socioeconómicas entre las regiones de Estados Unidos, para lo cual emplearemos como unidades de análisis a las ZCTAs. Como variables observadas, escogimos las siguientes nueve:

  • Ingreso mediano del hogar

  • Tasa de pobreza (en porcentaje)

  • Porcentaje de graduados de secundaria (High school)

  • Porcentaje de graduados de pregrado (Bachelor’s degree)

  • Porcentaje de graduados de posgrado (Professional degree)

  • Tasa de desempleo (en porcentaje)

  • Tasa de participación en fuerza laboral (en porcentaje)

  • Mediana del avalúo de los hogares

  • Porcentaje de viviendas ocupadas por su propietario

A primera vista, es de esperar que estas variables estén correlacionadas, y de hecho esa noción intuitiva fue utilizada en la elección de las variables, pues aquellas que se espere sean prácticamente independientes, como la edad media en cada ZCTA o el tiempo promedio de desplazamiento al trabajo, no tendría sentido analizarlas mediante un modelo factorial. De esta manera, se espera que haya tres o cuatro factores latentes comunes a las variables observadas, posiblemente uno de desarrollo económico, otro de capital humano, otro de mercado laboral, entre otras.

Una vez importada la información para nuestras nueve variables de investigación, se eliminaron las observaciones (ZCTAs) con al menos un dato faltante. Dado el gran tamaño de la base de datos (\(33777\) unidades), a esta reducción sobrevivió el \(87\)% de las observaciones (\(29446\) unidades), con lo cual la pérdida de información no comprometió el análisis en gran medida. En síntesis, nuestra base de datos final resultó en un conjunto de datos con \(29466\) observaciones a lo largo de \(9\) variables seleccionadas para el análisis factorial.

Diagnóstico inicial

En primer lugar, cargamos las librerías necesarias y la base de datos:

library(tidyverse)  
library(psych)       
library(corrplot)    
library(moments)     
library(xtable)      
library(GGally)     
library(nFactors)
library(tictoc)

datos_af <- read.csv("ACS_ZCTA_2019_2023(García-Barrantes-Arévalo-Prieto).csv")

Después, revisamos la matriz de correlaciones muestral \(\widetilde{\mathbf{R}}\):

R <- cor(datos_af)
corrplot(R, method = "color", type = "upper", order = "hclust",
         addCoef.col = "black", tl.col = "black", tl.srt = 45, diag = FALSE)

Aplicamos la prueba de esfericidad de Bartlett

cortest.bartlett(R, n = nrow(datos_af))
## $chisq
## [1] 152973.1
## 
## $p.value
## [1] 0
## 
## $df
## [1] 36

A partir de estos resultados, se rechaza la hipótesis de que la matriz de correlaciones es la identidad con un valor calculado del estadístico de prueba \(\chi^2=152973.1\), \(36\) grados de libertad y un \(p\) valor inferior a \(0.001\), lo cual indica que las variables presentan una estructura de correlaciones suficiente para justificar la aplicación del análisis factorial.

Además, el índice de Kaiser-Meyer-Olkin (KMO):

KMO(datos_af)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = datos_af)
## Overall MSA =  0.73
## MSA for each item = 
##        Ingreso         Avaluo        Pobreza       Pregrado     Secundaria 
##           0.75           0.77           0.82           0.75           0.84 
##       Posgrado      Desempleo Fuerza_laboral   Propietarios 
##           0.75           0.83           0.58           0.36

es de \(0.73\), lo cual indica que la estructura de correlaciones es suficientemente compacta para que el análisis factorial produzca factores estables e interpretables. En investigación aplicada, es perfectamente aceptable trabajar con \(0.7\leqslant\)KMO siempre que las variables tengan sentido desde el punto de vista sustantivo. En cuanto a los índices MSA (medidas de adecuación del muestreo), los valores calculados para Fuerza laboral y Propietarios son muy bajos; sin embargo, al revisar \(\widetilde{\mathbf{R}}\), es claro que existen correlaciones no tan bajas con otras variables, lo que da espacio a pensar que el problema no son las correlaciones simples, sino las correlaciones parciales, pues el índice MSA tiene en cuenta ambas.

En síntesis, aunque las variables Fuerza laboral y Propietarios presentan índices MSA individuales relativamente bajos, se decidió conservarlas debido a su relevancia conceptual dentro del constructo de desarrollo socioeconómico y a que muestran correlaciones sustantivas con otras variables. El KMO de \(0.73\) indica que, en conjunto, la matriz de correlaciones es adecuada para la aplicación del análisis factorial.

Número de factores

Conviene iniciar con la descomposición de la varianza según el ACP. Para ello, calculamos los valores propios de \(\widetilde{\mathbf{R}}\):

Eigen_R <- eigen(R)
data.frame(Factor = 1:length(Eigen_R$values), Valor_propio = round(Eigen_R$values, 3))
##   Factor Valor_propio
## 1      1        3.962
## 2      2        1.667
## 3      3        0.975
## 4      4        0.779
## 5      5        0.661
## 6      6        0.381
## 7      7        0.335
## 8      8        0.154
## 9      9        0.085

Éstos son: \[ 3.962>1.667>0.975>0.779>0.661>0.381>0.335>0.154>0.085. \]

Siguiendo la regla de Kaiser, nos quedaríamos únicamente con dos factores, el asociado al valor propio \(3.962\) y el de \(1.667\).

Ahora bien, bajo el criterio de porcentaje de varianza explicada, calculando (4.1), llegamos a los resultados de la siguiente tabla:

prop_var <- Eigen_R$values/sum(Eigen_R$values)
var_acum <- cumsum(prop_var)
data.frame(Factor = 1:length(prop_var), Valor_propio = round(Eigen_R$values, 3),
  Varianza = round(100*prop_var, 2), Acumulada = round(100*var_acum, 2))
##   Factor Valor_propio Varianza Acumulada
## 1      1        3.962    44.03     44.03
## 2      2        1.667    18.53     62.55
## 3      3        0.975    10.83     73.38
## 4      4        0.779     8.66     82.04
## 5      5        0.661     7.35     89.39
## 6      6        0.381     4.24     93.62
## 7      7        0.335     3.72     97.34
## 8      8        0.154     1.72     99.06
## 9      9        0.085     0.94    100.00

El scree plot asociado a los valores propios de \(\widetilde{\mathbf{R}}\) es dado a continuación:

plot(Eigen_R$values, type = "b", pch = 19, xlab = "Número de componente",
  ylab = "Valor propio", main = "Scree Plot")
abline(h = 1, lty = 2)

La línea punteada horizontal en \(1\) hace alusión al criterio de Kaiser. Nótese lo subjetivo de escoger el punto de inflexión, pues en los factores 2 y 3 la pendiente cambia sustancialmente, mas no hay uno en específico que muestre ser mejor codo que el otro.

Finalmente, resulta ilustrativo comparar el análisis paralelo de Horn cuando los valores propios se obtienen a partir de un ACP con el caso en que se obtienen a partir del modelo factorial. En el primer caso, los valores propios corresponden a la matriz de correlaciones muestral \(\widetilde{\mathbf{R}}\), mientras que en el segundo, se calculan a partir de la matriz de correlaciones reducida, cuya diagonal está formada por las comunalidades estimadas. Como consecuencia, ambos enfoques pueden sugerir un número diferente de factores. A continuación, presentamos los gráficos obtenidos mediante el análisis paralelo de Horn empleando \(1000\) simulaciones en ambos casos. Para el modelo factorial, las comunalidades fueron estimadas mediante el método de máxima verosimilitud.

set.seed(1234); tic(); fa.parallel(datos_af, fa = "pc",
                                   n.iter = 1000); toc() #usando ACP

## Parallel analysis suggests that the number of factors =  NA  and the number of components =  2
## 95.52 sec elapsed
set.seed(1234); tic(); fa.parallel(datos_af, fa = "fa", fm = "ml",
                                   n.iter = 1000); toc() #usando FP

## Parallel analysis suggests that the number of factors =  4  and the number of components =  NA
## 97.26 sec elapsed

Métodos de extracción

Una vez decidido el número de factores con el que procederemos (\(2\) y \(3\) para comparar el mejor modelo factorial), continuamos con la estimación de las cargas factoriales con los métodos de extracción discutidos en esta sección. Para este ejemplo, realizamos las estimaciones sin elegir ninguna rotación específica, pues éstas se aplicarán más adelante.

Si consideramos dos factores, las estimaciones de las cargas obtenidas son:

af_pc2 <- principal(datos_af, nfactors = 2, fm = "pc", rotate = "none")
af_pc2$loadings
af_pc2$communality

af_pa2 <- fa(datos_af, nfactors = 2, fm = "pa", rotate = "none")
af_pa2$loadings
af_pa2$communality
af_pa2$uniquenesses

af_ml2 <- fa(datos_af, nfactors = 2, fm = "ml", rotate = "none")
af_ml2$loadings
af_ml2$communality
af_ml2$uniquenesses
Estimaciones de las cargas factoriales para dos factores por distintos métodos de extracción.
PC
PF
ML
Variable 1 2 1 2 1 2
Ingreso 0.882 NA 0.859 -0.107 0.764 0.333
Avalúo 0.751 0.376 0.709 0.286 0.723 NA
Pobreza -0.645 0.545 -0.613 0.592 -0.438 -0.745
Pregrado 0.885 0.293 0.909 0.295 0.968 NA
Secundaria 0.633 -0.342 0.553 -0.279 0.511 0.347
Posgrado 0.822 0.355 0.820 0.339 0.916 -0.160
Desempleo -0.303 0.513 -0.243 0.327 -0.168 -0.367
Fuerza laboral 0.497 NA 0.408 NA 0.356 0.242
Propietarios NA -0.797 NA -0.589 NA 0.556

Y para tres factores:

af_pc3 <- principal(datos_af, nfactors = 3, fm = "pc", rotate = "none")
af_pc3$loadings
af_pc3$communality

af_pa3 <- fa(datos_af, nfactors = 3, fm = "pa", rotate = "none")
af_pa3$loadings
af_pa3$communality
af_pa3$uniquenesses

af_ml3 <- fa(datos_af, nfactors = 3, fm = "ml", rotate = "none")
af_ml3$loadings
af_ml3$communality
af_ml3$uniquenesses
Estimaciones de las cargas factoriales para tres factores por distintos métodos de extracción.
PC
PF
ML
Variable 1 2 3 1 2 3 1 2 3
Ingreso 0.882 NA NA 0.857 -0.110 NA 0.919 NA -0.387
Avalúo 0.751 0.376 0.168 0.704 0.257 0.102 0.754 0.270 NA
Pobreza -0.645 0.545 0.109 -0.609 0.501 0.286 -0.508 0.502 0.286
Pregrado 0.885 0.293 0.118 0.906 0.260 0.150 0.923 NA 0.379
Secundaria 0.633 -0.342 NA 0.550 -0.250 NA 0.502 -0.497 NA
Posgrado 0.822 0.355 0.205 0.829 0.302 0.249 0.844 NA 0.329
Desempleo -0.303 0.513 0.294 -0.243 0.277 0.161 -0.189 0.368 NA
Fuerza laboral 0.497 NA -0.762 0.433 NA -0.458 0.410 NA -0.124
Propietarios NA -0.797 0.450 NA -0.893 0.375 NA -0.479 -0.421

Y las estimaciones de las comunalidades y unicidades se sintetizan en la siguiente tabla para el caso de dos factores (para el de tres se obtiene una tabla similar que omitimos para no dilatar el ejemplo).

Estimaciones de comunalidades y unicidades para dos factores.
PC
PF
ML
Variable \(\widehat{h}^2\) \(\widehat{\psi}\) \(\widehat{h}^2\) \(\widehat{\psi}\) \(\widehat{h}^2\) \(\widehat{\psi}\)
Ingreso 0.78 NA 0.75 0.25 0.69 0.30
Avalúo 0.70 NA 0.58 0.41 0.52 0.48
Pobreza 0.71 NA 0.72 0.27 0.74 0.25
Pregrado 0.87 NA 0.91 0.09 0.94 0.06
Secundaria 0.52 NA 0.38 0.62 0.38 0.62
Posgrado 0.80 NA 0.79 0.21 0.86 0.13
Desempleo 0.35 NA 0.17 0.83 0.16 0.84
Fuerza laboral 0.25 NA 0.17 0.83 0.18 0.81
Propietarios 0.64 NA 0.35 0.65 0.31 0.69

Las cargas factoriales obtenidas inmediatamente después de la extracción son matemáticamente válidas, pero normalmente no constituyen la solución más interpretable. La interpretación sustantiva definitiva se realiza una vez se ha aplicado una rotación apropiada, cuyo objetivo es obtener una representación equivalente que facilite la interpretación sustantiva de los factores.

Rotaciones

Vimos recientemente que las estimaciones provistas, siguiendo los métodos de extracción de factores principales y máxima verosimilitud, resultaban similares, tanto con dos factores como con tres.

Por esta razón, continuaremos con las estimaciones de máxima verosimilitud. Si a éstas aplicamos el criterio Varimax, obtenemos las cargas factoriales estimadas que se diligencian en las tablas siguientes para \(2\) y \(3\) factores respectivamente.

af_varimax2 <- fa(datos_af, nfactors = 2, fm = "ml", rotate = "varimax")
af_varimax2$loadings
af_varimax3 <- fa(datos_af, nfactors = 3, fm = "ml", rotate = "varimax")
af_varimax3$loadings
af_varimax2$Vaccounted; af_varimax3$Vaccounted
Cargas factoriales rotadas mediante el criterio Varimax para dos factores.
Variable Factor.1 Factor.2
Ingreso 0.694 0.462
Avalúo 0.716 0.103
Pobreza -0.300 -0.810
Pregrado 0.967 NA
Secundaria 0.442 0.431
Posgrado 0.930 NA
Desempleo -0.101 -0.391
Fuerza laboral 0.308 0.301
Propietarios -0.156 0.537
Cargas factoriales rotadas mediante el criterio Varimax para tres factores.
Variable Factor.1 Factor.2 Factor.3
Ingreso 0.287 0.881 0.370
Avalúo 0.455 0.658 NA
Pobreza -0.140 -0.319 -0.686
Pregrado 0.879 0.451 0.140
Secundaria 0.407 0.119 0.569
Posgrado 0.783 0.461 NA
Desempleo NA NA -0.415
Fuerza laboral 0.172 0.329 0.230
Propietarios -0.256 NA 0.581

Nótese que, en la tabla para dos factores, la estructura es mucho más clara que la obtenida sin rotaciones en las tablas de la sección anterior por máxima verosimilitud, y se puede concluir que Pregrado, Posgrado y Avalúo cargan muy claramente sobre un mismo factor. Además, Pobreza y Propietarios definen bastante bien el segundo. En contraste, Ingreso y Secundaria presentan cargas cruzadas importantes. Hasta aquí, la mayor parte de las variables ya tienen una interpretación bastante clara.

Ahora bien, en la tabla para tres factores, el primer factor del modelo anterior prácticamente se rompe en dos: un factor asociado posiblemente a Educación y otro asociado a Ingreso/Avalúo. No obstante, el tercer factor queda pobremente definido con cargas estimadas no muy superiores a \(0.5\) en magnitud. Además, dadas las variables que lo compondrían, su interpretación sustantiva resulta difícil, pues parece una mezcla entre Vivienda, Mercado laboral, Educación y Nivel Socioeconómico. Esto puede ser señal de que estamos forzando un factor adicional innecesario.

En materia de varianza explicada, el modelo con dos factores logra capturar el \(53.5\)%, mientras que el de tres factores, \(59.3\)%. La ganancia es de aproximadamente \(6\) puntos porcentuales, que no resulta despreciable, pero tampoco es sustancial. Consideramos plausible perder este pequeño porcentaje de ventaja si la interpretación mejora considerablemente. Además, la elección de dos factores es coherente con lo obtenido con el criterio de Kaiser, el scree plot y el análisis paralelo de Horn basado en ACP.

En caso de continuar con dos factores, los resultados obtenidos con el criterio Varimax se inclinan a definir los factores de la siguiente manera:

  • Factor 1: Desarrollo económico educativo, compuesto por Ingreso, Avalúo, Pregrado y Posgrado.

  • Factor 2: Vulnerabilidad socioeconómica, compuesto por Pobreza, Propietarios y Desempleo.

Ahora, estudiaremos los resultados de las estimaciones por máxima verosimilitud aplicando rotaciones oblicuas con Promax, a la expectativa de que la estructura de tres factores mejore la interpretabilidad cuando relajemos el supuesto de factores independientes. Estos valores pueden verse en las siguientes tablas.

af_promax2 <- fa(datos_af, nfactors = 2, fm = "ml", rotate = "promax")
af_promax2$loadings
af_promax3 <- fa(datos_af, nfactors = 3, fm = "ml", rotate = "promax")
af_promax3$loadings
af_promax2$Vaccounted; af_promax3$Vaccounted
af_promax2$Phi; af_promax3$Phi
Cargas factoriales rotadas mediante el criterio Promax para dos factores.
Variable Factor.1 Factor.2
Ingreso 0.635 -0.329
Avalúo 0.749 NA
Pobreza -0.122 0.803
Pregrado 1.025 0.142
Secundaria 0.371 -0.358
Posgrado 1.007 0.227
Desempleo NA 0.399
Fuerza laboral 0.258 -0.250
Propietarios -0.303 -0.620
Cargas factoriales rotadas mediante el criterio Promax para tres factores.
Variable Factor.1 Factor.2 Factor.3
Ingreso NA 0.898 0.137
Avalúo 0.340 0.630 -0.227
Pobreza NA -0.208 -0.643
Pregrado 0.886 0.168 NA
Secundaria 0.407 -0.127 0.583
Posgrado 0.776 0.237 NA
Desempleo NA NA -0.437
Fuerza laboral NA 0.291 0.151
Propietarios -0.355 NA 0.598

Lo primero que salta a la vista en la tabla para tres factores es que esta rotación no mejora la interpretabilidad del modelo, pues Pobreza, Secundaria, Desempleo y Propietarios no parecen representar una dimensión latente conceptualmente específica. Lo segundo es que nuevamente, en la Tabla de dos factores, vemos que el primer factor queda determinado por Ingreso, Avalúo, Pregrado y Posgrado; mientras que el segundo, por Pobreza, Propietarios y Desempleo. Secundaria continúa teniendo cargas cruzadas, y Fuerza laboral no está bien representada por ninguno de los dos factores. En efecto, la estructura permaneció inalterada para estos dos factores tras la rotación oblicua, lo cual es señal de que la estructura es estable.

Finalmente, las estimaciones de \(\mathbf{\Phi}\) para los modelos de dos y tres factores son, respectivamente, \[ \widehat{\mathbf{\Phi}}_1:=\begin{bmatrix} 1 & -0.437 \\ -0.437 & 1 \end{bmatrix}\qquad\mbox{y}\qquad\widehat{\mathbf{\Phi}}_2:=\begin{bmatrix} 1 & 0.56 & 0.22 \\ 0.56 & 1 & 0.44 \\ 0.22 & 0.44 & 1 \end{bmatrix}. \]

De \(\widehat{\mathbf{\Phi}}_1\) podemos evidenciar que los dos factores comunes presentan una correlación estimada moderada negativa de aproximadamente \(-0.44\), con lo cual fue una decisión razonable aplicar rotación oblicua al existir evidencia de que los factores no son completamente independientes. Resaltamos que, aunque éstos resultaron correlacionados, la estructura de cargas prácticamente no cambió respecto a Varimax, de manera que la solución ortogonal ya estaba describiendo bastante bien la estructura de los datos. En efecto, permitir correlación entre los factores no modificó sustancialmente la interpretación.

Es en este punto que tomamos la decisión de adoptar la solución de dos factores, pues ofrece un mejor equilibrio entre parsimonia, estabilidad e interpretabilidad que el modelo de tres factores. En otras palabras, fijamos \(m:=2\).

Toda esta discusión se resume en un gráfico conocido como diagrama factorial:

fa.diagram(af_promax2)

Nótese que, según el criterio programado en el paquete psych de R, Secundaria sí logra ser incluida en la dimensión latente de Desarrollo económico-educativo, con lo cual asume como significativa la diferencia de \(13\) centésimas entre las magnitudes de las cargas factoriales estimadas a favor del Factor 1.

Como las comunalidades y unicidades estimadas no se ven afectadas por las rotaciones, éstas siguen siendo las dadas en la tabla de comunalidades y unicidades bajo el método de extracción de máxima verosimilitud para dos factores. De ellas podemos interpretar que el modelo de dos factores explica aproximadamente el 69.4% de la variabilidad observada en el ingreso mediano de los hogares estadounidenses dentro de las ZCTAs, mientras que el 30.6% restante corresponde a variación específica de esta variable o a error. Para el caso del avalúo mediano de las viviendas, los factores explican cerca del 52% de la variabilidad, aunque aproximadamente la mitad de la variación sigue siendo específica. Además, el modelo captura cerca del 75% de la información contenida en la tasa de pobreza en Estados Unidos, constituyéndose en una de las mejores representada. Así como con ésta, el modelo explica aproximadamente el 94% de la variabilidad del porcentaje de ciudadanos estadounidenses que completaron un pregrado, y así esta variable está prácticamente determinada por los dos factores latentes.

En contraste con lo reportado en el diagrama factorial, sólo el 38% de la variabilidad del porcentaje de ciudadanos graduados de secundaria queda explicada por el modelo, mientras que más del 60% permanece sin explicar; esto es coherente con lo que ya habíamos observado en las cargas factoriales estimadas: Secundaria presenta cargas cruzadas y no se asocia claramente con uno de los dos factores. Para los ciudadanos estadounidenses graduados de un posgrado, los factores explican cerca del 87% de la variabilidad de sus porcentajes. La variable peor representada resulta ser Desempleo, pues sólo el 16% de su variabilidad es explicada por los factores comunes; esto sugiere que el desempleo depende de otros procesos que no están recogidos por las dimensiones latentes identificadas. Algo similar ocurre con el porcentaje de ciudadanos pertenecientes a la fuerza laboral, pues los factores apenas explican el 18% de su variabilidad; esto coincide con que sus cargas factoriales fueron pequeñas en ambos factores y está en sintonía con el diagrama factorial. Finalmente, el modelo explica únicamente el 31% de la variabilidad en el porcentaje de viviendas ocupadas por su propietario en Estados Unidos, siendo así una variable moderadamente mal representada.

Teniendo en cuenta todo lo anterior, el modelo factorial ajustado para las \(9\) variables estudiadas en las s es dado por \[ \small \widehat{\mathbf{R}}=\begin{bmatrix} 0.635 & -0.329 \\ 0.749 & 0.065 \\ -0.122 & 0.803 \\ 1.025 & 0.142 \\ 0.371 & -0.358 \\ 1.007 & 0.227 \\ -0.011 & 0.399 \\ 0.258 & -0.250 \\ -0.303 & -0.620 \end{bmatrix}\begin{bmatrix} 1 & -0.437 \\ -0.437 & 1 \end{bmatrix}\begin{bmatrix} 0.635 & -0.329 \\ 0.749 & 0.065 \\ -0.122 & 0.803 \\ 1.025 & 0.142 \\ 0.371 & -0.358 \\ 1.007 & 0.227 \\ -0.011 & 0.399 \\ 0.258 & -0.250 \\ -0.303 & -0.620 \end{bmatrix}^\top+\begin{bmatrix} 0.30 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0.48 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0.25 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0.06 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0.62 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0.13 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0.84 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0.81 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0.69 \end{bmatrix}. \]

Cabe recordar que este análisis se realizó sobre una muestra de miles de ZCTAs de Estados Unidos para el año 2023. En consecuencia, los factores identificados describen la estructura de dependencia existente entre los indicadores socioeconómicos de dichas áreas geográficas. Dado que las ZCTAs abarcan prácticamente la totalidad del territorio estadounidense, los factores identificados pueden interpretarse como una caracterización de la estructura socioeconómica observada entre estas áreas geográficas para el año 2023.

Aunque el Análisis factorial no permite establecer relaciones causales entre las variables, sí constituye una herramienta útil para sintetizar múltiples indicadores socioeconómicos en un reducido número de dimensiones latentes. Éstas pueden emplearse para caracterizar áreas geográficas, identificar patrones territoriales y apoyar la priorización de intervenciones públicas, sirviendo como insumo para la construcción de índices compuestos o para análisis posteriores de naturaleza explicativa.

Nota metodológica

La base de datos empleada en este ejemplo de aplicación fue construida a partir de información de la API (Application Programming Interface) del Census Bureau: https://api.census.gov/data/2023/acs/acs5/subject/groups/. Para este ejemplo, se extrajo toda la información necesaria mediante la librería tidycensus de R. Para ello, es necesario instalarla en el programa y registrarse en https://api.census.gov/data/create_success.html para obtener una API key y poder así tener acceso a la información de la ACS. Una vez ésta haya sido enviada por correo, se escribe en R census\_api\_key("xxxxx", install = TRUE) y se ejecuta una sola vez. Posteriormente, con el comando get\_acs, cuyos parámetros son el área geográfica, los nombres de las variables y el quinquenio de interés (en el caso de trabajar con ZCTAs), se extraen los datos deseados.

\[\phantom{\begin{pmatrix} 1 \\ 2 \\ 3 \\ 4 \\ \end{pmatrix}}\]