library(tidyverse)
library(summarytools)
library(psych)
library(lavaan)
library(semTools)
library(haven)
library(EGAnet)
library(lavaan.mi)
Mydata <- read_sav("/Users/niurongting/Desktop/JPPR/Crisis Emotion - Main Study-Final.sav")
head(Mydata)
## # A tibble: 6 × 201
##   StartDate           EndDate             Status         IPAddress      Progress
##   <dttm>              <dttm>              <dbl+lbl>      <chr>             <dbl>
## 1 2025-03-03 09:50:07 2025-03-03 09:54:14 0 [IP Address] 100.12.196.35       100
## 2 2025-03-03 09:50:10 2025-03-03 09:55:02 0 [IP Address] 72.0.134.210        100
## 3 2025-03-03 09:50:05 2025-03-03 09:55:41 0 [IP Address] 73.188.88.156       100
## 4 2025-03-03 09:50:03 2025-03-03 09:55:46 0 [IP Address] 47.39.239.232       100
## 5 2025-03-03 09:50:10 2025-03-03 09:55:53 0 [IP Address] 173.91.121.220      100
## 6 2025-03-03 09:50:07 2025-03-03 09:55:57 0 [IP Address] 73.85.98.93         100
## # ℹ 196 more variables: Duration__in_seconds_ <dbl>, Finished <dbl+lbl>,
## #   RecordedDate <dttm>, ResponseId <chr>, RecipientLastName <chr>,
## #   RecipientFirstName <chr>, RecipientEmail <chr>, ExternalReference <chr>,
## #   LocationLatitude <chr>, LocationLongitude <chr>, DistributionChannel <chr>,
## #   UserLanguage <chr>, S0Q1 <dbl+lbl>, Q79_First_Click <dbl>,
## #   Q79_Last_Click <dbl>, Q79_Page_Submit <dbl>, Q79_Click_Count <dbl>,
## #   Q80_First_Click <dbl>, Q80_Last_Click <dbl>, Q80_Page_Submit <dbl>, …
Mydata_ea <- select(Mydata, EmpatheticAnger__1:EmpatheticAnger__6)
Mydata_mo <- select(Mydata, Moraloutrage__1:Moraloutrage__6)

head(Mydata_ea)
## # A tibble: 6 × 6
##   EmpatheticAnger__1 EmpatheticAnger__2 EmpatheticAnger__3 EmpatheticAnger__4
##   <dbl+lbl>          <dbl+lbl>          <dbl+lbl>          <dbl+lbl>         
## 1 6 [Agree]          7 [Strongly agree] 7 [Strongly agree] 6 [Agree]         
## 2 5 [Somewhat Agree] 5 [Somewhat Agree] 5 [Somewhat Agree] 5 [Somewhat Agree]
## 3 5 [Somewhat Agree] 5 [Somewhat Agree] 5 [Somewhat Agree] 5 [Somewhat Agree]
## 4 7 [Strongly agree] 7 [Strongly agree] 7 [Strongly agree] 7 [Strongly agree]
## 5 7 [Strongly agree] 7 [Strongly agree] 7 [Strongly agree] 7 [Strongly agree]
## 6 6 [Agree]          6 [Agree]          6 [Agree]          6 [Agree]         
## # ℹ 2 more variables: EmpatheticAnger__5 <dbl+lbl>,
## #   EmpatheticAnger__6 <dbl+lbl>
head(Mydata_mo)
## # A tibble: 6 × 6
##   Moraloutrage__1 Moraloutrage__2 Moraloutrage__3 Moraloutrage__4
##   <dbl+lbl>       <dbl+lbl>       <dbl+lbl>       <dbl+lbl>      
## 1 4 [Moderately]  4 [Moderately]  3 [Somewhat]    4 [Moderately] 
## 2 4 [Moderately]  4 [Moderately]  4 [Moderately]  4 [Moderately] 
## 3 4 [Moderately]  3 [Somewhat]    4 [Moderately]  4 [Moderately] 
## 4 1 [Not at all]  1 [Not at all]  1 [Not at all]  1 [Not at all] 
## 5 7 [Extremely]   7 [Extremely]   7 [Extremely]   7 [Extremely]  
## 6 4 [Moderately]  1 [Not at all]  3 [Somewhat]    4 [Moderately] 
## # ℹ 2 more variables: Moraloutrage__5 <dbl+lbl>, Moraloutrage__6 <dbl+lbl>
Mydata_ea <- Mydata %>%
  select(EmpatheticAnger__1:EmpatheticAnger__6) %>%
  mutate(across(everything(), haven::zap_labels))
print(dfSummary(Mydata_ea, 
                round.digits = 2,
                varnumbers   = FALSE, 
                valid.col    = FALSE,
                plain.ascii = FALSE,
                graph.magnif = 0.76),
      method = 'render')

Data Frame Summary

Mydata_ea

Dimensions: 482 x 6
Duplicates: 235
Variable Label Stats / Values Freqs (% of Valid) Graph Missing
EmpatheticAnger__1 [numeric] Considering the victims in this crisis, please indicate your level of agreement with the following statements: - If I see that victims in this crisis are feeling mad because they were mistreated, then I feel mad too.
Mean (sd) : 5.06 (1.5)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.3)
1:14(2.9%)
2:26(5.4%)
3:30(6.2%)
4:65(13.5%)
5:137(28.4%)
6:131(27.2%)
7:79(16.4%)
0 (0.0%)
EmpatheticAnger__2 [numeric] Considering the victims in this crisis, please indicate your level of agreement with the following statements: - When I see victims in this crisis feeling sad because they were hurt by the organization, I feel angry.
Mean (sd) : 5.09 (1.48)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.29)
1:16(3.3%)
2:23(4.8%)
3:24(5.0%)
4:63(13.1%)
5:145(30.1%)
6:134(27.8%)
7:77(16.0%)
0 (0.0%)
EmpatheticAnger__3 [numeric] Considering the victims in this crisis, please indicate your level of agreement with the following statements: - I feel angry for victims in this crisis when they have been victimized by the organization.
Mean (sd) : 5.25 (1.48)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 1 (0.28)
1:16(3.3%)
2:17(3.5%)
3:18(3.7%)
4:63(13.1%)
5:131(27.2%)
6:138(28.6%)
7:99(20.5%)
0 (0.0%)
EmpatheticAnger__4 [numeric] Considering the victims in this crisis, please indicate your level of agreement with the following statements: - I feel angry for victims in this crisis when their feelings have been hurt by the organization.
Mean (sd) : 4.94 (1.59)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.32)
1:24(5.0%)
2:24(5.0%)
3:31(6.4%)
4:69(14.3%)
5:140(29.0%)
6:117(24.3%)
7:77(16.0%)
0 (0.0%)
EmpatheticAnger__5 [numeric] Considering the victims in this crisis, please indicate your level of agreement with the following statements: - I get angry when victims in this crisis are hurt by the organization.
Mean (sd) : 5.22 (1.51)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 1 (0.29)
1:17(3.5%)
2:22(4.6%)
3:17(3.5%)
4:52(10.8%)
5:145(30.1%)
6:130(27.0%)
7:99(20.5%)
0 (0.0%)
EmpatheticAnger__6 [numeric] Considering the victims in this crisis, please indicate your level of agreement with the following statements: - When victims in this crisis get angry at the organization, I feel angry at that organization.
Mean (sd) : 5.07 (1.56)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.31)
1:21(4.4%)
2:25(5.2%)
3:18(3.7%)
4:73(15.1%)
5:124(25.7%)
6:141(29.3%)
7:80(16.6%)
0 (0.0%)

Generated by summarytools 1.1.4 (R version 4.4.1)
2025-10-20

pairs.panels(Mydata_ea, 
             method = "pearson",
             density = TRUE,
             gap=0) # show density plots

corPlot(Mydata_ea,scale=F)

Mydata_mo <- Mydata %>%
  select(Moraloutrage__1:Moraloutrage__6) %>%
  mutate(across(everything(), haven::zap_labels))
print(dfSummary(Mydata_mo, 
                round.digits = 2,
                varnumbers   = FALSE, 
                valid.col    = FALSE,
                plain.ascii = FALSE,
                graph.magnif = 0.76),
      method = 'render')

Data Frame Summary

Mydata_mo

Dimensions: 482 x 6
Duplicates: 162
Variable Label Stats / Values Freqs (% of Valid) Graph Missing
Moraloutrage__1 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Angry
Mean (sd) : 4.32 (1.91)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.44)
1:51(10.6%)
2:54(11.2%)
3:52(10.8%)
4:87(18.0%)
5:84(17.4%)
6:77(16.0%)
7:77(16.0%)
0 (0.0%)
Moraloutrage__2 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Offended
Mean (sd) : 3.72 (2.07)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.56)
1:109(22.6%)
2:53(11.0%)
3:69(14.3%)
4:61(12.7%)
5:70(14.5%)
6:61(12.7%)
7:59(12.2%)
0 (0.0%)
Moraloutrage__3 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Outraged
Mean (sd) : 4.03 (2.02)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 4 (0.5)
1:83(17.2%)
2:55(11.4%)
3:47(9.8%)
4:72(14.9%)
5:93(19.3%)
6:67(13.9%)
7:65(13.5%)
0 (0.0%)
Moraloutrage__4 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Mad
Mean (sd) : 4.18 (1.97)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 4 (0.47)
1:65(13.5%)
2:59(12.2%)
3:44(9.1%)
4:84(17.4%)
5:90(18.7%)
6:68(14.1%)
7:72(14.9%)
0 (0.0%)
Moraloutrage__5 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Perturbed
Mean (sd) : 4.18 (1.91)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.46)
1:57(11.8%)
2:54(11.2%)
3:62(12.9%)
4:88(18.3%)
5:84(17.4%)
6:69(14.3%)
7:68(14.1%)
0 (0.0%)
Moraloutrage__6 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Indignant
Mean (sd) : 3.77 (1.97)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.52)
1:93(19.3%)
2:58(12.0%)
3:56(11.6%)
4:93(19.3%)
5:76(15.8%)
6:53(11.0%)
7:53(11.0%)
0 (0.0%)

Generated by summarytools 1.1.4 (R version 4.4.1)
2025-10-20

pairs.panels(Mydata_mo, 
             method = "pearson",
             density = TRUE,
             gap=0) # show density plots

corPlot(Mydata_mo,scale=F)

Mydata_mo2 <- Mydata %>%
  select(Moraloutrage__2,Moraloutrage__5,Moraloutrage__6) %>%
  mutate(across(everything(), haven::zap_labels))
print(dfSummary(Mydata_mo2, 
                round.digits = 2,
                varnumbers   = FALSE, 
                valid.col    = FALSE,
                plain.ascii = FALSE,
                graph.magnif = 0.76),
      method = 'render')

Data Frame Summary

Mydata_mo2

Dimensions: 482 x 3
Duplicates: 349
Variable Label Stats / Values Freqs (% of Valid) Graph Missing
Moraloutrage__2 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Offended
Mean (sd) : 3.72 (2.07)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.56)
1:109(22.6%)
2:53(11.0%)
3:69(14.3%)
4:61(12.7%)
5:70(14.5%)
6:61(12.7%)
7:59(12.2%)
0 (0.0%)
Moraloutrage__5 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Perturbed
Mean (sd) : 4.18 (1.91)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.46)
1:57(11.8%)
2:54(11.2%)
3:62(12.9%)
4:88(18.3%)
5:84(17.4%)
6:69(14.3%)
7:68(14.1%)
0 (0.0%)
Moraloutrage__6 [numeric] Considering {{$CompanyName}} in the crisis, how would you describe your emotions toward the organization? - Indignant
Mean (sd) : 3.77 (1.97)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.52)
1:93(19.3%)
2:58(12.0%)
3:56(11.6%)
4:93(19.3%)
5:76(15.8%)
6:53(11.0%)
7:53(11.0%)
0 (0.0%)

Generated by summarytools 1.1.4 (R version 4.4.1)
2025-10-20

pairs.panels(Mydata_mo2, 
             method = "pearson",
             density = TRUE,
             gap=0) # show density plots

corPlot(Mydata_mo2,scale=F)

Mydata_two <- Mydata %>%
  select(
    EmpatheticAnger__1:EmpatheticAnger__6,
    Moraloutrage__2, Moraloutrage__3, Moraloutrage__5, Moraloutrage__6
  ) %>%
  mutate(across(everything(), ~as.numeric(as.character(.))))


print(dfSummary(Mydata_two, 
                round.digits = 2,
                varnumbers   = FALSE, 
                valid.col    = FALSE,
                plain.ascii = FALSE,
                graph.magnif = 0.76),
      method = 'render')

Data Frame Summary

Mydata_two

Dimensions: 482 x 10
Duplicates: 74
Variable Stats / Values Freqs (% of Valid) Graph Missing
EmpatheticAnger__1 [numeric]
Mean (sd) : 5.06 (1.5)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.3)
1:14(2.9%)
2:26(5.4%)
3:30(6.2%)
4:65(13.5%)
5:137(28.4%)
6:131(27.2%)
7:79(16.4%)
0 (0.0%)
EmpatheticAnger__2 [numeric]
Mean (sd) : 5.09 (1.48)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.29)
1:16(3.3%)
2:23(4.8%)
3:24(5.0%)
4:63(13.1%)
5:145(30.1%)
6:134(27.8%)
7:77(16.0%)
0 (0.0%)
EmpatheticAnger__3 [numeric]
Mean (sd) : 5.25 (1.48)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 1 (0.28)
1:16(3.3%)
2:17(3.5%)
3:18(3.7%)
4:63(13.1%)
5:131(27.2%)
6:138(28.6%)
7:99(20.5%)
0 (0.0%)
EmpatheticAnger__4 [numeric]
Mean (sd) : 4.94 (1.59)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.32)
1:24(5.0%)
2:24(5.0%)
3:31(6.4%)
4:69(14.3%)
5:140(29.0%)
6:117(24.3%)
7:77(16.0%)
0 (0.0%)
EmpatheticAnger__5 [numeric]
Mean (sd) : 5.22 (1.51)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 1 (0.29)
1:17(3.5%)
2:22(4.6%)
3:17(3.5%)
4:52(10.8%)
5:145(30.1%)
6:130(27.0%)
7:99(20.5%)
0 (0.0%)
EmpatheticAnger__6 [numeric]
Mean (sd) : 5.07 (1.56)
min ≤ med ≤ max:
1 ≤ 5 ≤ 7
IQR (CV) : 2 (0.31)
1:21(4.4%)
2:25(5.2%)
3:18(3.7%)
4:73(15.1%)
5:124(25.7%)
6:141(29.3%)
7:80(16.6%)
0 (0.0%)
Moraloutrage__2 [numeric]
Mean (sd) : 3.72 (2.07)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.56)
1:109(22.6%)
2:53(11.0%)
3:69(14.3%)
4:61(12.7%)
5:70(14.5%)
6:61(12.7%)
7:59(12.2%)
0 (0.0%)
Moraloutrage__3 [numeric]
Mean (sd) : 4.03 (2.02)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 4 (0.5)
1:83(17.2%)
2:55(11.4%)
3:47(9.8%)
4:72(14.9%)
5:93(19.3%)
6:67(13.9%)
7:65(13.5%)
0 (0.0%)
Moraloutrage__5 [numeric]
Mean (sd) : 4.18 (1.91)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.46)
1:57(11.8%)
2:54(11.2%)
3:62(12.9%)
4:88(18.3%)
5:84(17.4%)
6:69(14.3%)
7:68(14.1%)
0 (0.0%)
Moraloutrage__6 [numeric]
Mean (sd) : 3.77 (1.97)
min ≤ med ≤ max:
1 ≤ 4 ≤ 7
IQR (CV) : 3 (0.52)
1:93(19.3%)
2:58(12.0%)
3:56(11.6%)
4:93(19.3%)
5:76(15.8%)
6:53(11.0%)
7:53(11.0%)
0 (0.0%)

Generated by summarytools 1.1.4 (R version 4.4.1)
2025-10-20

pairs.panels(Mydata_two, 
             method = "pearson",
             density = TRUE,
             gap=0) # show density plots

corPlot(Mydata_two,scale=F)

TARGET <- matrix(0, 10, 2) #create a matrix of all zeros
TARGET[1:6, 1] <- 1 #add 1s for rows 1-5 in column 1
TARGET[7:10, 2] <- 1 #add 1s for rows 6-16 in column 2
print(TARGET) #double-check to make sure it is what you want (needs to match your data frame)
##       [,1] [,2]
##  [1,]    1    0
##  [2,]    1    0
##  [3,]    1    0
##  [4,]    1    0
##  [5,]    1    0
##  [6,]    1    0
##  [7,]    0    1
##  [8,]    0    1
##  [9,]    0    1
## [10,]    0    1

EFA

efa_target <- efa(Mydata_two,nfactors=2,rotation="target",rotation.args = list(target = TARGET),estimator="MLR",output="lavaan",std.lv=T)
## Warning: lavaan->lav_model_vcov():  
##    The variance-covariance matrix of the estimated parameters (vcov) does not 
##    appear to be positive definite! The smallest eigenvalue (= -1.496606e-32) 
##    is smaller than zero. This may be a symptom that the model is not 
##    identified.
summary(efa_target,fit.measures=T,rsquare=T,std=T)
## lavaan 0.6-19 ended normally after 1 iteration
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        31
##   Row rank of the constraints matrix                14
## 
##   Rotation method                       TARGET OBLIQUE
##   Rotation algorithm (rstarts)                GPA (30)
##   Standardized metric                             TRUE
##   Row weights                                     None
## 
##   Number of observations                           482
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                71.292      35.181
##   Degrees of freedom                                26          26
##   P-value (Chi-square)                           0.000       0.108
##   Scaling correction factor                                  2.026
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                              5032.939    2344.732
##   Degrees of freedom                                45          45
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  2.146
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.991       0.996
##   Tucker-Lewis Index (TLI)                       0.984       0.993
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.996
##   Robust Tucker-Lewis Index (TLI)                            0.993
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -6890.195   -6890.195
##   Scaling correction factor                                  1.827
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -6854.549   -6854.549
##   Scaling correction factor                                  1.922
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                               13838.390   13838.390
##   Bayesian (BIC)                             13959.550   13959.550
##   Sample-size adjusted Bayesian (SABIC)      13867.507   13867.507
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.060       0.027
##   90 Percent confidence interval - lower         0.044       0.004
##   90 Percent confidence interval - upper         0.077       0.042
##   P-value H_0: RMSEA <= 0.050                    0.147       0.996
##   P-value H_0: RMSEA >= 0.080                    0.025       0.000
##                                                                   
##   Robust RMSEA                                               0.039
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.068
##   P-value H_0: Robust RMSEA <= 0.050                         0.704
##   P-value H_0: Robust RMSEA >= 0.080                         0.008
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.011       0.011
## 
## 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 =~ efa                                                             
##     EmpthtcAngr__1    1.318    0.069   19.139    0.000    1.318    0.877
##     EmpthtcAngr__2    1.347    0.068   19.677    0.000    1.347    0.908
##     EmpthtcAngr__3    1.365    0.070   19.400    0.000    1.365    0.926
##     EmpthtcAngr__4    1.370    0.077   17.821    0.000    1.370    0.862
##     EmpthtcAngr__5    1.433    0.072   20.008    0.000    1.433    0.952
##     EmpthtcAngr__6    1.582    0.065   24.379    0.000    1.582    1.017
##     Moraloutrag__2   -0.182    0.059   -3.090    0.002   -0.182   -0.088
##     Moraloutrag__3    0.029    0.044    0.673    0.501    0.029    0.015
##     Moraloutrag__5   -0.129    0.063   -2.065    0.039   -0.129   -0.068
##     Moraloutrag__6   -0.135    0.049   -2.780    0.005   -0.135   -0.069
##   f2 =~ efa                                                             
##     EmpthtcAngr__1   -0.012    0.056   -0.216    0.829   -0.012   -0.008
##     EmpthtcAngr__2   -0.081    0.052   -1.561    0.119   -0.081   -0.054
##     EmpthtcAngr__3   -0.032    0.043   -0.748    0.454   -0.032   -0.022
##     EmpthtcAngr__4   -0.052    0.058   -0.898    0.369   -0.052   -0.033
##     EmpthtcAngr__5   -0.091    0.048   -1.886    0.059   -0.091   -0.060
##     EmpthtcAngr__6   -0.216    0.049   -4.428    0.000   -0.216   -0.139
##     Moraloutrag__2    1.932    0.076   25.469    0.000    1.932    0.932
##     Moraloutrag__3    1.865    0.053   35.065    0.000    1.865    0.925
##     Moraloutrag__5    1.726    0.066   26.117    0.000    1.726    0.907
##     Moraloutrag__6    1.852    0.060   31.052    0.000    1.852    0.941
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   f1 ~~                                                                 
##     f2                0.742                               0.742    0.742
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EmpthtcAngr__1    0.544    0.073    7.501    0.000    0.544    0.241
##    .EmpthtcAngr__2    0.539    0.097    5.574    0.000    0.539    0.245
##    .EmpthtcAngr__3    0.375    0.055    6.763    0.000    0.375    0.173
##    .EmpthtcAngr__4    0.751    0.111    6.793    0.000    0.751    0.298
##    .EmpthtcAngr__5    0.396    0.055    7.200    0.000    0.396    0.175
##    .EmpthtcAngr__6    0.374    0.078    4.772    0.000    0.374    0.155
##    .Moraloutrag__2    1.050    0.164    6.385    0.000    1.050    0.244
##    .Moraloutrag__3    0.506                               0.506    0.124
##    .Moraloutrag__5    0.960                               0.960    0.265
##    .Moraloutrag__6    0.794       NA                      0.794    0.205
##     f1                1.000                               1.000    1.000
##     f2                1.000                               1.000    1.000
## 
## R-Square:
##                    Estimate
##     EmpthtcAngr__1    0.759
##     EmpthtcAngr__2    0.755
##     EmpthtcAngr__3    0.827
##     EmpthtcAngr__4    0.702
##     EmpthtcAngr__5    0.825
##     EmpthtcAngr__6    0.845
##     Moraloutrag__2    0.756
##     Moraloutrag__3    0.876
##     Moraloutrag__5    0.735
##     Moraloutrag__6    0.795

CFA 2 Factor

CFA <- ' EmpAnger =~ EmpatheticAnger__1 + EmpatheticAnger__2 + EmpatheticAnger__3 + 
    EmpatheticAnger__4 + EmpatheticAnger__5 + EmpatheticAnger__6
  MoralOutrage =~ Moraloutrage__2 + Moraloutrage__3 +  Moraloutrage__5 + Moraloutrage__6' 
cfa_fit <- cfa(data = Mydata,CFA,std.lv=T,estimator="MLR")
summary(cfa_fit,std=T,fit.measures=T,rsquare=T)
## lavaan 0.6-19 ended normally after 22 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           482
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                90.142      50.157
##   Degrees of freedom                                34          34
##   P-value (Chi-square)                           0.000       0.037
##   Scaling correction factor                                  1.797
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                              5032.939    2344.732
##   Degrees of freedom                                45          45
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  2.146
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.989       0.993
##   Tucker-Lewis Index (TLI)                       0.985       0.991
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.994
##   Robust Tucker-Lewis Index (TLI)                            0.992
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -6899.620   -6899.620
##   Scaling correction factor                                  2.123
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)             NA          NA
##   Scaling correction factor                                  1.922
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                               13841.240   13841.240
##   Bayesian (BIC)                             13928.977   13928.977
##   Sample-size adjusted Bayesian (SABIC)      13862.324   13862.324
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.059       0.031
##   90 Percent confidence interval - lower         0.044       0.016
##   90 Percent confidence interval - upper         0.073       0.045
##   P-value H_0: RMSEA <= 0.050                    0.159       0.992
##   P-value H_0: RMSEA >= 0.080                    0.008       0.000
##                                                                   
##   Robust RMSEA                                               0.042
##   90 Percent confidence interval - lower                     0.011
##   90 Percent confidence interval - upper                     0.066
##   P-value H_0: Robust RMSEA <= 0.050                         0.683
##   P-value H_0: Robust RMSEA >= 0.080                         0.003
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.019       0.019
## 
## 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
##   EmpAnger =~                                                           
##     EmpthtcAngr__1    1.310    0.060   21.798    0.000    1.310    0.872
##     EmpthtcAngr__2    1.288    0.063   20.552    0.000    1.288    0.869
##     EmpthtcAngr__3    1.342    0.064   21.008    0.000    1.342    0.911
##     EmpthtcAngr__4    1.333    0.064   20.961    0.000    1.333    0.839
##     EmpthtcAngr__5    1.367    0.063   21.716    0.000    1.367    0.909
##     EmpthtcAngr__6    1.421    0.060   23.714    0.000    1.421    0.914
##   MoralOutrage =~                                                       
##     Moraloutrag__2    1.797    0.061   29.338    0.000    1.797    0.867
##     Moraloutrag__3    1.893    0.046   40.894    0.000    1.893    0.939
##     Moraloutrag__5    1.627    0.058   28.065    0.000    1.627    0.854
##     Moraloutrag__6    1.748    0.055   31.606    0.000    1.748    0.889
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   EmpAnger ~~                                                           
##     MoralOutrage      0.692    0.025   27.238    0.000    0.692    0.692
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EmpthtcAngr__1    0.542    0.073    7.418    0.000    0.542    0.240
##    .EmpthtcAngr__2    0.539    0.097    5.545    0.000    0.539    0.245
##    .EmpthtcAngr__3    0.371    0.055    6.765    0.000    0.371    0.171
##    .EmpthtcAngr__4    0.746    0.111    6.748    0.000    0.746    0.296
##    .EmpthtcAngr__5    0.395    0.054    7.349    0.000    0.395    0.174
##    .EmpthtcAngr__6    0.398    0.080    4.980    0.000    0.398    0.165
##    .Moraloutrag__2    1.067    0.159    6.707    0.000    1.067    0.248
##    .Moraloutrag__3    0.481    0.062    7.757    0.000    0.481    0.118
##    .Moraloutrag__5    0.980    0.103    9.501    0.000    0.980    0.270
##    .Moraloutrag__6    0.814    0.117    6.980    0.000    0.814    0.210
##     EmpAnger          1.000                               1.000    1.000
##     MoralOutrage      1.000                               1.000    1.000
## 
## R-Square:
##                    Estimate
##     EmpthtcAngr__1    0.760
##     EmpthtcAngr__2    0.755
##     EmpthtcAngr__3    0.829
##     EmpthtcAngr__4    0.704
##     EmpthtcAngr__5    0.826
##     EmpthtcAngr__6    0.835
##     Moraloutrag__2    0.752
##     Moraloutrag__3    0.882
##     Moraloutrag__5    0.730
##     Moraloutrag__6    0.790
# lavInspect(cfa_fit)

EFA vs.CFA

efavcfa <- compareFit(efa_target,cfa_fit)
summary(efavcfa,fit.measures=c("chisq", "df", "pvalue", "cfi", "rmsea","srmr","aic","bic"))
## ################### Nested Model Comparison #########################
## 
## Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
## 
## lavaan->unknown():  
##    lavaan NOTE: The "Chisq" column contains standard test statistics, not the 
##    robust test that should be reported per model. A robust difference test is 
##    a function of two standard (not robust) statistics.
##            Df   AIC   BIC  Chisq Chisq diff Df diff Pr(>Chisq)  
## efa_target 26 13838 13960 71.293                                
## cfa_fit    34 13841 13929 90.142     17.918       8    0.02185 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## ####################### Model Fit Indices ###########################
##              chisq df pvalue   cfi rmsea  srmr        aic        bic
## efa_target 71.292† 26   .000 .991† .060  .011† 13838.390† 13959.550 
## cfa_fit    90.142  34   .000 .989  .059† .019  13841.240  13928.977†
## 
## ################## Differences in Fit Indices #######################
##                      df    cfi  rmsea  srmr  aic     bic
## cfa_fit - efa_target  8 -0.002 -0.002 0.008 2.85 -30.574

Setting the metric

marker_var <- ' EmpAnger =~ EmpatheticAnger__1 + EmpatheticAnger__2 + EmpatheticAnger__3 + 
    EmpatheticAnger__4 + EmpatheticAnger__5 + EmpatheticAnger__6
  MoralOutrage =~ Moraloutrage__2 + Moraloutrage__3 +  Moraloutrage__5 + Moraloutrage__6'  
marker_fit <- cfa(data = Mydata, marker_var, estimator="MLR")
summary(marker_fit,std=T,fit.measures=T,rsquare=T)
## lavaan 0.6-19 ended normally after 35 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           482
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                90.142      50.157
##   Degrees of freedom                                34          34
##   P-value (Chi-square)                           0.000       0.037
##   Scaling correction factor                                  1.797
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                              5032.939    2344.732
##   Degrees of freedom                                45          45
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  2.146
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.989       0.993
##   Tucker-Lewis Index (TLI)                       0.985       0.991
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.994
##   Robust Tucker-Lewis Index (TLI)                            0.992
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -6899.620   -6899.620
##   Scaling correction factor                                  2.123
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)             NA          NA
##   Scaling correction factor                                  1.922
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                               13841.240   13841.240
##   Bayesian (BIC)                             13928.977   13928.977
##   Sample-size adjusted Bayesian (SABIC)      13862.324   13862.324
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.059       0.031
##   90 Percent confidence interval - lower         0.044       0.016
##   90 Percent confidence interval - upper         0.073       0.045
##   P-value H_0: RMSEA <= 0.050                    0.159       0.992
##   P-value H_0: RMSEA >= 0.080                    0.008       0.000
##                                                                   
##   Robust RMSEA                                               0.042
##   90 Percent confidence interval - lower                     0.011
##   90 Percent confidence interval - upper                     0.066
##   P-value H_0: Robust RMSEA <= 0.050                         0.683
##   P-value H_0: Robust RMSEA >= 0.080                         0.003
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.019       0.019
## 
## 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
##   EmpAnger =~                                                           
##     EmpthtcAngr__1    1.000                               1.310    0.872
##     EmpthtcAngr__2    0.984    0.030   33.197    0.000    1.288    0.869
##     EmpthtcAngr__3    1.025    0.040   25.477    0.000    1.342    0.911
##     EmpthtcAngr__4    1.018    0.043   23.500    0.000    1.333    0.839
##     EmpthtcAngr__5    1.044    0.036   29.279    0.000    1.367    0.909
##     EmpthtcAngr__6    1.085    0.033   32.749    0.000    1.421    0.914
##   MoralOutrage =~                                                       
##     Moraloutrag__2    1.000                               1.797    0.867
##     Moraloutrag__3    1.054    0.031   33.948    0.000    1.893    0.939
##     Moraloutrag__5    0.905    0.036   25.113    0.000    1.627    0.854
##     Moraloutrag__6    0.973    0.036   26.722    0.000    1.748    0.889
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   EmpAnger ~~                                                           
##     MoralOutrage      1.629    0.134   12.152    0.000    0.692    0.692
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EmpthtcAngr__1    0.542    0.073    7.418    0.000    0.542    0.240
##    .EmpthtcAngr__2    0.539    0.097    5.545    0.000    0.539    0.245
##    .EmpthtcAngr__3    0.371    0.055    6.765    0.000    0.371    0.171
##    .EmpthtcAngr__4    0.746    0.111    6.748    0.000    0.746    0.296
##    .EmpthtcAngr__5    0.395    0.054    7.349    0.000    0.395    0.174
##    .EmpthtcAngr__6    0.398    0.080    4.980    0.000    0.398    0.165
##    .Moraloutrag__2    1.067    0.159    6.707    0.000    1.067    0.248
##    .Moraloutrag__3    0.481    0.062    7.757    0.000    0.481    0.118
##    .Moraloutrag__5    0.980    0.103    9.501    0.000    0.980    0.270
##    .Moraloutrag__6    0.814    0.117    6.980    0.000    0.814    0.210
##     EmpAnger          1.716    0.157   10.899    0.000    1.000    1.000
##     MoralOutrage      3.229    0.220   14.669    0.000    1.000    1.000
## 
## R-Square:
##                    Estimate
##     EmpthtcAngr__1    0.760
##     EmpthtcAngr__2    0.755
##     EmpthtcAngr__3    0.829
##     EmpthtcAngr__4    0.704
##     EmpthtcAngr__5    0.826
##     EmpthtcAngr__6    0.835
##     Moraloutrag__2    0.752
##     Moraloutrag__3    0.882
##     Moraloutrag__5    0.730
##     Moraloutrag__6    0.790
stdlv <- ' EmpAnger =~ EmpatheticAnger__1 + EmpatheticAnger__2 + EmpatheticAnger__3 + 
    EmpatheticAnger__4 + EmpatheticAnger__5 + EmpatheticAnger__6
  MoralOutrage =~ Moraloutrage__2 + Moraloutrage__3 +  Moraloutrage__5 + Moraloutrage__6'  
stdlv_fit <- cfa(data = Mydata, stdlv, std.lv=T, estimator="MLR")
summary(stdlv_fit,std=T,fit.measures=T)
## lavaan 0.6-19 ended normally after 22 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        21
## 
##   Number of observations                           482
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                90.142      50.157
##   Degrees of freedom                                34          34
##   P-value (Chi-square)                           0.000       0.037
##   Scaling correction factor                                  1.797
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                              5032.939    2344.732
##   Degrees of freedom                                45          45
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  2.146
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.989       0.993
##   Tucker-Lewis Index (TLI)                       0.985       0.991
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.994
##   Robust Tucker-Lewis Index (TLI)                            0.992
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -6899.620   -6899.620
##   Scaling correction factor                                  2.123
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)             NA          NA
##   Scaling correction factor                                  1.922
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                               13841.240   13841.240
##   Bayesian (BIC)                             13928.977   13928.977
##   Sample-size adjusted Bayesian (SABIC)      13862.324   13862.324
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.059       0.031
##   90 Percent confidence interval - lower         0.044       0.016
##   90 Percent confidence interval - upper         0.073       0.045
##   P-value H_0: RMSEA <= 0.050                    0.159       0.992
##   P-value H_0: RMSEA >= 0.080                    0.008       0.000
##                                                                   
##   Robust RMSEA                                               0.042
##   90 Percent confidence interval - lower                     0.011
##   90 Percent confidence interval - upper                     0.066
##   P-value H_0: Robust RMSEA <= 0.050                         0.683
##   P-value H_0: Robust RMSEA >= 0.080                         0.003
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.019       0.019
## 
## 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
##   EmpAnger =~                                                           
##     EmpthtcAngr__1    1.310    0.060   21.798    0.000    1.310    0.872
##     EmpthtcAngr__2    1.288    0.063   20.552    0.000    1.288    0.869
##     EmpthtcAngr__3    1.342    0.064   21.008    0.000    1.342    0.911
##     EmpthtcAngr__4    1.333    0.064   20.961    0.000    1.333    0.839
##     EmpthtcAngr__5    1.367    0.063   21.716    0.000    1.367    0.909
##     EmpthtcAngr__6    1.421    0.060   23.714    0.000    1.421    0.914
##   MoralOutrage =~                                                       
##     Moraloutrag__2    1.797    0.061   29.338    0.000    1.797    0.867
##     Moraloutrag__3    1.893    0.046   40.894    0.000    1.893    0.939
##     Moraloutrag__5    1.627    0.058   28.065    0.000    1.627    0.854
##     Moraloutrag__6    1.748    0.055   31.606    0.000    1.748    0.889
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##   EmpAnger ~~                                                           
##     MoralOutrage      0.692    0.025   27.238    0.000    0.692    0.692
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EmpthtcAngr__1    0.542    0.073    7.418    0.000    0.542    0.240
##    .EmpthtcAngr__2    0.539    0.097    5.545    0.000    0.539    0.245
##    .EmpthtcAngr__3    0.371    0.055    6.765    0.000    0.371    0.171
##    .EmpthtcAngr__4    0.746    0.111    6.748    0.000    0.746    0.296
##    .EmpthtcAngr__5    0.395    0.054    7.349    0.000    0.395    0.174
##    .EmpthtcAngr__6    0.398    0.080    4.980    0.000    0.398    0.165
##    .Moraloutrag__2    1.067    0.159    6.707    0.000    1.067    0.248
##    .Moraloutrag__3    0.481    0.062    7.757    0.000    0.481    0.118
##    .Moraloutrag__5    0.980    0.103    9.501    0.000    0.980    0.270
##    .Moraloutrag__6    0.814    0.117    6.980    0.000    0.814    0.210
##     EmpAnger          1.000                               1.000    1.000
##     MoralOutrage      1.000                               1.000    1.000

Inspecting residuals

lavInspect(stdlv_fit,what="implied")
## $cov
##                    EmA__1 EmA__2 EmA__3 EmA__4 EmA__5 EmA__6 Mrl__2 Mrl__3
## EmpatheticAnger__1  2.258                                                 
## EmpatheticAnger__2  1.688  2.199                                          
## EmpatheticAnger__3  1.758  1.729  2.172                                   
## EmpatheticAnger__4  1.746  1.718  1.789  2.524                            
## EmpatheticAnger__5  1.791  1.762  1.836  1.823  2.265                     
## EmpatheticAnger__6  1.861  1.831  1.907  1.894  1.943  2.416              
## Moraloutrage__2     1.629  1.602  1.669  1.658  1.700  1.766  4.295       
## Moraloutrage__3     1.716  1.688  1.758  1.746  1.791  1.861  3.402  4.065
## Moraloutrage__5     1.475  1.451  1.511  1.501  1.539  1.599  2.923  3.080
## Moraloutrage__6     1.584  1.558  1.623  1.612  1.654  1.718  3.141  3.309
##                    Mrl__5 Mrl__6
## EmpatheticAnger__1              
## EmpatheticAnger__2              
## EmpatheticAnger__3              
## EmpatheticAnger__4              
## EmpatheticAnger__5              
## EmpatheticAnger__6              
## Moraloutrage__2                 
## Moraloutrage__3                 
## Moraloutrage__5     3.627       
## Moraloutrage__6     2.844  3.869
lavInspect(stdlv_fit,what="sampstat")
## $cov
##                    EmA__1 EmA__2 EmA__3 EmA__4 EmA__5 EmA__6 Mrl__2 Mrl__3
## EmpatheticAnger__1  2.258                                                 
## EmpatheticAnger__2  1.760  2.199                                          
## EmpatheticAnger__3  1.746  1.686  2.172                                   
## EmpatheticAnger__4  1.711  1.711  1.818  2.524                            
## EmpatheticAnger__5  1.745  1.739  1.862  1.833  2.265                     
## EmpatheticAnger__6  1.875  1.851  1.896  1.879  1.958  2.416              
## Moraloutrage__2     1.629  1.587  1.564  1.691  1.614  1.614  4.295       
## Moraloutrage__3     1.849  1.758  1.890  1.836  1.845  1.803  3.451  4.065
## Moraloutrage__5     1.460  1.434  1.547  1.446  1.523  1.461  2.885  3.036
## Moraloutrage__6     1.624  1.465  1.639  1.580  1.626  1.607  3.109  3.277
##                    Mrl__5 Mrl__6
## EmpatheticAnger__1              
## EmpatheticAnger__2              
## EmpatheticAnger__3              
## EmpatheticAnger__4              
## EmpatheticAnger__5              
## EmpatheticAnger__6              
## Moraloutrage__2                 
## Moraloutrage__3                 
## Moraloutrage__5     3.627       
## Moraloutrage__6     2.970  3.869
#Residual = observed - implied

res <- residuals(stdlv_fit,type="raw")
res
## $type
## [1] "raw"
## 
## $cov
##                    EmA__1 EmA__2 EmA__3 EmA__4 EmA__5 EmA__6 Mrl__2 Mrl__3
## EmpatheticAnger__1  0.000                                                 
## EmpatheticAnger__2  0.072  0.000                                          
## EmpatheticAnger__3 -0.012 -0.043  0.000                                   
## EmpatheticAnger__4 -0.035 -0.007  0.028  0.000                            
## EmpatheticAnger__5 -0.046 -0.023  0.027  0.010  0.000                     
## EmpatheticAnger__6  0.015  0.020 -0.011 -0.014  0.015  0.000              
## Moraloutrage__2     0.001 -0.015 -0.105  0.034 -0.087 -0.152  0.000       
## Moraloutrage__3     0.133  0.071  0.132  0.090  0.054 -0.058  0.049  0.000
## Moraloutrage__5    -0.015 -0.016  0.036 -0.055 -0.017 -0.138 -0.039 -0.044
## Moraloutrage__6     0.040 -0.093  0.015 -0.032 -0.028 -0.111 -0.031 -0.032
##                    Mrl__5 Mrl__6
## EmpatheticAnger__1              
## EmpatheticAnger__2              
## EmpatheticAnger__3              
## EmpatheticAnger__4              
## EmpatheticAnger__5              
## EmpatheticAnger__6              
## Moraloutrage__2                 
## Moraloutrage__3                 
## Moraloutrage__5     0.000       
## Moraloutrage__6     0.126  0.000
res_cov <- residuals(stdlv_fit,type="cor.bentler")$cov
res_cov #note that the residuals are already standardized because we standardized the factor in estimation
##                    EmA__1 EmA__2 EmA__3 EmA__4 EmA__5 EmA__6 Mrl__2 Mrl__3
## EmpatheticAnger__1  0.000                                                 
## EmpatheticAnger__2  0.032  0.000                                          
## EmpatheticAnger__3 -0.006 -0.020  0.000                                   
## EmpatheticAnger__4 -0.015 -0.003  0.012  0.000                            
## EmpatheticAnger__5 -0.020 -0.010  0.012  0.004  0.000                     
## EmpatheticAnger__6  0.006  0.009 -0.005 -0.006  0.006  0.000              
## Moraloutrage__2     0.000 -0.005 -0.034  0.010 -0.028 -0.047  0.000       
## Moraloutrage__3     0.044  0.024  0.044  0.028  0.018 -0.019  0.012  0.000
## Moraloutrage__5    -0.005 -0.006  0.013 -0.018 -0.006 -0.047 -0.010 -0.012
## Moraloutrage__6     0.014 -0.032  0.005 -0.010 -0.009 -0.036 -0.008 -0.008
##                    Mrl__5 Mrl__6
## EmpatheticAnger__1              
## EmpatheticAnger__2              
## EmpatheticAnger__3              
## EmpatheticAnger__4              
## EmpatheticAnger__5              
## EmpatheticAnger__6              
## Moraloutrage__2                 
## Moraloutrage__3                 
## Moraloutrage__5     0.000       
## Moraloutrage__6     0.034  0.000
print(modindices(stdlv_fit,standardized=T))
##                   lhs op                rhs     mi    epc sepc.lv sepc.all
## 24           EmpAnger =~    Moraloutrage__2  2.812 -0.131  -0.131   -0.063
## 25           EmpAnger =~    Moraloutrage__3  8.331  0.190   0.190    0.094
## 26           EmpAnger =~    Moraloutrage__5  0.737 -0.063  -0.063   -0.033
## 27           EmpAnger =~    Moraloutrage__6  1.069 -0.073  -0.073   -0.037
## 28       MoralOutrage =~ EmpatheticAnger__1  2.225  0.081   0.081    0.054
## 29       MoralOutrage =~ EmpatheticAnger__2  0.004  0.003   0.003    0.002
## 30       MoralOutrage =~ EmpatheticAnger__3  1.955  0.066   0.066    0.044
## 31       MoralOutrage =~ EmpatheticAnger__4  0.282  0.033   0.033    0.021
## 32       MoralOutrage =~ EmpatheticAnger__5  0.005 -0.003  -0.003   -0.002
## 33       MoralOutrage =~ EmpatheticAnger__6  9.006 -0.147  -0.147   -0.094
## 34 EmpatheticAnger__1 ~~ EmpatheticAnger__2 12.329  0.103   0.103    0.191
## 35 EmpatheticAnger__1 ~~ EmpatheticAnger__3  0.616 -0.021  -0.021   -0.046
## 36 EmpatheticAnger__1 ~~ EmpatheticAnger__4  1.980 -0.047  -0.047   -0.075
## 37 EmpatheticAnger__1 ~~ EmpatheticAnger__5  7.728 -0.075  -0.075   -0.162
## 38 EmpatheticAnger__1 ~~ EmpatheticAnger__6  0.799  0.025   0.025    0.053
## 39 EmpatheticAnger__1 ~~    Moraloutrage__2  0.057  0.010   0.010    0.013
## 40 EmpatheticAnger__1 ~~    Moraloutrage__3  0.970  0.032   0.032    0.062
## 41 EmpatheticAnger__1 ~~    Moraloutrage__5  1.413 -0.046  -0.046   -0.063
## 42 EmpatheticAnger__1 ~~    Moraloutrage__6  0.517  0.026   0.026    0.039
## 43 EmpatheticAnger__2 ~~ EmpatheticAnger__3  7.341 -0.071  -0.071   -0.158
## 44 EmpatheticAnger__2 ~~ EmpatheticAnger__4  0.078 -0.009  -0.009   -0.015
## 45 EmpatheticAnger__2 ~~ EmpatheticAnger__5  1.960 -0.038  -0.038   -0.081
## 46 EmpatheticAnger__2 ~~ EmpatheticAnger__6  1.514  0.034   0.034    0.073
## 47 EmpatheticAnger__2 ~~    Moraloutrage__2  2.227  0.060   0.060    0.079
## 48 EmpatheticAnger__2 ~~    Moraloutrage__3  0.473  0.022   0.022    0.043
## 49 EmpatheticAnger__2 ~~    Moraloutrage__5  0.172  0.016   0.016    0.022
## 50 EmpatheticAnger__2 ~~    Moraloutrage__6  6.404 -0.091  -0.091   -0.138
## 51 EmpatheticAnger__3 ~~ EmpatheticAnger__4  2.135  0.043   0.043    0.083
## 52 EmpatheticAnger__3 ~~ EmpatheticAnger__5  4.631  0.052   0.052    0.137
## 53 EmpatheticAnger__3 ~~ EmpatheticAnger__6  0.868 -0.023  -0.023   -0.060
## 54 EmpatheticAnger__3 ~~    Moraloutrage__2 12.370 -0.123  -0.123   -0.195
## 55 EmpatheticAnger__3 ~~    Moraloutrage__3  4.822  0.061   0.061    0.144
## 56 EmpatheticAnger__3 ~~    Moraloutrage__5  1.729  0.043   0.043    0.072
## 57 EmpatheticAnger__3 ~~    Moraloutrage__6  0.175  0.013   0.013    0.024
## 58 EmpatheticAnger__4 ~~ EmpatheticAnger__5  0.226  0.015   0.015    0.027
## 59 EmpatheticAnger__4 ~~ EmpatheticAnger__6  0.530 -0.023  -0.023   -0.041
## 60 EmpatheticAnger__4 ~~    Moraloutrage__2  4.300  0.097   0.097    0.108
## 61 EmpatheticAnger__4 ~~    Moraloutrage__3  0.094  0.011   0.011    0.019
## 62 EmpatheticAnger__4 ~~    Moraloutrage__5  1.714 -0.058  -0.058   -0.068
## 63 EmpatheticAnger__4 ~~    Moraloutrage__6  0.548 -0.031  -0.031   -0.040
## 64 EmpatheticAnger__5 ~~ EmpatheticAnger__6  1.354  0.030   0.030    0.075
## 65 EmpatheticAnger__5 ~~    Moraloutrage__2  0.645 -0.029  -0.029   -0.044
## 66 EmpatheticAnger__5 ~~    Moraloutrage__3  0.075 -0.008  -0.008   -0.018
## 67 EmpatheticAnger__5 ~~    Moraloutrage__5  0.547  0.025   0.025    0.040
## 68 EmpatheticAnger__5 ~~    Moraloutrage__6  0.140  0.012   0.012    0.021
## 69 EmpatheticAnger__6 ~~    Moraloutrage__2  0.068  0.010   0.010    0.015
## 70 EmpatheticAnger__6 ~~    Moraloutrage__3  3.203 -0.052  -0.052   -0.118
## 71 EmpatheticAnger__6 ~~    Moraloutrage__5  0.912 -0.033  -0.033   -0.053
## 72 EmpatheticAnger__6 ~~    Moraloutrage__6  0.355  0.019   0.019    0.034
## 73    Moraloutrage__2 ~~    Moraloutrage__3  8.980  0.194   0.194    0.270
## 74    Moraloutrage__2 ~~    Moraloutrage__5  1.193 -0.067  -0.067   -0.066
## 75    Moraloutrage__2 ~~    Moraloutrage__6  1.157 -0.067  -0.067   -0.071
## 76    Moraloutrage__3 ~~    Moraloutrage__5  7.109 -0.157  -0.157   -0.228
## 77    Moraloutrage__3 ~~    Moraloutrage__6  5.965 -0.154  -0.154   -0.246
## 78    Moraloutrage__5 ~~    Moraloutrage__6 19.024  0.250   0.250    0.279
##    sepc.nox
## 24   -0.063
## 25    0.094
## 26   -0.033
## 27   -0.037
## 28    0.054
## 29    0.002
## 30    0.044
## 31    0.021
## 32   -0.002
## 33   -0.094
## 34    0.191
## 35   -0.046
## 36   -0.075
## 37   -0.162
## 38    0.053
## 39    0.013
## 40    0.062
## 41   -0.063
## 42    0.039
## 43   -0.158
## 44   -0.015
## 45   -0.081
## 46    0.073
## 47    0.079
## 48    0.043
## 49    0.022
## 50   -0.138
## 51    0.083
## 52    0.137
## 53   -0.060
## 54   -0.195
## 55    0.144
## 56    0.072
## 57    0.024
## 58    0.027
## 59   -0.041
## 60    0.108
## 61    0.019
## 62   -0.068
## 63   -0.040
## 64    0.075
## 65   -0.044
## 66   -0.018
## 67    0.040
## 68    0.021
## 69    0.015
## 70   -0.118
## 71   -0.053
## 72    0.034
## 73    0.270
## 74   -0.066
## 75   -0.071
## 76   -0.228
## 77   -0.246
## 78    0.279

Alternative models

CFA_1f <- ' EmpAnger =~ EmpatheticAnger__1 + EmpatheticAnger__2 + EmpatheticAnger__3 + 
    EmpatheticAnger__4 + EmpatheticAnger__5 + EmpatheticAnger__6 + Moraloutrage__2 + Moraloutrage__3 +  Moraloutrage__5 + Moraloutrage__6'  
cfa1f_fit <- cfa(data = Mydata,CFA_1f, estimator="MLR")
summary(cfa1f_fit,std=T,fit.measures=T)
## lavaan 0.6-19 ended normally after 25 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        20
## 
##   Number of observations                           482
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                              1092.748     556.066
##   Degrees of freedom                                35          35
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.965
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                              5032.939    2344.732
##   Degrees of freedom                                45          45
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  2.146
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.788       0.773
##   Tucker-Lewis Index (TLI)                       0.727       0.709
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.793
##   Robust Tucker-Lewis Index (TLI)                            0.733
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -7400.923   -7400.923
##   Scaling correction factor                                  1.845
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)             NA          NA
##   Scaling correction factor                                  1.922
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                               14841.845   14841.845
##   Bayesian (BIC)                             14925.404   14925.404
##   Sample-size adjusted Bayesian (SABIC)      14861.926   14861.926
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.250       0.176
##   90 Percent confidence interval - lower         0.238       0.167
##   90 Percent confidence interval - upper         0.263       0.185
##   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.246
##   90 Percent confidence interval - lower                     0.229
##   90 Percent confidence interval - upper                     0.265
##   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.117       0.117
## 
## 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
##   EmpAnger =~                                                           
##     EmpthtcAngr__1    1.000                               1.306    0.869
##     EmpthtcAngr__2    0.980    0.030   32.268    0.000    1.279    0.862
##     EmpthtcAngr__3    1.023    0.039   25.936    0.000    1.335    0.906
##     EmpthtcAngr__4    1.016    0.043   23.828    0.000    1.326    0.835
##     EmpthtcAngr__5    1.038    0.035   29.677    0.000    1.355    0.900
##     EmpthtcAngr__6    1.070    0.033   32.919    0.000    1.397    0.899
##     Moraloutrag__2    1.020    0.067   15.320    0.000    1.332    0.643
##     Moraloutrag__3    1.133    0.061   18.582    0.000    1.480    0.734
##     Moraloutrag__5    0.939    0.064   14.677    0.000    1.226    0.644
##     Moraloutrag__6    1.006    0.063   16.049    0.000    1.314    0.668
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
##    .EmpthtcAngr__1    0.553    0.075    7.366    0.000    0.553    0.245
##    .EmpthtcAngr__2    0.563    0.099    5.682    0.000    0.563    0.256
##    .EmpthtcAngr__3    0.390    0.055    7.058    0.000    0.390    0.180
##    .EmpthtcAngr__4    0.765    0.112    6.805    0.000    0.765    0.303
##    .EmpthtcAngr__5    0.430    0.057    7.599    0.000    0.430    0.190
##    .EmpthtcAngr__6    0.465    0.086    5.418    0.000    0.465    0.192
##    .Moraloutrag__2    2.521    0.172   14.690    0.000    2.521    0.587
##    .Moraloutrag__3    1.876    0.139   13.460    0.000    1.876    0.462
##    .Moraloutrag__5    2.122    0.146   14.491    0.000    2.122    0.585
##    .Moraloutrag__6    2.143    0.150   14.294    0.000    2.143    0.554
##     EmpAnger          1.704    0.159   10.736    0.000    1.000    1.000

How does the fit of the one-factor model compare to the two-factor model?

factorcomp <- compareFit(cfa_fit,cfa1f_fit)
summary(factorcomp,fit.measures=c("chisq", "df", "pvalue", "cfi", "rmsea","srmr","aic","bic"))
## ################### Nested Model Comparison #########################
## 
## Scaled Chi-Squared Difference Test (method = "satorra.bentler.2001")
## 
## lavaan->unknown():  
##    lavaan NOTE: The "Chisq" column contains standard test statistics, not the 
##    robust test that should be reported per model. A robust difference test is 
##    a function of two standard (not robust) statistics.
##           Df   AIC   BIC    Chisq Chisq diff Df diff Pr(>Chisq)    
## cfa_fit   34 13841 13929   90.142                                  
## cfa1f_fit 35 14842 14925 1092.748     130.63       1  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## ####################### Model Fit Indices ###########################
##               chisq df pvalue   cfi rmsea  srmr        aic        bic
## cfa_fit     90.142† 34   .000 .989† .059† .019† 13841.240† 13928.977†
## cfa1f_fit 1092.748  35   .000 .788  .250  .117  14841.845  14925.404 
## 
## ################## Differences in Fit Indices #######################
##                     df    cfi rmsea  srmr      aic     bic
## cfa1f_fit - cfa_fit  1 -0.201 0.192 0.098 1000.605 996.428