Aplicación de los Índices en Modelos Bifactor

Asignatura: Validez

Brian N. Peña-Calero

Universidad Complutense de Madrid

11 marzo, 2025

Evaluaciones de los índices en Bifactor

Rodriguez, Reise, y Haviland (2016) indica 3 aspectos interpretativos relevantes en los índices bifactor:

  1. ¿Los puntajes totales reflejan variación en una sola variable latente? (Indicadores: \(\omega\), \(\omega_H\)); y, de forma relacionada, ¿los puntajes de subescala reflejan varianza confiable independiente del factor general? (Indicadores: \(\omega_S\), \(\omega_{HS}\))

  2. ¿Pueden los ítems usarse para especificar variables latentes en un contexto SEM? Indicadores: FD, H

  3. ¿Son las medidas esencialmente unidimensionales y, por lo tanto, deben especificarse como una única variable latente en SEM?
    Indicadores: ECV, PUC

Puntajes totales en un factor general o específicos

Fiabilidad en la Teoría Clásica de los Test (TCT)

En la TCT, la fiabilidad de una medida se define como la proporción de la varianza observada que se debe a la varianza verdadera, excluyendo el error de medición. Se parte de la ecuación fundamental:

\[ O = V + e \]

Donde:

  • \(O\) es la puntuación observada en un test
  • \(V\) es la puntuación verdadera
  • \(e\) es el error de medición

Definición de Fiabilidad

Dado que la varianza de una suma de variables es:

\[ \text{Var}(O) = \text{Var}(V) + \text{Var}(e) + 2\text{Cov}(V, e) \]

Y asumiendo en la TCT que el error es aleatorio y no está correlacionado con la puntuación verdadera (\(\text{Cov}(V, e) = 0\)), tenemos:

\[ \text{Var}(O) = \text{Var}(V) + \text{Var}(e) \]

Definición de Fiabilidad

Por lo que la fiabilidad (\(\rho\)) se expresa como:

\[ \rho = \frac{\text{Var}(V)}{\text{Var}(O)} = \frac{\text{Var}(V)}{\text{Var}(V) + \text{Var}(E)} \]

Es decir, la proporción de la varianza de la puntuación observada que es atribuible a la varianza verdadera.

En el análisis factorial, se puede hacer la asunción que la carga factorial al cuadrado (\(\lambda^2 = h^2\)) puede ser entendida como la \(\text{Var}(V)\); mientras que la unicidad (\(1 - \lambda^2 = 1 - h^2 = u\)) puede ser considerado como la \(\text{Var}(E)\).

Puntajes Totales

Uno de los más reportados sería el \(\omega\), que en un modelo bifactor, representa la varianza común atribuido a la suma del factor general y los factores específicos. Un valor alto, refleja multidimensionalidad.

\[ \omega = \frac{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 + \sum_{k=1}^K \Bigl(\sum \lambda_{\text{grp}_k}\Bigr)^2 }{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 + \sum_{k=1}^K \Bigl(\sum \lambda_{\text{grp}_k}\Bigr)^2 + \sum \bigl(1 - h^2\bigr) } \]

  • \(\lambda_{\text{gen}}\): Cargas factoriales de los ítems sobre el factor general.
  • \(\lambda_{\text{grp}_k}\): Cargas factoriales de los ítems sobre el factor específico (o grupo)
  • \(1-h^2\): Representa el error de medición.

Puntajes Totales

En tanto, el \(\omega_H\) estudia esta varianza común pero solo la parte que se encuentra atribuída al Factor General, eliminando la parte de los factores específicos.

\[ \omega_H = \frac{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 }{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 + \sum_{k=1}^K \Bigl(\sum \lambda_{\text{grp}_k}\Bigr)^2 + \sum \bigl(1 - h^2\bigr) } \]

  • \(\lambda_{\text{gen}}\): Cargas factoriales de los ítems sobre el factor general.
  • \(\lambda_{\text{grp}_k}\): Cargas factoriales de los ítems sobre el factor específico (o grupo)
  • \(1-h^2\): Representa el error de medición.

Puntajes Sub-Escala:

Estima la fiabilidad de la sub-escala contando la varianza común del factor general y del factor en específico. Habitualmente esto, podría ser alto y sería un peligro evaluarlo así.

\[ \omega_S \;=\; \frac{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 \;+\; \Bigl(\sum \lambda_{k=1}\Bigr)^2 }{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 \;+\; \Bigl(\sum \lambda_{k=1}\Bigr)^2 \;+\; \sum \bigl(1 - h^2\bigr) } \]

  • \(\lambda_{\text{gen}}\): Cargas factoriales de los ítems sobre el factor general.
  • \(\lambda_{\text{grp}_k}\): Cargas factoriales de los ítems sobre el factor específico (o grupo)
  • \(1-h^2\): Representa el error de medición.

Puntajes Sub-Escala:

Este omega jerárquico evaluado en la sub-escala (\(\omega_{HS}\)) , indica que tanto de la varianza común del factor específico es únicamente del factor específico. En un modelo bifactor que se sostiene, este indicador debería ser bajo.

\[ \omega_{HS} = \frac{ \Bigl(\sum \lambda_{\text{grp}_k}\Bigr)^2 }{ \Bigl(\sum \lambda_{\text{gen}}\Bigr)^2 + \sum_{k=1}^K \Bigl(\sum \lambda_{\text{grp}_k}\Bigr)^2 + \sum \bigl(1 - h^2\bigr) } \]

  • \(\lambda_{\text{gen}}\): Cargas factoriales de los ítems sobre el factor general.
  • \(\lambda_{\text{grp}_k}\): Cargas factoriales de los ítems sobre el factor específico (o grupo)
  • \(1-h^2\): Representa el error de medición.

Interpretaciones e indicaciones

  • Instrumentos modelados de forma unifactorial pueden presentar una estimación de fiabilidad \(\omega\) muy alta, a pesar de que ese único factor podría tener un ajuste cuestionable o no estar representando realmente un único factor.

  • De forma similar sucederían en los modelos multifactoriales, en los que las estimaciones de sus factores (\(\omega_s\)) presenten valores altos, a pesar de que un gran % de esa \(\psi_{S_k}\) realmente sean exactamente los mismos en los otros factores (un factor general no modelado).

  • Los modelos bifactor pueden contemplar FE’s que no contengan \(\psi_{S_k}\) suficiente para ser interpretados individualmente (\(\omega_{HS}\) bajo con respecto a \(\omega_s\)), pero que a la vez contengan suficiente \(\psi_{S_k}\) para tener que modelarlos y no prescindir de su especificación factorial.

Especifcaciones de los modelos en contexto SEM

Índices de FD y H

Para evaluar si los ítems son adecuados para definir variables latentes en un modelo SEM, se utilizan:

  • Factor Determinacy (FD):
    Mide la correlación entre los puntajes estimados y la verdadera variable latente. \[ FD \;=\; \operatorname{diag}\Bigl(\Phi \,\Lambda^T\, \Sigma^{-1}\,\Lambda \,\Phi\Bigr)^{\tfrac{1}{2}} \]
    • Valores altos (≥ 0.90) indican que el factor está medido con excelente precisión
    • Valores moderados (0.70–0.80) pueden considerarse aceptables para algunas aplicaciones

Índices de FD y H

Para evaluar si los ítems son adecuados para definir variables latentes en un modelo SEM, se utilizan:

  • Índice H (Construct Replicability):
    Cuan bien está definido el constructo a partir de sus indicadores. \[ H \;=\; \frac{1}{ 1 \;+\; \dfrac{1}{ \displaystyle \sum_{i=1}^k \dfrac{\lambda_i^2}{1 - \lambda_i^2} } } \]
    • Se suele considerar un valor H ≥ 0.80 como indicador de un constructo robusto.
    • Se considera H ≥ 0.70 como aceptable

Interpretaciones e indicaciones

  • En un modelo SEM, solo se debería modelar factores específicos en los que tanto H como FD sean al menos ≥ 0.70.
  • Una alternativa a esto, es modelar la escala como esencialmente unidimensional.
  • Aunque el índice H pueda ser un buen indicador hay que prestar atención a las cargas factoriales de los ítems. Podría ser que el factor esté siendo modelado únicamente por una parte de ellos.
  • Cargas factorialmente inusualmente altas (por ej. 0.80, 0.90, 0.30, 0.35, 0.28), podría estar debiéndose a algo distinto al factor específico al que pertenece, y no debería confiarse en las estimaciones del índice H o FD.

Unidimensionalidad esencial

Índices ECV y PUC

Para determinar si la medida puede tratarse como esencialmente unidimensional, se utilizan:

  • Explained Common Variance (ECV):
    \[ \text{ECV} \;=\; \frac{ \sum \lambda_{\text{gen}}^2 }{ \sum \lambda_{\text{gen}}^2 + \sum_{k=1}^K \sum \lambda_{\text{grp}_k}^2 } \]
    • Un valor alto (> .70 o .80) sugiere que la mayor parte de la varianza común se debe al factor general.
    • Valores cercanos a 1 indican unidimensionalidad suficiente.
    • Valores bajos probablemente se asocian a que una estructura multidimensional pueda explicar mejor los datos.

Índices ECV y PUC

Para determinar si la medida puede tratarse como esencialmente unidimensional, se utilizan:

  • Percentage of Uncontaminated Correlations (PUC):
    % de correlaciones entre ítems debido únicamente al factor general. \[ \small \text{PUC} \;=\; 1 \;-\; \frac{ \text{# de correlaciones entre ítems del mismo factor} }{ \text{# total de correlaciones} } \normalsize \]
    • Un PUC elevado (por ejemplo, > 0.80) refuerza la interpretación unidimensional.
    • Valores cercanos a 1 indican unidimensionalidad suficiente.
    • Valores bajos probablemente se asocian a que una estructura multidimensional pueda explicar mejor los datos.

Interpretaciones e indicaciones

  • En contexto SEM, algunos instrumentos pueden tratarse/especificarse de forma unidimensional sin cometer un sesgo relevante en las estimaciones de las cargas factoriales. Esto se ve apoyado cuando ECV y PUC > .70.
  • En la revisión de Rodriguez, Reise, y Haviland (2016) observan que incluso cuando ECV se encuentra entorno a .50, si PUC es alto, podría tratarse el instrumento de forma unidimensional sin cometer un sesgo importante.
  • PUC puede sobre-estimarse cuando se tiene muchos FE’s y pocos ítems en cada uno

Ejemplificación de un Bifactor Perfecto

Ejemplificación

Con una muestra suficiente, 4 factores con 6 ítems en cada factor y un buen comportamiento bifactorial.

library(lavaan)
library(semPlot)
library(BifactorIndicesCalculator)
source("simulaBifactor.R")

result_ideal <- simulaBifactor(
  sampleSize = 1000,
  nFactors = 4,
  itemsPerFactor = 6,
  loadingGeneral = 0.8,
  loadingSpecific = 0.3,
  fluctuation = 0.05,
  type_problematic = "perfect",
  estimator = "MLR"
)

¿Y si fuera multifactorial?

Solución multifactorial

summary(result_ideal$fit_multi, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 39 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        54

  Number of observations                          1000

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                               259.862     261.970
  Degrees of freedom                               246         246
  P-value (Chi-square)                           0.260       0.231
  Scaling correction factor                                  0.992
    Yuan-Bentler correction (Mplus variant)                       

Model Test Baseline Model:

  Test statistic                             25410.561   25585.788
  Degrees of freedom                               276         276
  P-value                                        0.000       0.000
  Scaling correction factor                                  0.993

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.999       0.999
  Tucker-Lewis Index (TLI)                       0.999       0.999
                                                                  
  Robust Comparative Fit Index (CFI)                         0.999
  Robust Tucker-Lewis Index (TLI)                            0.999

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -21424.967  -21424.967
  Scaling correction factor                                  0.994
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)     -21295.036  -21295.036
  Scaling correction factor                                  0.992
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                               42957.934   42957.934
  Bayesian (BIC)                             43222.953   43222.953
  Sample-size adjusted Bayesian (SABIC)      43051.446   43051.446

Root Mean Square Error of Approximation:

  RMSEA                                          0.008       0.008
  90 Percent confidence interval - lower         0.000       0.000
  90 Percent confidence interval - upper         0.015       0.016
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.008
  90 Percent confidence interval - lower                     0.000
  90 Percent confidence interval - upper                     0.015
  P-value H_0: Robust RMSEA <= 0.050                         1.000
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.012       0.012

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  F1 =~                                                                 
    item_1_1          0.848    0.026   32.548    0.000    0.848    0.838
    item_1_2          0.893    0.028   31.793    0.000    0.893    0.841
    item_1_3          0.893    0.024   36.715    0.000    0.893    0.872
    item_1_4          0.829    0.027   31.033    0.000    0.829    0.817
    item_1_5          0.873    0.026   33.745    0.000    0.873    0.879
    item_1_6          0.854    0.025   34.632    0.000    0.854    0.860
  F2 =~                                                                 
    item_2_1          0.841    0.024   35.553    0.000    0.841    0.868
    item_2_2          0.845    0.025   34.226    0.000    0.845    0.851
    item_2_3          0.856    0.024   36.035    0.000    0.856    0.871
    item_2_4          0.814    0.026   31.874    0.000    0.814    0.828
    item_2_5          0.870    0.024   36.584    0.000    0.870    0.888
    item_2_6          0.879    0.026   33.558    0.000    0.879    0.876
  F3 =~                                                                 
    item_3_1          0.821    0.025   32.507    0.000    0.821    0.833
    item_3_2          0.852    0.026   32.552    0.000    0.852    0.840
    item_3_3          0.855    0.024   35.805    0.000    0.855    0.875
    item_3_4          0.827    0.025   32.456    0.000    0.827    0.843
    item_3_5          0.868    0.025   34.592    0.000    0.868    0.874
    item_3_6          0.905    0.023   38.810    0.000    0.905    0.902
  F4 =~                                                                 
    item_4_1          0.890    0.025   35.428    0.000    0.890    0.895
    item_4_2          0.857    0.025   33.974    0.000    0.857    0.869
    item_4_3          0.852    0.026   32.257    0.000    0.852    0.846
    item_4_4          0.834    0.024   34.394    0.000    0.834    0.850
    item_4_5          0.890    0.025   36.223    0.000    0.890    0.888
    item_4_6          0.884    0.025   35.529    0.000    0.884    0.875

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  F1 ~~                                                                 
    F2                0.879    0.009   93.443    0.000    0.879    0.879
    F3                0.877    0.009   93.030    0.000    0.877    0.877
    F4                0.870    0.009   93.390    0.000    0.870    0.870
  F2 ~~                                                                 
    F3                0.873    0.009   96.859    0.000    0.873    0.873
    F4                0.866    0.010   90.883    0.000    0.866    0.866
  F3 ~~                                                                 
    F4                0.882    0.009   94.835    0.000    0.882    0.882

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .item_1_1          0.305    0.015   20.327    0.000    0.305    0.298
   .item_1_2          0.331    0.017   19.761    0.000    0.331    0.293
   .item_1_3          0.251    0.013   19.634    0.000    0.251    0.239
   .item_1_4          0.343    0.017   20.177    0.000    0.343    0.333
   .item_1_5          0.224    0.012   18.348    0.000    0.224    0.227
   .item_1_6          0.257    0.014   18.874    0.000    0.257    0.261
   .item_2_1          0.231    0.011   21.103    0.000    0.231    0.246
   .item_2_2          0.272    0.014   18.835    0.000    0.272    0.276
   .item_2_3          0.234    0.012   19.703    0.000    0.234    0.242
   .item_2_4          0.304    0.016   19.223    0.000    0.304    0.314
   .item_2_5          0.204    0.011   19.309    0.000    0.204    0.212
   .item_2_6          0.233    0.012   19.201    0.000    0.233    0.232
   .item_3_1          0.296    0.016   18.547    0.000    0.296    0.305
   .item_3_2          0.303    0.015   20.201    0.000    0.303    0.295
   .item_3_3          0.224    0.012   18.394    0.000    0.224    0.235
   .item_3_4          0.280    0.014   20.203    0.000    0.280    0.290
   .item_3_5          0.234    0.012   19.969    0.000    0.234    0.237
   .item_3_6          0.188    0.011   17.091    0.000    0.188    0.186
   .item_4_1          0.196    0.011   18.287    0.000    0.196    0.198
   .item_4_2          0.238    0.012   20.650    0.000    0.238    0.245
   .item_4_3          0.289    0.015   19.303    0.000    0.289    0.285
   .item_4_4          0.268    0.013   20.226    0.000    0.268    0.278
   .item_4_5          0.213    0.012   18.443    0.000    0.213    0.212
   .item_4_6          0.239    0.012   19.440    0.000    0.239    0.234
    F1                1.000                               1.000    1.000
    F2                1.000                               1.000    1.000
    F3                1.000                               1.000    1.000
    F4                1.000                               1.000    1.000

Solución multifactorial

summary(result_ideal$fit_bifactor, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 35 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        72

  Number of observations                          1000

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                               218.905     221.095
  Degrees of freedom                               228         228
  P-value (Chi-square)                           0.656       0.616
  Scaling correction factor                                  0.990
    Yuan-Bentler correction (Mplus variant)                       

Model Test Baseline Model:

  Test statistic                             25410.561   25585.788
  Degrees of freedom                               276         276
  P-value                                        0.000       0.000
  Scaling correction factor                                  0.993

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    1.000       1.000
  Tucker-Lewis Index (TLI)                       1.000       1.000
                                                                  
  Robust Comparative Fit Index (CFI)                         1.000
  Robust Tucker-Lewis Index (TLI)                            1.000

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -21404.488  -21404.488
  Scaling correction factor                                  1.000
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)     -21295.036  -21295.036
  Scaling correction factor                                  0.992
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                               42952.977   42952.977
  Bayesian (BIC)                             43306.335   43306.335
  Sample-size adjusted Bayesian (SABIC)      43077.659   43077.659

Root Mean Square Error of Approximation:

  RMSEA                                          0.000       0.000
  90 Percent confidence interval - lower         0.000       0.000
  90 Percent confidence interval - upper         0.011       0.012
  P-value H_0: RMSEA <= 0.050                    1.000       1.000
  P-value H_0: RMSEA >= 0.080                    0.000       0.000
                                                                  
  Robust RMSEA                                               0.000
  90 Percent confidence interval - lower                     0.000
  90 Percent confidence interval - upper                     0.012
  P-value H_0: Robust RMSEA <= 0.050                         1.000
  P-value H_0: Robust RMSEA >= 0.080                         0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.009       0.009

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  F =~                                                                  
    item_1_1          0.791    0.027   29.268    0.000    0.791    0.781
    item_1_2          0.827    0.029   28.268    0.000    0.827    0.778
    item_1_3          0.849    0.025   33.312    0.000    0.849    0.829
    item_1_4          0.763    0.028   26.907    0.000    0.763    0.752
    item_1_5          0.827    0.027   30.849    0.000    0.827    0.832
    item_1_6          0.794    0.026   30.450    0.000    0.794    0.799
    item_2_1          0.786    0.025   31.463    0.000    0.786    0.811
    item_2_2          0.786    0.026   30.003    0.000    0.786    0.791
    item_2_3          0.797    0.025   31.870    0.000    0.797    0.811
    item_2_4          0.759    0.027   28.541    0.000    0.759    0.772
    item_2_5          0.820    0.025   32.840    0.000    0.820    0.837
    item_2_6          0.812    0.027   29.966    0.000    0.812    0.809
    item_3_1          0.778    0.027   29.267    0.000    0.778    0.790
    item_3_2          0.808    0.027   30.050    0.000    0.808    0.796
    item_3_3          0.798    0.025   31.967    0.000    0.798    0.817
    item_3_4          0.778    0.027   29.061    0.000    0.778    0.793
    item_3_5          0.812    0.026   30.848    0.000    0.812    0.817
    item_3_6          0.848    0.025   33.802    0.000    0.848    0.844
    item_4_1          0.834    0.027   31.450    0.000    0.834    0.839
    item_4_2          0.823    0.026   31.840    0.000    0.823    0.834
    item_4_3          0.785    0.028   28.478    0.000    0.785    0.779
    item_4_4          0.773    0.025   30.441    0.000    0.773    0.787
    item_4_5          0.820    0.026   31.612    0.000    0.820    0.818
    item_4_6          0.820    0.026   30.989    0.000    0.820    0.812
  S1 =~                                                                 
    item_1_1          0.311    0.028   10.916    0.000    0.311    0.307
    item_1_2          0.352    0.029   12.015    0.000    0.352    0.331
    item_1_3          0.266    0.025   10.652    0.000    0.266    0.259
    item_1_4          0.341    0.029   11.656    0.000    0.341    0.336
    item_1_5          0.269    0.023   11.478    0.000    0.269    0.271
    item_1_6          0.325    0.026   12.299    0.000    0.325    0.327
  S2 =~                                                                 
    item_2_1          0.299    0.023   13.004    0.000    0.299    0.309
    item_2_2          0.314    0.025   12.735    0.000    0.314    0.316
    item_2_3          0.314    0.023   13.631    0.000    0.314    0.319
    item_2_4          0.294    0.025   11.733    0.000    0.294    0.299
    item_2_5          0.282    0.023   12.229    0.000    0.282    0.288
    item_2_6          0.347    0.025   14.146    0.000    0.347    0.346
  S3 =~                                                                 
    item_3_1          0.255    0.028    9.231    0.000    0.255    0.259
    item_3_2          0.263    0.026   10.130    0.000    0.263    0.260
    item_3_3          0.313    0.024   13.192    0.000    0.313    0.320
    item_3_4          0.277    0.027   10.172    0.000    0.277    0.282
    item_3_5          0.311    0.025   12.624    0.000    0.311    0.313
    item_3_6          0.324    0.024   13.317    0.000    0.324    0.322
  S4 =~                                                                 
    item_4_1          0.308    0.024   13.038    0.000    0.308    0.310
    item_4_2          0.231    0.023   10.115    0.000    0.231    0.234
    item_4_3          0.339    0.029   11.736    0.000    0.339    0.337
    item_4_4          0.317    0.026   12.005    0.000    0.317    0.323
    item_4_5          0.357    0.023   15.345    0.000    0.357    0.356
    item_4_6          0.334    0.023   14.326    0.000    0.334    0.331

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  F ~~                                                                  
    S1                0.000                               0.000    0.000
    S2                0.000                               0.000    0.000
    S3                0.000                               0.000    0.000
    S4                0.000                               0.000    0.000
  S1 ~~                                                                 
    S2                0.000                               0.000    0.000
    S3                0.000                               0.000    0.000
    S4                0.000                               0.000    0.000
  S2 ~~                                                                 
    S3                0.000                               0.000    0.000
    S4                0.000                               0.000    0.000
  S3 ~~                                                                 
    S4                0.000                               0.000    0.000

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .item_1_1          0.302    0.016   18.849    0.000    0.302    0.295
   .item_1_2          0.322    0.017   18.405    0.000    0.322    0.285
   .item_1_3          0.258    0.013   19.980    0.000    0.258    0.246
   .item_1_4          0.332    0.018   18.487    0.000    0.332    0.322
   .item_1_5          0.231    0.013   18.404    0.000    0.231    0.234
   .item_1_6          0.251    0.014   17.445    0.000    0.251    0.255
   .item_2_1          0.232    0.011   20.377    0.000    0.232    0.247
   .item_2_2          0.270    0.015   18.402    0.000    0.270    0.274
   .item_2_3          0.233    0.012   18.731    0.000    0.233    0.241
   .item_2_4          0.304    0.016   19.077    0.000    0.304    0.315
   .item_2_5          0.208    0.011   19.177    0.000    0.208    0.217
   .item_2_6          0.227    0.013   17.147    0.000    0.227    0.226
   .item_3_1          0.300    0.016   18.764    0.000    0.300    0.309
   .item_3_2          0.307    0.015   20.041    0.000    0.307    0.299
   .item_3_3          0.220    0.013   17.540    0.000    0.220    0.230
   .item_3_4          0.282    0.014   19.908    0.000    0.282    0.292
   .item_3_5          0.231    0.013   18.380    0.000    0.231    0.234
   .item_3_6          0.184    0.012   15.055    0.000    0.184    0.183
   .item_4_1          0.198    0.011   17.371    0.000    0.198    0.200
   .item_4_2          0.242    0.011   21.445    0.000    0.242    0.249
   .item_4_3          0.283    0.016   18.195    0.000    0.283    0.279
   .item_4_4          0.266    0.014   18.615    0.000    0.266    0.276
   .item_4_5          0.204    0.012   17.281    0.000    0.204    0.203
   .item_4_6          0.236    0.013   17.944    0.000    0.236    0.231
    F                 1.000                               1.000    1.000
    S1                1.000                               1.000    1.000
    S2                1.000                               1.000    1.000
    S3                1.000                               1.000    1.000
    S4                1.000                               1.000    1.000

Organización de las cargas factoriales

Obtención de Índices

bifactorIndices(result_ideal$fit_bifactor, UniLambda = result_ideal$fit_uni)
$ModelLevelIndices
     ECV.F        PUC    Omega.F   OmegaH.F       ARPB 
0.87250776 0.78260870 0.98438334 0.94996921 0.01564634 

$FactorLevelIndices
      ECV_SS     ECV_SG    ECV_GS     Omega    OmegaH         H        FD
F  0.8725078 0.87250776 0.8725078 0.9843833 0.9499692 0.9783633 0.9753907
S1 0.1292968 0.03159233 0.8707032 0.9410352 0.1208026 0.3847117 0.7239138
S2 0.1314340 0.03298034 0.8685660 0.9464750 0.1240935 0.3954727 0.7380738
S3 0.1164400 0.02903263 0.8835600 0.9451736 0.1092838 0.3628306 0.7176394
S4 0.1326829 0.03388694 0.8673171 0.9499120 0.1244707 0.4037519 0.7475393

$ItemLevelIndices
              IECV  RelParBias
item_1_1 0.8663711 0.014460658
item_1_2 0.8468204 0.017422707
item_1_3 0.9107551 0.007060984
item_1_4 0.8336930 0.018434054
item_1_5 0.9040772 0.009175636
item_1_6 0.8565822 0.014500438
item_2_1 0.8734484 0.015293462
item_2_2 0.8625154 0.018170541
item_2_3 0.8655268 0.016415857
item_2_4 0.8699025 0.016741597
item_2_5 0.8943523 0.012798106
item_2_6 0.8452077 0.019838716
item_3_1 0.9029532 0.011477546
item_3_2 0.9037996 0.011891050
item_3_3 0.8668107 0.016325216
item_3_4 0.8878542 0.014875840
item_3_5 0.8718484 0.014984120
item_3_6 0.8728099 0.013865285
item_4_1 0.8797296 0.016220156
item_4_2 0.9271263 0.009747255
item_4_3 0.8427286 0.023415343
item_4_4 0.8558483 0.020039570
item_4_5 0.8404893 0.021270054
item_4_6 0.8576274 0.021087993

¿Unidimesionalidad tiene sentido?

summary(result_ideal$fit_uni, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 19 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        48

  Number of observations                          1000

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                              2606.856    2634.837
  Degrees of freedom                               252         252
  P-value (Chi-square)                           0.000       0.000
  Scaling correction factor                                  0.989
    Yuan-Bentler correction (Mplus variant)                       

Model Test Baseline Model:

  Test statistic                             25410.561   25585.788
  Degrees of freedom                               276         276
  P-value                                        0.000       0.000
  Scaling correction factor                                  0.993

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.906       0.906
  Tucker-Lewis Index (TLI)                       0.897       0.897
                                                                  
  Robust Comparative Fit Index (CFI)                         0.906
  Robust Tucker-Lewis Index (TLI)                            0.897

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -22598.464  -22598.464
  Scaling correction factor                                  1.008
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)     -21295.036  -21295.036
  Scaling correction factor                                  0.992
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                               45292.928   45292.928
  Bayesian (BIC)                             45528.500   45528.500
  Sample-size adjusted Bayesian (SABIC)      45376.050   45376.050

Root Mean Square Error of Approximation:

  RMSEA                                          0.097       0.097
  90 Percent confidence interval - lower         0.093       0.094
  90 Percent confidence interval - upper         0.100       0.101
  P-value H_0: RMSEA <= 0.050                    0.000       0.000
  P-value H_0: RMSEA >= 0.080                    1.000       1.000
                                                                  
  Robust RMSEA                                               0.097
  90 Percent confidence interval - lower                     0.093
  90 Percent confidence interval - upper                     0.100
  P-value H_0: Robust RMSEA <= 0.050                         0.000
  P-value H_0: Robust RMSEA >= 0.080                         1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.038       0.038

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  U =~                                                                  
    item_1_1          0.802    0.027   30.090    0.000    0.802    0.793
    item_1_2          0.841    0.029   29.228    0.000    0.841    0.792
    item_1_3          0.855    0.025   34.125    0.000    0.855    0.834
    item_1_4          0.778    0.028   28.042    0.000    0.778    0.766
    item_1_5          0.834    0.026   31.515    0.000    0.834    0.840
    item_1_6          0.805    0.026   31.484    0.000    0.805    0.811
    item_2_1          0.798    0.025   32.477    0.000    0.798    0.824
    item_2_2          0.800    0.026   31.199    0.000    0.800    0.806
    item_2_3          0.810    0.025   32.904    0.000    0.810    0.824
    item_2_4          0.772    0.026   29.501    0.000    0.772    0.785
    item_2_5          0.831    0.025   33.813    0.000    0.831    0.848
    item_2_6          0.828    0.027   30.893    0.000    0.828    0.825
    item_3_1          0.787    0.026   30.333    0.000    0.787    0.799
    item_3_2          0.817    0.026   30.837    0.000    0.817    0.806
    item_3_3          0.811    0.025   33.076    0.000    0.811    0.830
    item_3_4          0.790    0.026   30.175    0.000    0.790    0.804
    item_3_5          0.824    0.026   31.857    0.000    0.824    0.829
    item_3_6          0.859    0.024   35.097    0.000    0.859    0.856
    item_4_1          0.848    0.026   32.534    0.000    0.848    0.852
    item_4_2          0.831    0.026   32.529    0.000    0.831    0.843
    item_4_3          0.803    0.027   29.715    0.000    0.803    0.798
    item_4_4          0.789    0.025   31.592    0.000    0.789    0.803
    item_4_5          0.837    0.026   32.739    0.000    0.837    0.836
    item_4_6          0.838    0.026   32.324    0.000    0.838    0.829

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .item_1_1          0.380    0.018   21.714    0.000    0.380    0.372
   .item_1_2          0.421    0.020   21.074    0.000    0.421    0.373
   .item_1_3          0.319    0.015   21.389    0.000    0.319    0.304
   .item_1_4          0.426    0.020   20.907    0.000    0.426    0.413
   .item_1_5          0.291    0.013   21.724    0.000    0.291    0.295
   .item_1_6          0.338    0.016   20.982    0.000    0.338    0.343
   .item_2_1          0.302    0.013   23.016    0.000    0.302    0.322
   .item_2_2          0.346    0.017   20.671    0.000    0.346    0.351
   .item_2_3          0.311    0.014   21.805    0.000    0.311    0.321
   .item_2_4          0.371    0.018   20.622    0.000    0.371    0.384
   .item_2_5          0.271    0.012   22.059    0.000    0.271    0.282
   .item_2_6          0.321    0.015   21.567    0.000    0.321    0.319
   .item_3_1          0.351    0.018   19.437    0.000    0.351    0.361
   .item_3_2          0.361    0.016   22.309    0.000    0.361    0.351
   .item_3_3          0.297    0.014   20.600    0.000    0.297    0.311
   .item_3_4          0.340    0.016   21.103    0.000    0.340    0.353
   .item_3_5          0.308    0.014   21.947    0.000    0.308    0.312
   .item_3_6          0.269    0.014   19.767    0.000    0.269    0.267
   .item_4_1          0.270    0.013   20.951    0.000    0.270    0.273
   .item_4_2          0.282    0.012   22.629    0.000    0.282    0.290
   .item_4_3          0.369    0.019   19.555    0.000    0.369    0.364
   .item_4_4          0.343    0.016   22.032    0.000    0.343    0.355
   .item_4_5          0.303    0.015   19.822    0.000    0.303    0.302
   .item_4_6          0.319    0.014   22.573    0.000    0.319    0.313
    U                 1.000                               1.000    1.000

¿Unidimesionalidad tiene sentido?

modificationindices(result_ideal$fit_uni,
                    maximum.number = 10,
                    sort. = TRUE)
         lhs op      rhs      mi   epc sepc.lv sepc.all sepc.nox
314 item_4_1 ~~ item_4_5 105.803 0.098   0.098    0.344    0.344
283 item_3_3 ~~ item_3_6 105.581 0.097   0.097    0.344    0.344
325 item_4_5 ~~ item_4_6  94.935 0.101   0.101    0.324    0.324
298 item_3_5 ~~ item_3_6  85.588 0.089   0.089    0.309    0.309
235 item_2_5 ~~ item_2_6  84.443 0.090   0.090    0.306    0.306
322 item_4_3 ~~ item_4_6  79.879 0.101   0.101    0.295    0.295
177 item_2_1 ~~ item_2_6  79.558 0.092   0.092    0.296    0.296
208 item_2_3 ~~ item_2_6  78.026 0.092   0.092    0.293    0.293
321 item_4_3 ~~ item_4_5  76.247 0.097   0.097    0.289    0.289
313 item_4_1 ~~ item_4_4  75.223 0.088   0.088    0.288    0.288

Comparación de ajustes

psymetrics::compare_model_fit(
  result_ideal$fit_uni,
  result_ideal$fit_multi,
  result_ideal$fit_bifactor
)
MODEL                     | NOBS | ESTIMATOR | NPAR |   Chi2   | Chi2_df
------------------------------------------------------------------------
result_ideal$fit_uni      | 1000 |    MLR    |  48  | 2634.837 |   252  
result_ideal$fit_multi    | 1000 |    MLR    |  54  | 261.970  |   246  
result_ideal$fit_bifactor | 1000 |    MLR    |  72  | 221.095  |   228  

MODEL                     | p (Chi2) |  CFI  |  TLI  | RMSEA |   RMSEA  CI    | SRMR 
-------------------------------------------------------------------------------------
result_ideal$fit_uni      |  < .001  | 0.906 | 0.897 | 0.097 | [0.094, 0.101] | 0.038
result_ideal$fit_multi    |  0.231   | 0.999 | 0.999 | 0.008 | [0.000, 0.016] | 0.012
result_ideal$fit_bifactor |  0.616   | 1.000 | 1.000 | 0.000 | [0.000, 0.012] | 0.009

Ejemplificación de un Bifactor con FE dominante

Ejemplificación

Con una muestra suficiente, 4 factores con 6 ítems en cada factor y un buen comportamiento bifactorial.

result_1f <- simulaBifactor(
  sampleSize = 1000,
  nFactors = 4,
  itemsPerFactor = 6,
  loadingGeneral = 0.8,
  loadingSpecific = 0.3,
  fluctuation = 0.05,
  type_problematic = "1f",
  mod_gen_factor = 0.15,
  mod_spec_factor = 2.5,
  estimator = "MLR"
)

Organización de las cargas factoriales

Obtención de Índices

bifactorIndices(result_1f$fit_bifactor, UniLambda = result_1f$fit_uni)
$ModelLevelIndices
     ECV.F        PUC    Omega.F   OmegaH.F       ARPB 
0.70564532 0.78260870 0.97275756 0.86241389 0.03276995 

$FactorLevelIndices
       ECV_SS     ECV_SG     ECV_GS     Omega     OmegaH         H        FD
F  0.70564532 0.70564532 0.70564532 0.9727576 0.86241389 0.9721486 0.9705498
S1 0.12377861 0.03305574 0.87622139 0.9459541 0.11618284 0.3798054 0.7092911
S2 0.09359639 0.02442729 0.90640361 0.9412326 0.08600959 0.3071786 0.6467970
S3 0.12061010 0.03162232 0.87938990 0.9423015 0.11307017 0.3680375 0.6925122
S4 0.97843528 0.20524934 0.02156472 0.8939206 0.87694498 0.8925204 0.9461048

$ItemLevelIndices
                IECV  RelParBias
item_1_1 0.850379317 0.028620201
item_1_2 0.883049091 0.023549057
item_1_3 0.871138676 0.027768299
item_1_4 0.857136869 0.028773862
item_1_5 0.910633346 0.018337847
item_1_6 0.887794846 0.020465061
item_2_1 0.895192791 0.014109372
item_2_2 0.913106323 0.009112679
item_2_3 0.854496570 0.017244107
item_2_4 0.924350754 0.009792271
item_2_5 0.912127653 0.010912886
item_2_6 0.943746537 0.003339663
item_3_1 0.837317659 0.027392299
item_3_2 0.882737169 0.019666295
item_3_3 0.873845702 0.021457371
item_3_4 0.904316752 0.014807362
item_3_5 0.891841432 0.015901516
item_3_6 0.885129012 0.018537898
item_4_1 0.023031621 0.043132872
item_4_2 0.040442512 0.027082611
item_4_3 0.018229231 0.070660735
item_4_4 0.031037736 0.040020457
item_4_5 0.006400103 0.140046567
item_4_6 0.005574720 0.135747559

Desajuste del unidimensional

summary(result_1f$fit_uni, fit.measures = TRUE, standardized = TRUE)
lavaan 0.6-19 ended normally after 27 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        48

  Number of observations                          1000

Model Test User Model:
                                              Standard      Scaled
  Test Statistic                              4604.696    4604.680
  Degrees of freedom                               252         252
  P-value (Chi-square)                           0.000       0.000
  Scaling correction factor                                  1.000
    Yuan-Bentler correction (Mplus variant)                       

Model Test Baseline Model:

  Test statistic                             21500.542   21446.107
  Degrees of freedom                               276         276
  P-value                                        0.000       0.000
  Scaling correction factor                                  1.003

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.795       0.794
  Tucker-Lewis Index (TLI)                       0.775       0.775
                                                                  
  Robust Comparative Fit Index (CFI)                         0.795
  Robust Tucker-Lewis Index (TLI)                            0.775

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)             -25548.386  -25548.386
  Scaling correction factor                                  1.013
      for the MLR correction                                      
  Loglikelihood unrestricted model (H1)     -23246.038  -23246.038
  Scaling correction factor                                  1.002
      for the MLR correction                                      
                                                                  
  Akaike (AIC)                               51192.772   51192.772
  Bayesian (BIC)                             51428.344   51428.344
  Sample-size adjusted Bayesian (SABIC)      51275.894   51275.894

Root Mean Square Error of Approximation:

  RMSEA                                          0.131       0.131
  90 Percent confidence interval - lower         0.128       0.128
  90 Percent confidence interval - upper         0.135       0.135
  P-value H_0: RMSEA <= 0.050                    0.000       0.000
  P-value H_0: RMSEA >= 0.080                    1.000       1.000
                                                                  
  Robust RMSEA                                               0.131
  90 Percent confidence interval - lower                     0.128
  90 Percent confidence interval - upper                     0.135
  P-value H_0: Robust RMSEA <= 0.050                         0.000
  P-value H_0: Robust RMSEA >= 0.080                         1.000

Standardized Root Mean Square Residual:

  SRMR                                           0.131       0.131

Parameter Estimates:

  Standard errors                             Sandwich
  Information bread                           Observed
  Observed information based on                Hessian

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  U =~                                                                  
    item_1_1          0.839    0.026   31.801    0.000    0.839    0.845
    item_1_2          0.817    0.026   31.640    0.000    0.817    0.840
    item_1_3          0.760    0.027   28.381    0.000    0.760    0.771
    item_1_4          0.836    0.026   32.030    0.000    0.836    0.831
    item_1_5          0.796    0.026   30.902    0.000    0.796    0.804
    item_1_6          0.871    0.025   34.318    0.000    0.871    0.873
    item_2_1          0.778    0.025   31.468    0.000    0.778    0.803
    item_2_2          0.850    0.027   31.886    0.000    0.850    0.852
    item_2_3          0.861    0.026   32.849    0.000    0.861    0.844
    item_2_4          0.760    0.026   29.659    0.000    0.760    0.784
    item_2_5          0.792    0.026   29.977    0.000    0.792    0.781
    item_2_6          0.849    0.025   33.720    0.000    0.849    0.859
    item_3_1          0.787    0.027   29.055    0.000    0.787    0.788
    item_3_2          0.798    0.027   29.210    0.000    0.798    0.806
    item_3_3          0.820    0.025   32.629    0.000    0.820    0.821
    item_3_4          0.791    0.026   30.442    0.000    0.791    0.798
    item_3_5          0.823    0.025   33.135    0.000    0.823    0.855
    item_3_6          0.824    0.024   33.830    0.000    0.824    0.837
    item_4_1          0.119    0.034    3.495    0.000    0.119    0.116
    item_4_2          0.173    0.034    5.120    0.000    0.173    0.170
    item_4_3          0.103    0.034    3.059    0.002    0.103    0.102
    item_4_4          0.154    0.036    4.334    0.000    0.154    0.147
    item_4_5          0.071    0.034    2.074    0.038    0.071    0.071
    item_4_6          0.064    0.033    1.925    0.054    0.064    0.063

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .item_1_1          0.282    0.013   21.970    0.000    0.282    0.286
   .item_1_2          0.278    0.013   21.137    0.000    0.278    0.294
   .item_1_3          0.395    0.019   20.939    0.000    0.395    0.406
   .item_1_4          0.313    0.015   21.094    0.000    0.313    0.309
   .item_1_5          0.346    0.017   20.607    0.000    0.346    0.353
   .item_1_6          0.238    0.012   20.299    0.000    0.238    0.239
   .item_2_1          0.333    0.017   19.125    0.000    0.333    0.355
   .item_2_2          0.272    0.014   20.147    0.000    0.272    0.274
   .item_2_3          0.299    0.014   21.626    0.000    0.299    0.288
   .item_2_4          0.362    0.017   21.138    0.000    0.362    0.385
   .item_2_5          0.403    0.018   22.085    0.000    0.403    0.391
   .item_2_6          0.257    0.012   21.025    0.000    0.257    0.263
   .item_3_1          0.377    0.019   19.757    0.000    0.377    0.378
   .item_3_2          0.343    0.016   22.014    0.000    0.343    0.350
   .item_3_3          0.326    0.015   21.486    0.000    0.326    0.327
   .item_3_4          0.357    0.017   21.207    0.000    0.357    0.363
   .item_3_5          0.250    0.012   20.702    0.000    0.250    0.270
   .item_3_6          0.291    0.014   21.470    0.000    0.291    0.300
   .item_4_1          1.039    0.047   21.938    0.000    1.039    0.987
   .item_4_2          1.010    0.045   22.266    0.000    1.010    0.971
   .item_4_3          1.011    0.046   22.108    0.000    1.011    0.990
   .item_4_4          1.067    0.046   23.140    0.000    1.067    0.978
   .item_4_5          0.999    0.045   22.085    0.000    0.999    0.995
   .item_4_6          1.024    0.044   23.372    0.000    1.024    0.996
    U                 1.000                               1.000    1.000

Comparación de ajustes

psymetrics::compare_model_fit(
  result_1f$fit_uni,
  result_1f$fit_multi,
  result_1f$fit_bifactor
)
MODEL                  | NOBS | ESTIMATOR | NPAR |   Chi2   | Chi2_df
---------------------------------------------------------------------
result_1f$fit_uni      | 1000 |    MLR    |  48  | 4604.680 |   252  
result_1f$fit_multi    | 1000 |    MLR    |  54  | 284.945  |   246  
result_1f$fit_bifactor | 1000 |    MLR    |  72  | 245.710  |   228  

MODEL                  | p (Chi2) |  CFI  |  TLI  | RMSEA |   RMSEA  CI    | SRMR 
----------------------------------------------------------------------------------
result_1f$fit_uni      |  < .001  | 0.794 | 0.775 | 0.131 | [0.128, 0.135] | 0.131
result_1f$fit_multi    |  0.045   | 0.998 | 0.998 | 0.013 | [0.002, 0.019] | 0.022
result_1f$fit_bifactor |  0.201   | 0.999 | 0.999 | 0.009 | [0.000, 0.016] | 0.015

References

Rodriguez, Anthony, Steven P. Reise, y Mark G. Haviland. 2016. «Applying Bifactor Statistical Indices in the Evaluation of Psychological Measures». Journal of Personality Assessment 98 (3): 223-37. https://doi.org/10.1080/00223891.2015.1089249.