Three datasets (A, B, C) were created for each form (ABC, CSHQ, RBS, SSP). The nature of the datasets is as follows:
For all datasets, the following transformations were performed:
#Looking for items with only 1 level
one_level <- names(which(sapply(abc.A, function(x) {
if (is.factor(x) || is.ordered(x)) length(levels(x)) == 1 else FALSE
})))
print(one_level)
## [1] "ABC_2" "ABC_27" "ABC_50" "ABC_52" "ABC_53"
#install.packages("lavaan", dependencies = TRUE)
library(lavaan)
#set A has all of the ABC items still in it
# removing "ABC_2" "ABC_27" "ABC_50" "ABC_52" "ABC_53" which only have 1 level
#make model with the 5 known domains
#F1 = Irritability
#F2 = Social Withdrawal
#F3 = Hyperactivity
#F4 = Stereotypy
#F5 = Inappropriate Speech
#needed to make a dataframe not a list
class(abc.A)
## [1] "tbl_df" "tbl" "data.frame"
abc.A <- as.data.frame(abc.A)
abc.A[] <- lapply(abc.A, function(x) {
if (is.factor(x)) ordered(x) else x
})
CFA.model <- ' Irritability =~ ABC_4 + ABC_8 + ABC_10 + ABC_14 + ABC_19 + ABC_25 + ABC_29 + ABC_34 + ABC_36 + ABC_41 + ABC_47 + ABC_57
Social_Withdrawal =~ ABC_3 + ABC_5 + ABC_12 + ABC_16 + ABC_20 + ABC_23 + ABC_26 + ABC_30 + ABC_32 + ABC_37 + ABC_40 + ABC_42 + ABC_43 + ABC_55 + ABC_58
Hyperactivity =~ ABC_1 + ABC_7 + ABC_13 + ABC_15 + ABC_18 + ABC_21 + ABC_24 + ABC_28 + ABC_31 + ABC_38 + ABC_39 + ABC_44 + ABC_48 + ABC_51 + ABC_54 + ABC_56
Stereotypy =~ ABC_6 + ABC_11 + ABC_17 + ABC_35 + ABC_45 + ABC_49
Inappropriate_Speech =~ ABC_9 + ABC_22 + ABC_33 + ABC_46'
#run CFA model
fit <- cfa(CFA.model, data = abc.A)
summary(fit, fit.measures = TRUE)
## lavaan 0.6-19 ended normally after 127 iterations
##
## Estimator DWLS
## Optimization method NLMINB
## Number of model parameters 169
##
## Number of observations 147
##
## Model Test User Model:
## Standard Scaled
## Test Statistic 3028.161 2147.112
## Degrees of freedom 1315 1315
## P-value (Chi-square) 0.000 0.000
## Scaling correction factor 2.608
## Shift parameter 986.229
## simple second-order correction
##
## Model Test Baseline Model:
##
## Test statistic 45144.573 9453.480
## Degrees of freedom 1378 1378
## P-value 0.000 0.000
## Scaling correction factor 5.420
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.961 0.897
## Tucker-Lewis Index (TLI) 0.959 0.892
##
## Robust Comparative Fit Index (CFI) NA
## Robust Tucker-Lewis Index (TLI) NA
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.094 0.066
## 90 Percent confidence interval - lower 0.090 0.061
## 90 Percent confidence interval - upper 0.099 0.071
## P-value H_0: RMSEA <= 0.050 0.000 0.000
## P-value H_0: RMSEA >= 0.080 1.000 0.000
##
## Robust RMSEA NA
## 90 Percent confidence interval - lower NA
## 90 Percent confidence interval - upper NA
## P-value H_0: Robust RMSEA <= 0.050 NA
## P-value H_0: Robust RMSEA >= 0.080 NA
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.141 0.141
##
## Parameter Estimates:
##
## Parameterization Delta
## Standard errors Robust.sem
## Information Expected
## Information saturated (h1) model Unstructured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Irritability =~
## ABC_4 1.000
## ABC_8 1.646 0.294 5.606 0.000
## ABC_10 1.292 0.241 5.369 0.000
## ABC_14 1.397 0.282 4.953 0.000
## ABC_19 1.771 0.330 5.368 0.000
## ABC_25 0.928 0.285 3.261 0.001
## ABC_29 1.448 0.268 5.397 0.000
## ABC_34 0.837 0.268 3.127 0.002
## ABC_36 1.495 0.295 5.075 0.000
## ABC_41 1.413 0.277 5.098 0.000
## ABC_47 0.833 0.238 3.501 0.000
## ABC_57 1.370 0.250 5.477 0.000
## Social_Withdrawal =~
## ABC_3 1.000
## ABC_5 2.485 0.747 3.327 0.001
## ABC_12 1.890 0.561 3.367 0.001
## ABC_16 2.472 0.723 3.419 0.001
## ABC_20 2.255 0.691 3.261 0.001
## ABC_23 0.079 0.362 0.219 0.827
## ABC_26 2.782 0.839 3.318 0.001
## ABC_30 2.698 0.796 3.388 0.001
## ABC_32 1.094 0.507 2.157 0.031
## ABC_37 2.363 0.697 3.390 0.001
## ABC_40 2.808 0.830 3.384 0.001
## ABC_42 2.372 0.716 3.312 0.001
## ABC_43 1.811 0.582 3.114 0.002
## ABC_55 2.795 0.849 3.290 0.001
## ABC_58 2.547 0.774 3.289 0.001
## Hyperactivity =~
## ABC_1 1.000
## ABC_7 0.937 0.053 17.555 0.000
## ABC_13 0.961 0.050 19.397 0.000
## ABC_15 1.105 0.040 27.819 0.000
## ABC_18 1.008 0.049 20.542 0.000
## ABC_21 0.932 0.047 19.647 0.000
## ABC_24 0.935 0.051 18.314 0.000
## ABC_28 0.935 0.064 14.702 0.000
## ABC_31 0.977 0.049 20.025 0.000
## ABC_38 1.072 0.041 25.952 0.000
## ABC_39 1.026 0.035 29.017 0.000
## ABC_44 0.816 0.058 14.165 0.000
## ABC_48 0.870 0.057 15.195 0.000
## ABC_51 0.933 0.057 16.460 0.000
## ABC_54 1.077 0.035 30.361 0.000
## ABC_56 0.680 0.091 7.492 0.000
## Stereotypy =~
## ABC_6 1.000
## ABC_11 1.069 0.065 16.565 0.000
## ABC_17 1.175 0.072 16.332 0.000
## ABC_35 0.963 0.063 15.275 0.000
## ABC_45 0.791 0.087 9.052 0.000
## ABC_49 0.560 0.122 4.601 0.000
## Inappropriate_Speech =~
## ABC_9 1.000
## ABC_22 1.256 0.188 6.696 0.000
## ABC_33 1.100 0.214 5.131 0.000
## ABC_46 1.407 0.209 6.724 0.000
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## Irritability ~~
## Social_Wthdrwl 0.072 0.031 2.317 0.020
## Hyperactivity 0.263 0.057 4.653 0.000
## Stereotypy 0.169 0.050 3.379 0.001
## Inapprprt_Spch 0.201 0.061 3.287 0.001
## Social_Withdrawal ~~
## Hyperactivity 0.170 0.051 3.327 0.001
## Stereotypy 0.173 0.056 3.086 0.002
## Inapprprt_Spch 0.055 0.029 1.877 0.060
## Hyperactivity ~~
## Stereotypy 0.510 0.048 10.518 0.000
## Inapprprt_Spch 0.230 0.058 3.972 0.000
## Stereotypy ~~
## Inapprprt_Spch 0.088 0.062 1.413 0.158
##
## Thresholds:
## Estimate Std.Err z-value P(>|z|)
## ABC_4|t1 0.303 0.105 2.873 0.004
## ABC_8|t1 -0.026 0.104 -0.247 0.805
## ABC_8|t2 0.803 0.117 6.875 0.000
## ABC_10|t1 0.111 0.104 1.068 0.285
## ABC_10|t2 1.068 0.128 8.318 0.000
## ABC_14|t1 0.111 0.104 1.068 0.285
## ABC_14|t2 1.038 0.127 8.184 0.000
## ABC_19|t1 0.060 0.104 0.575 0.565
## ABC_19|t2 0.780 0.116 6.722 0.000
## ABC_25|t1 0.901 0.121 7.475 0.000
## ABC_29|t1 -0.339 0.106 -3.200 0.001
## ABC_29|t2 0.691 0.113 6.099 0.000
## ABC_34|t1 0.901 0.121 7.475 0.000
## ABC_36|t1 0.060 0.104 0.575 0.565
## ABC_36|t2 0.981 0.124 7.908 0.000
## ABC_41|t1 0.394 0.107 3.689 0.000
## ABC_47|t1 0.488 0.108 4.501 0.000
## ABC_57|t1 -0.009 0.104 -0.082 0.934
## ABC_57|t2 0.851 0.119 7.178 0.000
## ABC_3|t1 0.180 0.104 1.725 0.084
## ABC_3|t2 1.130 0.132 8.575 0.000
## ABC_5|t1 0.394 0.107 3.689 0.000
## ABC_12|t1 -0.250 0.105 -2.381 0.017
## ABC_12|t2 0.981 0.124 7.908 0.000
## ABC_16|t1 0.215 0.105 2.053 0.040
## ABC_20|t1 0.215 0.105 2.053 0.040
## ABC_23|t1 0.627 0.111 5.625 0.000
## ABC_26|t1 0.851 0.119 7.178 0.000
## ABC_30|t1 0.450 0.108 4.177 0.000
## ABC_32|t1 0.851 0.119 7.178 0.000
## ABC_37|t1 -0.111 0.104 -1.068 0.285
## ABC_37|t2 0.606 0.111 5.465 0.000
## ABC_37|t3 1.270 0.141 9.029 0.000
## ABC_40|t1 -0.412 0.107 -3.852 0.000
## ABC_40|t2 0.488 0.108 4.501 0.000
## ABC_40|t3 1.068 0.128 8.318 0.000
## ABC_42|t1 0.468 0.108 4.339 0.000
## ABC_43|t1 -0.009 0.104 -0.082 0.934
## ABC_43|t2 0.507 0.109 4.662 0.000
## ABC_43|t3 0.851 0.119 7.178 0.000
## ABC_55|t1 0.827 0.118 7.027 0.000
## ABC_58|t1 -0.321 0.106 -3.036 0.002
## ABC_58|t2 0.669 0.113 5.942 0.000
## ABC_58|t3 1.233 0.138 8.925 0.000
## ABC_1|t1 -0.526 0.109 -4.824 0.000
## ABC_1|t2 0.128 0.104 1.233 0.218
## ABC_1|t3 0.901 0.121 7.475 0.000
## ABC_7|t1 -0.163 0.104 -1.561 0.118
## ABC_7|t2 0.526 0.109 4.824 0.000
## ABC_13|t1 -0.669 0.113 -5.942 0.000
## ABC_13|t2 0.094 0.104 0.904 0.366
## ABC_13|t3 0.780 0.116 6.722 0.000
## ABC_15|t1 -0.712 0.114 -6.256 0.000
## ABC_15|t2 0.009 0.104 0.082 0.934
## ABC_15|t3 0.648 0.112 5.783 0.000
## ABC_18|t1 -0.232 0.105 -2.217 0.027
## ABC_18|t2 0.450 0.108 4.177 0.000
## ABC_21|t1 -0.412 0.107 -3.852 0.000
## ABC_21|t2 0.468 0.108 4.339 0.000
## ABC_21|t3 1.233 0.138 8.925 0.000
## ABC_24|t1 -0.285 0.105 -2.709 0.007
## ABC_24|t2 0.757 0.115 6.567 0.000
## ABC_28|t1 -0.735 0.115 -6.412 0.000
## ABC_28|t2 0.321 0.106 3.036 0.002
## ABC_28|t3 0.954 0.123 7.765 0.000
## ABC_31|t1 -0.250 0.105 -2.381 0.017
## ABC_31|t2 0.691 0.113 6.099 0.000
## ABC_38|t1 -0.546 0.110 -4.985 0.000
## ABC_38|t2 -0.060 0.104 -0.575 0.565
## ABC_38|t3 0.712 0.114 6.256 0.000
## ABC_39|t1 -0.375 0.106 -3.526 0.000
## ABC_39|t2 0.128 0.104 1.233 0.218
## ABC_39|t3 0.735 0.115 6.412 0.000
## ABC_44|t1 -0.712 0.114 -6.256 0.000
## ABC_44|t2 0.145 0.104 1.397 0.162
## ABC_44|t3 0.803 0.117 6.875 0.000
## ABC_48|t1 0.215 0.105 2.053 0.040
## ABC_48|t2 0.735 0.115 6.412 0.000
## ABC_51|t1 -0.526 0.109 -4.824 0.000
## ABC_51|t2 0.546 0.110 4.985 0.000
## ABC_51|t3 1.197 0.136 8.814 0.000
## ABC_54|t1 -0.285 0.105 -2.709 0.007
## ABC_54|t2 0.250 0.105 2.381 0.017
## ABC_54|t3 0.876 0.120 7.327 0.000
## ABC_56|t1 0.009 0.104 0.082 0.934
## ABC_6|t1 -0.128 0.104 -1.233 0.218
## ABC_6|t2 0.712 0.114 6.256 0.000
## ABC_11|t1 -0.375 0.106 -3.526 0.000
## ABC_11|t2 0.546 0.110 4.985 0.000
## ABC_11|t3 1.163 0.134 8.697 0.000
## ABC_17|t1 -0.043 0.104 -0.411 0.681
## ABC_17|t2 0.803 0.117 6.875 0.000
## ABC_35|t1 -0.060 0.104 -0.575 0.565
## ABC_35|t2 0.691 0.113 6.099 0.000
## ABC_35|t3 1.130 0.132 8.575 0.000
## ABC_45|t1 0.303 0.105 2.873 0.004
## ABC_45|t2 0.876 0.120 7.327 0.000
## ABC_49|t1 0.757 0.115 6.567 0.000
## ABC_9|t1 0.627 0.111 5.625 0.000
## ABC_9|t2 1.068 0.128 8.318 0.000
## ABC_22|t1 0.145 0.104 1.397 0.162
## ABC_22|t2 0.586 0.110 5.306 0.000
## ABC_22|t3 1.009 0.125 8.047 0.000
## ABC_33|t1 0.627 0.111 5.625 0.000
## ABC_46|t1 0.321 0.106 3.036 0.002
## ABC_46|t2 0.803 0.117 6.875 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .ABC_4 0.713
## .ABC_8 0.224
## .ABC_10 0.521
## .ABC_14 0.440
## .ABC_19 0.101
## .ABC_25 0.753
## .ABC_29 0.399
## .ABC_34 0.799
## .ABC_36 0.359
## .ABC_41 0.428
## .ABC_47 0.801
## .ABC_57 0.462
## .ABC_3 0.895
## .ABC_5 0.351
## .ABC_12 0.625
## .ABC_16 0.357
## .ABC_20 0.466
## .ABC_23 0.999
## .ABC_26 0.186
## .ABC_30 0.235
## .ABC_32 0.874
## .ABC_37 0.413
## .ABC_40 0.171
## .ABC_42 0.409
## .ABC_43 0.655
## .ABC_55 0.179
## .ABC_58 0.318
## .ABC_1 0.295
## .ABC_7 0.382
## .ABC_13 0.350
## .ABC_15 0.140
## .ABC_18 0.284
## .ABC_21 0.388
## .ABC_24 0.384
## .ABC_28 0.384
## .ABC_31 0.327
## .ABC_38 0.190
## .ABC_39 0.258
## .ABC_44 0.531
## .ABC_48 0.467
## .ABC_51 0.387
## .ABC_54 0.182
## .ABC_56 0.674
## .ABC_6 0.261
## .ABC_11 0.155
## .ABC_17 -0.020
## .ABC_35 0.314
## .ABC_45 0.537
## .ABC_49 0.768
## .ABC_9 0.498
## .ABC_22 0.208
## .ABC_33 0.393
## .ABC_46 0.006
## Irritability 0.287 0.102 2.823 0.005
## Social_Wthdrwl 0.105 0.063 1.671 0.095
## Hyperactivity 0.705 0.049 14.351 0.000
## Stereotypy 0.739 0.072 10.332 0.000
## Inapprprt_Spch 0.502 0.138 3.642 0.000
#ESEM
#fitA <- cfa(model, data = abc.A)
#summary(fitA, fit.measures = TRUE, standardized = TRUE)
Use lavaan to conduct an ESEM of the ABC prespecified factor structure. Make sure to use the correct estimation procedures for ordinal data, which you do by telling lavaan that the data are ordered (it’s the “ordered = TRUE” argument). I don’t know how much the rotation will matter, but the most common one is geomin (rotation = “geomin”). We’ll want to output the fit statistics and review the standardized factor loadings. I think you can request modificaiton indices by submitting the model object to the function modindices().