6  Análisis Factorial Confirmatorio

El Análisis Factorial Confirmatorio (CFA) es un enfoque de modelado de variables latentes utilizado para evaluar si un modelo de medición especificado teóricamente es compatible con los datos observados. En un CFA, el investigador establece de antemano qué indicadores se espera que representen qué factores latentes y después evalúa las consecuencias de esa especificación (Bollen, 1989; Kline, 2023).

Por ello, el CFA resulta especialmente útil cuando una estructura de medición ya ha sido propuesta por la teoría, investigaciones previas, un EFA anterior o el propio diseño del instrumento. También puede utilizarse para comparar modelos de medición alternativos plausibles.

NotaMapa del capítulo

Este capítulo desarrolla el CFA mediante seis preguntas conectadas:

  1. ¿Qué diferencia al CFA del EFA?
  2. ¿Cómo se especifica matemáticamente un modelo CFA?
  3. ¿Cuándo está identificado un modelo CFA?
  4. ¿Qué nos dicen realmente los índices de ajuste habituales?
  5. ¿Por qué un buen ajuste no demuestra la teoría de medición?
  6. ¿Cómo podemos especificar, ajustar, inspeccionar y reportar modelos CFA en R?

6.1 ¿Qué Es el Análisis Factorial Confirmatorio?

Supongamos un cuestionario destinado a medir dos dimensiones: Extraversión y Neuroticismo. Si la teoría establece que los Ítems 1–4 miden Extraversión y los Ítems 5–8 miden Neuroticismo, el CFA permite codificar directamente esa estructura y evaluar qué tan bien reproduce las relaciones observadas entre los ítems.

Esta es la diferencia central respecto del EFA. En EFA, el patrón de cargas se estima con mayor libertad y se utiliza rotación para buscar una estructura factorial interpretable. En CFA, el investigador especifica un modelo más explícito antes de la estimación.

EFA CFA
El patrón de cargas se explora con mayor libertad El patrón de cargas se especifica más explícitamente
Las cargas cruzadas generalmente se estiman Algunas cargas cruzadas suelen fijarse en cero
La rotación es central para la interpretación La estructura de cargas hipotetizada define la orientación de los factores
La retención de factores es una parte importante del análisis El número de factores suele especificarse antes de ajustar el modelo
Útil para la exploración estructural Útil para evaluar un modelo de medición especificado teóricamente
ImportanteConfirmatorio no significa demostrado

Un CFA puede mostrar que los datos observados son compatibles o incompatibles con un modelo de medición especificado. No puede demostrar que ese modelo sea la verdadera explicación psicológica de los datos. Otros modelos pueden reproducir estructuras de covarianza muy semejantes (Bork et al., 2017; Kruis & Maris, 2016; Schmittmann et al., 2013).

6.1.1 ¿Cuándo es útil el CFA?

Entre las aplicaciones comunes se encuentran:

  • evaluar una estructura factorial propuesta en investigaciones previas;
  • evaluar si una estructura encontrada en una población también es plausible en otra;
  • contrastar estructuras factoriales teóricamente competidoras;
  • evaluar modelos de orden superior o bifactor;
  • evaluar invarianza de medición entre grupos u ocasiones; y
  • examinar hipótesis específicas sobre correlaciones factoriales, cargas o relaciones residuales.

Por tanto, el CFA no está restringido a situaciones en las que un estudio previo ya haya realizado un EFA. El requisito importante es que las restricciones impuestas al CFA tengan una justificación sustantiva.

6.2 El Modelo de Medición CFA

Una notación habitual para un modelo de medición es

\[ \mathbf{x} = \mathbf{\Lambda}\boldsymbol{\eta} + \boldsymbol{\epsilon}, \]

donde:

  • \(\mathbf{x}\) es el vector de indicadores observados;
  • \(\boldsymbol{\eta}\) es el vector de factores latentes;
  • \(\mathbf{\Lambda}\) es la matriz de cargas factoriales; y
  • \(\boldsymbol{\epsilon}\) es el vector de residuos o perturbaciones de medición específicos de los indicadores (Bollen, 1989).

Para un único indicador,

\[ x_i = \lambda_{i1}\eta_1 + \lambda_{i2}\eta_2 + \cdots + \lambda_{im}\eta_m + \epsilon_i. \]

La carga factorial \(\lambda_{im}\) describe con qué fuerza el indicador \(i\) se relaciona con el factor \(m\) bajo el modelo especificado.

6.2.1 Un ejemplo de dos factores

Imagine ocho indicadores. Los primeros cuatro se especifican como indicadores de Extraversión y los últimos cuatro como indicadores de Neuroticismo. Un modelo CFA sencillo puede escribirse como

\[ \begin{bmatrix} x_1\\ x_2\\ x_3\\ x_4\\ x_5\\ x_6\\ x_7\\ x_8 \end{bmatrix} = \begin{bmatrix} \lambda_{11} & 0\\ \lambda_{21} & 0\\ \lambda_{31} & 0\\ \lambda_{41} & 0\\ 0 & \lambda_{52}\\ 0 & \lambda_{62}\\ 0 & \lambda_{72}\\ 0 & \lambda_{82} \end{bmatrix} \begin{bmatrix} \eta_1\\ \eta_2 \end{bmatrix} + \begin{bmatrix} \epsilon_1\\ \epsilon_2\\ \epsilon_3\\ \epsilon_4\\ \epsilon_5\\ \epsilon_6\\ \epsilon_7\\ \epsilon_8 \end{bmatrix}. \]

Los ceros son sustantivamente importantes. Expresan la hipótesis de que, por ejemplo, un indicador asignado únicamente a Extraversión no tiene una carga directa sobre Neuroticismo en este modelo CFA particular.

Un CFA reflexivo estándar también supone que las variables latentes no están correlacionadas con los residuos de sus indicadores:

\[ \operatorname{Cov}(\eta_j,\epsilon_i)=0. \]

Los residuos suelen asumirse inicialmente no correlacionados entre sí, salvo que el modelo incluya explícitamente covarianzas residuales.

TipLea un modelo CFA como un conjunto de afirmaciones

Una carga cero no es una celda vacía: es una restricción. Del mismo modo, una correlación factorial fijada, una restricción de igualdad o una covarianza residual constituyen afirmaciones teóricas/estadísticas incorporadas al modelo. El CFA es útil precisamente porque esas restricciones tienen consecuencias observables.

6.3 El CFA Es Más Restrictivo que el EFA

Es frecuente describir EFA como «no restringido» y CFA como «restringido», pero esta simplificación debe utilizarse con cuidado. EFA no es un modelo saturado en el sentido habitual de los modelos de ecuaciones estructurales. Sigue imponiendo una estructura de factores comunes y requiere restricciones de identificación. Simplemente es menos restrictivo que un CFA convencional de conglomerados independientes porque las cargas cruzadas suelen estimarse en lugar de fijarse en cero.

Un CFA convencional podría especificar:

Indicador Factor 1 Factor 2
V1 estimada 0
V2 estimada 0
V3 estimada 0
V4 0 estimada
V5 0 estimada
V6 0 estimada

En un EFA con dos factores retenidos, cada ítem normalmente tendría una carga estimada en ambos factores antes de la rotación.

NotaPor qué importa esta distinción

Un CFA con mal ajuste no significa necesariamente que los factores propuestos no existan. El modelo puede ser demasiado restrictivo, por ejemplo porque pequeñas cargas cruzadas o relaciones residuales fueron fijadas en cero. La pregunta es si esas relaciones adicionales son sustantivamente defendibles, no simplemente si liberarlas mejora el ajuste.

6.4 Identificación del Modelo

Antes de interpretar un CFA, el modelo debe estar identificado (Bollen, 1989). La identificación pregunta si la información observada es suficiente para estimar de manera única los parámetros desconocidos.

6.4.1 Contar la información observada

Con \(p\) variables observadas y sin estructura de medias, la matriz de covarianza muestral contiene

\[ \frac{p(p+1)}{2} \]

piezas únicas de información: \(p\) varianzas y

\[ \frac{p(p-1)}{2} \]

covarianzas únicas.

Para cuatro indicadores:

\[ \frac{4(4+1)}{2}=10. \]

Esos diez momentos muestrales consisten en cuatro varianzas y seis covarianzas.

6.4.2 Un ejemplo de un factor

Supongamos un CFA unifactorial con cuatro indicadores. Si la varianza del factor se fija en 1 para definir la escala de la variable latente, estimamos:

  • 4 cargas factoriales; y
  • 4 varianzas residuales.

Esto produce ocho parámetros libres. Como la matriz de covarianza proporciona diez momentos muestrales únicos,

\[ df = 10 - 8 = 2. \]

El modelo está, por tanto, sobreidentificado e impone restricciones evaluables sobre la matriz de covarianza.

Con solo tres indicadores, la matriz de covarianza proporciona

\[ \frac{3(3+1)}{2}=6 \]

momentos muestrales. Un modelo unifactorial con tres cargas libremente estimadas y tres varianzas residuales, después de fijar la varianza del factor en 1, también contiene seis parámetros libres. Por tanto,

\[ df=0. \]

Este es un modelo justo-identificado.

Grados de libertad Estado de identificación Implicación
\(df < 0\) Subidentificado No hay suficiente información para estimar todos los parámetros de manera única
\(df = 0\) Justo-identificado Los parámetros pueden ser estimables, pero el modelo reproduce exactamente los momentos muestrales, por lo que no puede evaluarse el ajuste global
\(df > 0\) Sobreidentificado El modelo impone restricciones evaluables y puede examinarse el ajuste global
AdvertenciaCorrección de un malentendido frecuente

Un modelo con \(df=0\) no está subidentificado: está justo-identificado. Además, un modelo no necesita \(df>1\) para ser evaluable; cualquier número positivo de grados de libertad representa un modelo sobreidentificado. En modelos más complejos, la identificación puede requerir condiciones adicionales más allá del simple recuento de parámetros (Bollen, 1989).

6.4.3 Definir la escala de la variable latente

Como las variables latentes no se observan, debe definirse su escala numérica. Dos enfoques comunes son:

  1. Método de variable marcadora: fijar una carga factorial en 1.
  2. Método de factor fijo: fijar la varianza del factor en 1 y estimar todas las cargas.

lavaan utiliza por defecto el método de variable marcadora. Como alternativa, std.lv = TRUE fija las varianzas latentes en 1 (Rosseel, 2012).

6.5 Ajuste del Modelo: ¿Qué Estamos Comparando?

Una vez identificado y estimado el modelo, preguntamos qué tan bien la matriz de covarianza implicada por el modelo reproduce la matriz de covarianza observada.

Sea

\[ \mathbf{S} \]

la matriz de covarianza observada y

\[ \mathbf{\Sigma}(\theta) \]

la matriz de covarianza implicada por los parámetros del modelo \(\theta\). La estimación CFA busca valores paramétricos que hagan que \(\mathbf{\Sigma}(\theta)\) sea suficientemente próxima a \(\mathbf{S}\) de acuerdo con la función de ajuste del estimador (Bollen, 1989; Kline, 2023).

ImportanteEl ajuste se refiere a las consecuencias del modelo

Los índices de ajuste evalúan discrepancias entre relaciones observadas e implicadas por el modelo. No examinan directamente si la historia causal psicológica asociada a la variable latente es verdadera.

6.6 Estadísticos e Índices de Ajuste Habituales

En lugar de tratar el ajuste como un único número, conviene considerar varios tipos de evidencia.

Estadístico / índice Pregunta principal
Prueba \(\chi^2\) ¿Se rechaza el ajuste exacto del modelo?
RMSEA ¿Cuánto desajuste aproximado existe en relación con la complejidad del modelo?
SRMR ¿Qué tan grandes son las discrepancias residuales estandarizadas?
CFI ¿Cuánto mejor es el modelo objetivo que un modelo base de independencia?
TLI Similar a CFI, con una penalización mayor por complejidad del modelo

6.6.1 Prueba de chi-cuadrado

El chi-cuadrado del modelo evalúa una hipótesis nula de ajuste exacto. En términos generales,

\[ H_0:\mathbf{\Sigma}(\theta)=\mathbf{\Sigma}. \]

Un resultado estadísticamente significativo indica evidencia contra el ajuste exacto. Como el estadístico chi-cuadrado es sensible al tamaño muestral y a la mala especificación, normalmente se interpreta junto con otros diagnósticos y no como único criterio para decidir si un modelo es aceptable (Kline, 2023).

6.6.2 RMSEA

El Root Mean Square Error of Approximation (RMSEA) es un índice de ajuste aproximado derivado del chi-cuadrado del modelo y de sus grados de libertad. Valores menores indican menor discrepancia aproximada por grado de libertad (Steiger & Lind, 1980).

Preferentemente, RMSEA debe informarse junto con su intervalo de confianza y no como un único número.

6.6.3 CFI y TLI

El Comparative Fit Index (CFI) compara el modelo ajustado con un modelo base en el que las variables observadas se tratan como mutuamente independientes (Bentler, 1990).

El Tucker–Lewis Index (TLI) es otro índice incremental que también incorpora la complejidad del modelo (Tucker & Lewis, 1973).

Valores mayores indican una mejora mayor respecto del modelo base.

6.6.4 SRMR

El Standardized Root Mean Square Residual (SRMR) resume la discrepancia estandarizada entre relaciones observadas e implicadas por el modelo. Valores menores indican discrepancias residuales más pequeñas.

6.7 ¿Debemos Utilizar Puntos de Corte Universales?

Uno de los estudios de simulación más influyentes sugirió combinaciones como CFI/TLI aproximadamente \(\ge .95\) y RMSEA \(\le .06\) bajo determinadas condiciones de datos continuos (Hu & Bentler, 1999). Estos valores se repiten ampliamente como si fueran leyes universales.

No lo son.

El comportamiento de los puntos de corte depende de características como el estimador, tamaño muestral, número de indicadores, cargas factoriales, complejidad del modelo, características distribucionales y si los indicadores son continuos o categóricos. Para datos categóricos ordenados, por ejemplo, el comportamiento de RMSEA, CFI y TLI depende fuertemente del método de estimación (Xia & Yang, 2019).

AdvertenciaEvite el enfoque de semáforo para el ajuste

No reduzca el CFA a:

CFI > .95 = bueno; RMSEA < .06 = bueno; por tanto, el modelo es verdadero.

Los índices de ajuste son resúmenes diagnósticos. Interprételos junto con el propósito del modelo, los residuos, las estimaciones de parámetros, la plausibilidad teórica, el tipo de datos, el estimador y modelos alternativos plausibles.

6.8 Los Modelos Flexibles Pueden Ajustarse Bien por la Razón Equivocada

Un modelo puede obtener mejor ajuste simplemente porque es más flexible. Bonifay & Cai (2017) mostró que modelos de variables latentes altamente parametrizados pueden poseer una considerable propensión al ajuste. Esto es especialmente relevante para modelos bifactor y otros modelos flexibles: un ajuste superior no significa automáticamente que una representación más compleja sea psicológicamente preferible.

Esta es una razón por la que comparar modelos únicamente por el CFI más alto o el RMSEA más bajo puede ser engañoso. La interpretación debe considerar parsimonia, comportamiento de los parámetros, significado teórico y si la flexibilidad adicional representa relaciones de medición plausibles.

6.9 El Ajuste No Evalúa Toda la Interpretación Causal

Los modelos factoriales reflexivos suelen interpretarse como si la variación en un atributo latente explicara la variación en sus indicadores. Por ejemplo, se supone que mayor autoestima produce cambios sistemáticos en las respuestas a los ítems de autoestima (Bork et al., 2017).

Sin embargo, una estructura de covarianza por sí sola puede ser compatible con diferentes explicaciones sustantivas. Los modelos de red, por ejemplo, permiten que las variables observadas estén conectadas directamente en lugar de atribuir toda su variación compartida a una causa latente común (Epskamp et al., 2018; Schmittmann et al., 2013).

Trabajos de simulación y teóricos también han mostrado que los modelos factoriales y de red pueden implicar en ocasiones estructuras de covarianza observables equivalentes o muy semejantes (Kan et al., 2020; Kruis & Maris, 2016; McFarland, 2020).

NotaConexión con el capítulo sobre variables latentes

Esta es la misma distinción desarrollada en Capítulo 3. Un modelo factorial con buen ajuste aporta evidencia de que sus restricciones estadísticas son compatibles con los datos. Por sí solo, no establece que la variable latente sea la verdadera causa común de los indicadores. Los enfoques basados en tétradas intentan evaluar restricciones adicionales de covarianza implicadas por estructuras de causa común (Franco et al., 2023).

6.10 Índices de Modificación y Correlaciones Residuales

Un CFA rara vez se ajusta perfectamente. El software puede sugerir parámetros que, si se liberan, se espera que mejoren el ajuste. Estas sugerencias se informan habitualmente como índices de modificación.

Entre los candidatos típicos se encuentran:

  • una carga cruzada actualmente fijada en cero;
  • una covarianza residual entre dos indicadores; o
  • otro parámetro fijado.

Los índices de modificación pueden ser diagnósticos útiles, pero no deberían utilizarse como un algoritmo automático de construcción del modelo.

Por ejemplo, dos ítems pueden compartir covarianza residual porque tienen una redacción muy similar, se refieren a la misma situación o contienen un efecto de método compartido. En ese caso, permitir que sus residuos correlacionen puede tener una interpretación sustantiva defendible. Añadir correlaciones residuales solo porque mejoran CFI o RMSEA corre el riesgo de adaptar el modelo al ruido específico de la muestra.

TipUna mejor pregunta ante una modificación

En lugar de preguntar:

¿Qué parámetro debo liberar para mejorar el ajuste?

pregunte:

¿Qué característica sustantiva de estos indicadores justificaría la relación adicional?

6.11 Cómo Ejecutar un CFA en R

El tutorial siguiente utiliza lavaan (Rosseel, 2012) y el conjunto de datos HolzingerSwineford1939. Este conjunto clásico contiene nueve variables de habilidad mental representadas habitualmente mediante tres dimensiones latentes (Holzinger & Swineford, 1939).

6.11.1 Instalar y cargar lavaan

La instalación solo debe realizarse una vez:

install.packages("lavaan")

Luego cargue el paquete:

library(lavaan)
This is lavaan 0.7-2
lavaan is FREE software! Please report any bugs.

6.11.2 Especificar el modelo

El modelo de tres factores contiene:

  • visual: x1, x2, x3;
  • textual: x4, x5, x6; y
  • speed: x7, x8, x9.
HS.model <- '
  visual  =~ x1 + x2 + x3
  textual =~ x4 + x5 + x6
  speed   =~ x7 + x8 + x9
'

En lavaan, el operador =~ significa es medido por. La variable latente se escribe a la izquierda y sus indicadores a la derecha.

6.11.3 Ajustar el modelo

Para estas variables continuas de demostración, podemos ajustar el modelo mediante máxima verosimilitud:

cfa.fit <- lavaan::cfa(
  model = HS.model,
  data = lavaan::HolzingerSwineford1939,
  estimator = "ML"
)

Inspeccione la salida principal:

summary(
  cfa.fit,
  fit.measures = TRUE,
  standardized = TRUE
)
lavaan 0.7-2 ended normally after 35 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        21

  Number of observations                           301

Model Test User Model:
                                                      
  Test statistic                                85.306
  Degrees of freedom                                24
  P-value (Chi-square)                           0.000

Model Test Baseline Model:

  Test statistic                               918.852
  Degrees of freedom                                36
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.931
  Tucker-Lewis Index (TLI)                       0.896

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -3737.745
  Loglikelihood unrestricted model (H1)      -3695.092
                                                      
  Akaike (AIC)                                7517.490
  Bayesian (BIC)                              7595.339
  Sample-size adjusted Bayesian (SABIC)       7528.739

Root Mean Square Error of Approximation:

  RMSEA                                          0.092
  90 Percent confidence interval - lower         0.071
  90 Percent confidence interval - upper         0.114
  P-value H_0: RMSEA <= 0.050                    0.001
  P-value H_0: RMSEA >= 0.080                    0.840

Standardized Root Mean Square Residual:

  SRMR                                           0.065

Goodness of Fit Index:

  Goodness of Fit Index (GFI)                    0.959
  90 Percent confidence interval - lower         0.939
  90 Percent confidence interval - upper         0.976

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  visual =~                                                             
    x1                1.000                               0.900    0.772
    x2                0.554    0.100    5.554    0.000    0.498    0.424
    x3                0.729    0.109    6.685    0.000    0.656    0.581
  textual =~                                                            
    x4                1.000                               0.990    0.852
    x5                1.113    0.065   17.014    0.000    1.102    0.855
    x6                0.926    0.055   16.703    0.000    0.917    0.838
  speed =~                                                              
    x7                1.000                               0.619    0.570
    x8                1.180    0.165    7.152    0.000    0.731    0.723
    x9                1.082    0.151    7.155    0.000    0.670    0.665

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  visual ~~                                                             
    textual           0.408    0.074    5.552    0.000    0.459    0.459
    speed             0.262    0.056    4.660    0.000    0.471    0.471
  textual ~~                                                            
    speed             0.173    0.049    3.518    0.000    0.283    0.283

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .x1                0.549    0.114    4.833    0.000    0.549    0.404
   .x2                1.134    0.102   11.146    0.000    1.134    0.821
   .x3                0.844    0.091    9.317    0.000    0.844    0.662
   .x4                0.371    0.048    7.779    0.000    0.371    0.275
   .x5                0.446    0.058    7.642    0.000    0.446    0.269
   .x6                0.356    0.043    8.277    0.000    0.356    0.298
   .x7                0.799    0.081    9.823    0.000    0.799    0.676
   .x8                0.488    0.074    6.573    0.000    0.488    0.477
   .x9                0.566    0.071    8.003    0.000    0.566    0.558
    visual            0.809    0.145    5.564    0.000    1.000    1.000
    textual           0.979    0.112    8.737    0.000    1.000    1.000
    speed             0.384    0.086    4.451    0.000    1.000    1.000

La salida contiene estimaciones de parámetros, covarianzas factoriales, la prueba chi-cuadrado del modelo y varios índices de ajuste.

6.11.4 Extraer las medidas de ajuste más comunes

En lugar de buscar manualmente en toda la salida impresa, podemos solicitar un conjunto compacto de estadísticos:

fitMeasures(
  cfa.fit,
  c(
    "chisq",
    "df",
    "pvalue",
    "cfi",
    "tli",
    "rmsea",
    "rmsea.ci.lower",
    "rmsea.ci.upper",
    "srmr"
  )
)
         chisq             df         pvalue            cfi            tli 
        85.306         24.000          0.000          0.931          0.896 
         rmsea rmsea.ci.lower rmsea.ci.upper           srmr 
         0.092          0.071          0.114          0.065 

Esto suele ser más sencillo al preparar tablas o un informe.

6.11.5 Inspeccionar las cargas estandarizadas

standardizedSolution(cfa.fit)
lhs op rhs est.std se z pvalue ci.lower ci.upper
visual =~ x1 0.7718804 0.0549727 14.041152 0.00e+00 0.6641359 0.8796250
visual =~ x2 0.4236010 0.0596191 7.105120 0.00e+00 0.3067497 0.5404523
visual =~ x3 0.5811323 0.0551393 10.539347 0.00e+00 0.4730613 0.6892034
textual =~ x4 0.8515822 0.0225431 37.775746 0.00e+00 0.8073986 0.8957659
textual =~ x5 0.8550654 0.0223412 38.272946 0.00e+00 0.8112774 0.8988535
textual =~ x6 0.8380101 0.0233552 35.881126 0.00e+00 0.7922348 0.8837854
speed =~ x7 0.5695147 0.0531549 10.714253 0.00e+00 0.4653331 0.6736963
speed =~ x8 0.7230444 0.0505306 14.309048 0.00e+00 0.6240063 0.8220825
speed =~ x9 0.6650092 0.0510943 13.015321 0.00e+00 0.5648662 0.7651523
x1 x1 0.4042006 0.0848647 4.762880 1.90e-06 0.2378688 0.5705325
x2 x2 0.8205622 0.0505094 16.245721 0.00e+00 0.7215655 0.9195589
x3 x3 0.6622852 0.0640865 10.334244 0.00e+00 0.5366781 0.7878924
x4 x4 0.2748077 0.0383946 7.157458 0.00e+00 0.1995557 0.3500597
x5 x5 0.2688631 0.0382065 7.037110 0.00e+00 0.1939798 0.3437464
x6 x6 0.2977391 0.0391437 7.606301 0.00e+00 0.2210188 0.3744595
x7 x7 0.6756530 0.0605450 11.159526 0.00e+00 0.5569871 0.7943190
x8 x8 0.4772067 0.0730717 6.530664 0.00e+00 0.3339888 0.6204247
x9 x9 0.5577627 0.0679564 8.207654 0.00e+00 0.4245706 0.6909549
visual visual 1.0000000 0.0000000 NA NA 1.0000000 1.0000000
textual textual 1.0000000 0.0000000 NA NA 1.0000000 1.0000000
speed speed 1.0000000 0.0000000 NA NA 1.0000000 1.0000000
visual textual 0.4585093 0.0637794 7.188993 0.00e+00 0.3335041 0.5835145
visual speed 0.4705345 0.0728267 6.461017 0.00e+00 0.3277968 0.6132722
textual speed 0.2829847 0.0687293 4.117382 3.83e-05 0.1482778 0.4176916

Para conservar únicamente las cargas factoriales:

subset(
  standardizedSolution(cfa.fit),
  op == "=~"
)
lhs op rhs est.std se z pvalue ci.lower ci.upper
visual =~ x1 0.7718804 0.0549727 14.04115 0 0.6641359 0.8796250
visual =~ x2 0.4236010 0.0596191 7.10512 0 0.3067497 0.5404523
visual =~ x3 0.5811323 0.0551393 10.53935 0 0.4730613 0.6892034
textual =~ x4 0.8515822 0.0225431 37.77575 0 0.8073986 0.8957659
textual =~ x5 0.8550654 0.0223412 38.27295 0 0.8112774 0.8988535
textual =~ x6 0.8380101 0.0233552 35.88113 0 0.7922348 0.8837854
speed =~ x7 0.5695147 0.0531549 10.71425 0 0.4653331 0.6736963
speed =~ x8 0.7230444 0.0505306 14.30905 0 0.6240063 0.8220825
speed =~ x9 0.6650092 0.0510943 13.01532 0 0.5648662 0.7651523

La carga estandarizada expresa la fuerza de la relación entre un indicador y su factor en una métrica estandarizada.

6.12 ¿Cómo Se Define la Escala del Factor?

Por defecto, lavaan fija en 1 la primera carga de cada factor. Este es el método de variable marcadora y define la escala de la variable latente (Rosseel, 2012).

Por ejemplo, el modelo predeterminado se comporta conceptualmente como:

visual =~ 1*x1 + x2 + x3

La carga fijada en 1 es una restricción de escala, no un hallazgo empírico.

Si preferimos fijar la varianza latente en 1 y estimar todas las cargas, podemos utilizar:

cfa.fit.std.lv <- lavaan::cfa(
  HS.model,
  data = lavaan::HolzingerSwineford1939,
  estimator = "ML",
  std.lv = TRUE
)

Ambos enfoques identifican la escala latente, aunque la parametrización no estandarizada difiere.

6.13 Restringir las Correlaciones entre Factores

Por defecto, se permite que los factores latentes exógenos de este CFA estén correlacionados. Supongamos que la teoría propone que los tres factores son ortogonales. Podemos fijar sus covarianzas en cero:

HS.orthogonal <- '
  visual  =~ x1 + x2 + x3
  textual =~ x4 + x5 + x6
  speed   =~ x7 + x8 + x9

  visual  ~~ 0*textual
  visual  ~~ 0*speed
  textual ~~ 0*speed
'

Ajuste el modelo restringido:

cfa.fit.orthogonal <- lavaan::cfa(
  HS.orthogonal,
  data = lavaan::HolzingerSwineford1939,
  estimator = "ML"
)

El operador ~~ representa una relación de varianza o covarianza. Por tanto,

visual ~~ 0*textual

fija en cero la covarianza entre ambos factores.

AdvertenciaLas restricciones necesitan una razón

El software permite fijar casi cualquier parámetro en casi cualquier valor. La posibilidad estadística no constituye justificación teórica. Siempre que sea posible, las restricciones deben representar una hipótesis sustantiva.

6.14 Inspeccionar los Índices de Modificación

Podemos examinar los mayores índices de modificación con:

mi <- modindices(cfa.fit, sort. = TRUE)

head(mi, 10)
lhs op rhs mi epc sepc.lv sepc.all sepc.nox
30 visual =~ x9 36.411031 0.5770215 0.5191001 0.5152491 0.5152491
76 x7 x8 34.145089 0.5364440 0.5364440 0.8591510 0.8591510
28 visual =~ x7 18.630638 -0.4218624 -0.3795158 -0.3489088 -0.3489088
78 x8 x9 14.946392 -0.4230959 -0.4230959 -0.8052026 -0.8052026
33 textual =~ x3 9.150895 -0.2716376 -0.2688377 -0.2380993 -0.2380993
55 x2 x7 8.918022 -0.1827254 -0.1827254 -0.1919302 -0.1919302
31 textual =~ x1 8.902732 0.3503311 0.3467201 0.2974884 0.2974884
51 x2 x3 8.531827 0.2182393 0.2182393 0.2230502 0.2230502
59 x3 x5 7.858085 -0.1300947 -0.1300947 -0.2119402 -0.2119402
26 visual =~ x5 7.440646 -0.2098980 -0.1888284 -0.1465688 -0.1465688

Un índice de modificación grande sugiere que liberar un parámetro actualmente fijado puede mejorar el ajuste. Antes de hacerlo, inspeccione el parámetro y pregunte si la relación adicional es teóricamente plausible.

6.15 CFA con Indicadores Ordinales

Muchos ítems psicológicos son categóricos ordenados y no continuos. Por ejemplo, respuestas tipo Likert como

Totalmente en desacuerdo → En desacuerdo → Neutral → De acuerdo → Totalmente de acuerdo

son indicadores ordinales.

Para variables endógenas ordenadas, lavaan puede ajustar el CFA mediante WLSMV. La plantilla siguiente supone que item1 a item8 son ordinales:

ordinal_items <- paste0("item", 1:8)

ordinal.model <- '
  Factor1 =~ item1 + item2 + item3 + item4
  Factor2 =~ item5 + item6 + item7 + item8
'

ordinal.fit <- lavaan::cfa(
  ordinal.model,
  data = mydata,
  ordered = ordinal_items,
  estimator = "WLSMV"
)

summary(
  ordinal.fit,
  fit.measures = TRUE,
  standardized = TRUE
)

Para indicadores categóricos ordenados, el estimador y los índices de ajuste deben interpretarse en el contexto de métodos para datos categóricos, en lugar de importar automáticamente puntos de corte desarrollados para CFA continuo por máxima verosimilitud (Xia & Yang, 2019).

6.16 Puntuaciones Factoriales

Después de ajustar un CFA, podemos estimar puntuaciones factoriales para casos individuales:

factor_scores <- lavPredict(cfa.fit)

head(factor_scores)
          visual     textual       speed
[1,] -0.81767524 -0.13754501  0.06150726
[2,]  0.04951940 -1.01272402  0.62549360
[3,] -0.76139670 -1.87228634 -0.84057276
[4,]  0.41934153  0.01848569 -0.27133710
[5,] -0.41590481 -0.12225009  0.19432951
[6,]  0.02325632 -1.32981727  0.70885348

Las puntuaciones factoriales pueden ser útiles para algunos análisis posteriores, pero son cantidades estimadas y dependientes del modelo, no valores del rasgo observados directamente. Diferentes estimadores de puntuaciones y diferentes modelos de medición pueden producir puntuaciones distintas.

AdvertenciaNo confunda una puntuación factorial con el propio factor

Una variable latente continúa siendo no observada. lavPredict() proporciona una estimación de la posición de una persona bajo el modelo ajustado. Esa estimación contiene incertidumbre y hereda los supuestos del CFA.

6.17 Lista Práctica para Evaluar un CFA

Etapa Pregúntese
Teoría ¿Qué estructura factorial estoy evaluando y por qué?
Indicadores ¿Son estas variables indicadores apropiados de los factores propuestos?
Identificación ¿Está identificado el modelo y está definida la escala latente?
Estimador ¿El estimador corresponde al tipo y distribución de los indicadores?
Ajuste global ¿Qué sugieren conjuntamente \(\chi^2\), RMSEA, CFI, TLI y SRMR?
Ajuste local ¿Hay residuos grandes, señales de cargas cruzadas o índices de modificación?
Parámetros ¿Son plausibles las cargas, correlaciones factoriales y varianzas residuales?
Alternativas ¿Podría otro modelo teóricamente plausible explicar los mismos datos?
Interpretación ¿El modelo estadístico justifica las afirmaciones psicológicas que deseo realizar?

6.18 Cómo Reportar un CFA

Un informe útil debe identificar el modelo, el estimador, el tipo de datos, el tamaño muestral y la evidencia principal utilizada para evaluarlo.

Por ejemplo:

Se ajustó un análisis factorial confirmatorio de tres factores a los nueve indicadores de Holzinger–Swineford mediante estimación por máxima verosimilitud. El modelo especificó factores visual, textual y velocidad, cada uno medido por tres indicadores. El ajuste del modelo se evaluó mediante la prueba chi-cuadrado, CFI, TLI, RMSEA con su intervalo de confianza y SRMR. También se inspeccionaron las cargas factoriales estandarizadas y las correlaciones factoriales. La interpretación del ajuste consideró el patrón de índices y estimaciones de parámetros en lugar de aplicar un único punto de corte como criterio definitivo.

Al reportar su propio análisis, sustituya esta descripción general por las estimaciones reales obtenidas del modelo ajustado.

6.19 Consideraciones Finales

El CFA es potente porque convierte una teoría de medición en un conjunto de restricciones estadísticas explícitas. El investigador especifica qué indicadores representan qué factores, cómo se permite que se relacionen los factores y qué parámetros se fijan o estiman. Después, los datos observados pueden utilizarse para evaluar las consecuencias de esa especificación.

Sin embargo, la lección más importante es que ajuste del modelo no equivale a verdad del modelo. CFI, TLI, RMSEA, SRMR y la prueba chi-cuadrado resumen diferentes aspectos de la correspondencia entre el modelo y los datos observados, pero no establecen el significado psicológico de las variables latentes ni demuestran los supuestos causales que motivaron el modelo. Los modelos flexibles también pueden alcanzar buen ajuste simplemente porque tienen más formas de reproducir los datos (Bonifay & Cai, 2017).

Por ello, el CFA se entiende mejor como una parte de un proceso de validación más amplio. Su uso más sólido no consiste en obtener una colección de índices de ajuste aceptables, sino en confrontar un modelo de medición teóricamente significativo con evidencia empírica e identificar dónde coinciden la teoría y los datos —y dónde no—.