39.2 Dati categoriali
Quando almeno un indicatore è categoriale (cioè binario, politomico o ordinale), il metodo ML ordinario non dovrebbe essere utilizzato per stimare i modelli CFA. Vi sono molte potenziali conseguenze del trattamento delle variabili categoriali come continue in un’analisi CFA, incluso il fatto che può tale scelta può
- produrre stime attenuate delle relazioni tra gli indicatori, specialmente quando ci sono effetti pavimento o soffitto;
- portare ad individuare “pseudo-fattori” che emergono come artefatti del metodo statistico;
- produrre distorsioni negli indici di bontà dell’adattamento e nelle stime degli errori standard;
- produrre stime errate dei parametri.
Esistono vari stimatori che possono essere utilizzati con indicatori categoriali; ad esempio, gli stimatori dei minimi quadrati ponderati (WLS), dei minimi quadrati ponderati robusti (WLSMV) e dei minimi quadrati non ponderati (ULS).
39.2.1 Un esempio concreto
Nell’esempio discusso da Brown (2015), i ricercatori desiderano verificare un modello uni-fattoriale di dipendenza da alcol in un campione di 750 pazienti ambulatoriali. Gli indicatori di alcolismo sono item binari che riflettono la presenza/assenza di sei criteri diagnostici per l’alcolismo (0 = criterio non soddisfatto, 1 = criterio soddisfatto). I dati sono i seguenti:
d1 <- readRDS(here::here("data", "brown_table_9_9_data.RDS"))
head(d1)
#> y1 y2 y3 y4 y5 y6
#> 1 1 1 1 1 1 1
#> 2 1 1 1 1 1 1
#> 3 1 1 1 1 1 0
#> 4 1 1 1 1 1 1
#> 5 0 0 0 0 0 0
#> 6 1 1 0 1 1 1
Il modello viene specificato nel modo seguente:
Adattiamo il modello specificando che i dati sono a livello di scala ordinale (stimatore WLSMVS).
Esaminiamo la soluzione ottenuta:
summary(fit1, fit.measures = TRUE)
#> lavaan 0.6.15 ended normally after 16 iterations
#>
#> Estimator DWLS
#> Optimization method NLMINB
#> Number of model parameters 12
#>
#> Number of observations 750
#>
#> Model Test User Model:
#> Standard Scaled
#> Test Statistic 5.651 9.540
#> Degrees of freedom 9 9
#> P-value (Chi-square) 0.774 0.389
#> Scaling correction factor 0.592
#> mean and variance adjusted correction (WLSMV)
#>
#> Model Test Baseline Model:
#>
#> Test statistic 1155.845 694.433
#> Degrees of freedom 15 9
#> P-value 0.000 0.000
#> Scaling correction factor 1.664
#>
#> User Model versus Baseline Model:
#>
#> Comparative Fit Index (CFI) 1.000 0.999
#> Tucker-Lewis Index (TLI) 1.005 0.999
#>
#> Root Mean Square Error of Approximation:
#>
#> RMSEA 0.000 0.009
#> 90 Percent confidence interval - lower 0.000 0.000
#> 90 Percent confidence interval - upper 0.028 0.051
#> P-value H_0: RMSEA <= 0.050 0.999 0.944
#> P-value H_0: RMSEA >= 0.080 0.000 0.000
#>
#> Standardized Root Mean Square Residual:
#>
#> SRMR 0.031 0.031
#>
#> Parameter Estimates:
#>
#> Standard errors Robust.sem
#> Information Expected
#> Information saturated (h1) model Unstructured
#>
#> Latent Variables:
#> Estimate Std.Err z-value P(>|z|)
#> etoh =~
#> y1 1.000
#> y2 0.822 0.072 11.392 0.000
#> y3 0.653 0.092 7.097 0.000
#> y4 1.031 0.075 13.703 0.000
#> y5 1.002 0.072 13.861 0.000
#> y6 0.759 0.076 10.011 0.000
#>
#> Intercepts:
#> Estimate Std.Err z-value P(>|z|)
#> .y1 0.000
#> .y2 0.000
#> .y3 0.000
#> .y4 0.000
#> .y5 0.000
#> .y6 0.000
#> etoh 0.000
#>
#> Thresholds:
#> Estimate Std.Err z-value P(>|z|)
#> y1|t1 -0.759 0.051 -14.890 0.000
#> y2|t1 -0.398 0.047 -8.437 0.000
#> y3|t1 -1.244 0.061 -20.278 0.000
#> y4|t1 -0.795 0.051 -15.436 0.000
#> y5|t1 -0.384 0.047 -8.148 0.000
#> y6|t1 -0.818 0.052 -15.775 0.000
#>
#> Variances:
#> Estimate Std.Err z-value P(>|z|)
#> .y1 0.399
#> .y2 0.594
#> .y3 0.744
#> .y4 0.361
#> .y5 0.397
#> .y6 0.653
#> etoh 0.601 0.063 9.596 0.000
#>
#> Scales y*:
#> Estimate Std.Err z-value P(>|z|)
#> y1 1.000
#> y2 1.000
#> y3 1.000
#> y4 1.000
#> y5 1.000
#> y6 1.000
Confrontiamo la soluzione ottenuta con lo stimatore WLSMVS con quella ottenuta mediante lo stimatore ML.
summary(fit2, fit.measures = TRUE)
#> lavaan 0.6.15 ended normally after 35 iterations
#>
#> Estimator ML
#> Optimization method NLMINB
#> Number of model parameters 12
#>
#> Number of observations 750
#>
#> Model Test User Model:
#>
#> Test statistic 14.182
#> Degrees of freedom 9
#> P-value (Chi-square) 0.116
#>
#> Model Test Baseline Model:
#>
#> Test statistic 614.305
#> Degrees of freedom 15
#> P-value 0.000
#>
#> User Model versus Baseline Model:
#>
#> Comparative Fit Index (CFI) 0.991
#> Tucker-Lewis Index (TLI) 0.986
#>
#> Loglikelihood and Information Criteria:
#>
#> Loglikelihood user model (H0) -2087.600
#> Loglikelihood unrestricted model (H1) -2080.508
#>
#> Akaike (AIC) 4199.199
#> Bayesian (BIC) 4254.640
#> Sample-size adjusted Bayesian (SABIC) 4216.535
#>
#> Root Mean Square Error of Approximation:
#>
#> RMSEA 0.028
#> 90 Percent confidence interval - lower 0.000
#> 90 Percent confidence interval - upper 0.054
#> P-value H_0: RMSEA <= 0.050 0.914
#> P-value H_0: RMSEA >= 0.080 0.000
#>
#> Standardized Root Mean Square Residual:
#>
#> SRMR 0.021
#>
#> Parameter Estimates:
#>
#> Standard errors Standard
#> Information Expected
#> Information saturated (h1) model Structured
#>
#> Latent Variables:
#> Estimate Std.Err z-value P(>|z|)
#> etoh =~
#> y1 1.000
#> y2 0.934 0.093 10.057 0.000
#> y3 0.390 0.055 7.038 0.000
#> y4 1.008 0.087 11.541 0.000
#> y5 1.158 0.101 11.468 0.000
#> y6 0.700 0.077 9.142 0.000
#>
#> Variances:
#> Estimate Std.Err z-value P(>|z|)
#> .y1 0.109 0.007 14.692 0.000
#> .y2 0.169 0.010 16.781 0.000
#> .y3 0.085 0.005 18.483 0.000
#> .y4 0.102 0.007 14.285 0.000
#> .y5 0.140 0.010 14.506 0.000
#> .y6 0.132 0.008 17.514 0.000
#> etoh 0.065 0.009 7.664 0.000
Si noti che la soluzione ottenuta mediante lo stimatore WLSMVS produce indici di bontà di adattamento migliori e errori standard dei parametri più piccoli.