Load Data for Step 1

ConstructValidity_1 <- read_sav("EFA Student Sample.sav")

Exploratory Factor Analysis

# Kaiser-Meyer-Olkin (KMO) Measure of Sampling Adequacy
KMO(ConstructValidity_1)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = ConstructValidity_1)
## Overall MSA =  0.9
## MSA for each item = 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##             0.91             0.83             0.90             0.90 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##             0.91             0.94             0.87             0.86 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##             0.91             0.91             0.92             0.89 
## DSE_Management_5 
##             0.91
# Bartlett’s Test for Sphericity
cat("\n Bartlett’s Test for Sphericity:\n")
## 
##  Bartlett’s Test for Sphericity:
cortest.bartlett(ConstructValidity_1)
## R was not square, finding R from data
## $chisq
## [1] 1522.607
## 
## $p.value
## [1] 1.489412e-266
## 
## $df
## [1] 78
# Number of Factors to Extract
cat("Number of Factors to Extract: \n")
## Number of Factors to Extract:
corMatrix <- cor(ConstructValidity_1, use = "pairwise.complete.obs") 
factors_to_extract <- nScree(x=corMatrix,model="factors")
factors_to_extract
##   noc naf nparallel nkaiser
## 1   3   1         3       3
# Calculate Eigenvalues for First Four Factors
cor_matrix <- cor(ConstructValidity_1, use = "pairwise.complete.obs")
eigen_results <- eigen(cor_matrix)
cat("First Four Eigenvalues:", eigen_results$values[1:4], "\n")
## First Four Eigenvalues: 7.103689 1.461159 1.220784 0.6180314

Table A1: Factor Loadings from EFA

# Conduct EFA
fa_results <- fa(ConstructValidity_1, nfactors = 3, rotate = "promax", fm = "pa")  # PAF method  
## Loading required namespace: GPArotation
cat("\n--- Exploratory Factor Analysis (EFA) Results ---\n")
## 
## --- Exploratory Factor Analysis (EFA) Results ---
cat("Rotation Method:", fa_results$rotation, "\n")
## Rotation Method: promax
cat("Extraction Method:", fa_results$fm, "\n")
## Extraction Method: pa
cat("Number of Factors:", fa_results$factors, "\n\n")
## Number of Factors: 3
cat("Eigenvalues:\n")
## Eigenvalues:
print(round(fa_results$e.values[1:fa_results$factors], 2))
## [1] 7.10 1.46 1.22
cat("\n")
cat("Factor Loadings (Pattern Matrix):\n")
## Factor Loadings (Pattern Matrix):
print(round(fa_results$loadings[], 2))
##                    PA1   PA2   PA3
## DSE_Aware_1       0.18 -0.03  0.76
## DSE_Aware_2       0.05 -0.08  0.91
## DSE_Aware_3      -0.04  0.13  0.79
## DSE_Regulate_1   -0.07  0.78  0.16
## DSE_Regulate_2   -0.09  0.73  0.17
## DSE_Regulate_3   -0.02  0.66  0.20
## DSE_Regulate_4    0.16  0.80 -0.21
## DSE_Regulate_5    0.06  0.88 -0.14
## DSE_Management_1  0.70  0.19 -0.10
## DSE_Management_2  0.64  0.14  0.02
## DSE_Management_3  0.77  0.02  0.11
## DSE_Management_4  0.87 -0.11  0.06
## DSE_Management_5  0.85 -0.07  0.07
cat("\n")
cat("Variance Explained by Each Factor:\n")
## Variance Explained by Each Factor:
print(round(fa_results$Vaccounted, 3))
##                         PA1   PA2   PA3
## SS loadings           3.260 3.207 2.402
## Proportion Var        0.251 0.247 0.185
## Cumulative Var        0.251 0.498 0.682
## Proportion Explained  0.368 0.362 0.271
## Cumulative Proportion 0.368 0.729 1.000
cat("\n")
cat("Cumulative Variance Explained (%):\n")
## Cumulative Variance Explained (%):
print(round(fa_results$Vaccounted["Cumulative Var", ] * 100, 2))
##   PA1   PA2   PA3 
## 25.08 49.75 68.23
cat("\n")
cat("Factor Correlations:\n")
## Factor Correlations:
print(round(fa_results$r.scores, 2))
##      [,1] [,2] [,3]
## [1,] 1.00 0.68 0.66
## [2,] 0.68 1.00 0.62
## [3,] 0.66 0.62 1.00
cat("\n")

Load Data for Steps 2-4

ConstructValidity_2 <- read_sav("Construct Validity (Efficacy Scales).sav")

# Bias-Awareness Efficacy
ConstructValidity_2$AWARENESS <- rowMeans(ConstructValidity_2[, c("DSE_Aware_1", "DSE_Aware_2", "DSE_Aware_3")], na.rm = TRUE)

# Self-Regulation Efficacy
ConstructValidity_2$REGULATION <- rowMeans(ConstructValidity_2[, c("DSE_Regulate_1", "DSE_Regulate_2", "DSE_Regulate_3", "DSE_Regulate_4", "DSE_Regulate_5")], na.rm = TRUE)

# Intergroup-Management Efficacy
ConstructValidity_2$MANAGEMENT <- rowMeans(ConstructValidity_2[, c("DSE_Management_1", "DSE_Management_2", "DSE_Management_3", "DSE_Management_4", "DSE_Management_5")], na.rm = TRUE)

Confirmatory Factor Analysis

Three-Factor Model (Efficacy Scales)

ThreeFactor_model <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

ThreeFactor_fit <- cfa(ThreeFactor_model, ConstructValidity_2, estimator = "ML")

# plot CFA results
semPaths(ThreeFactor_fit, "std", weighted = FALSE, nCharNodes = 7, 
         shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)

## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 166.869  62.000   0.000   0.933   0.052
## Standardized Factor Loadings:
## 
##                  Awrnss Regltn Mngmnt
## DSE_Aware_1       0.794  0.000  0.000
## DSE_Aware_2       0.719  0.000  0.000
## DSE_Aware_3       0.815  0.000  0.000
## DSE_Regulate_1    0.000  0.777  0.000
## DSE_Regulate_2    0.000  0.795  0.000
## DSE_Regulate_3    0.000  0.750  0.000
## DSE_Regulate_4    0.000  0.751  0.000
## DSE_Regulate_5    0.000  0.774  0.000
## DSE_Management_1  0.000  0.000  0.742
## DSE_Management_2  0.000  0.000  0.783
## DSE_Management_3  0.000  0.000  0.837
## DSE_Management_4  0.000  0.000  0.862
## DSE_Management_5  0.000  0.000  0.869
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.631            0.516            0.664            0.604 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.632            0.563            0.564            0.599 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.550            0.613            0.701            0.743 
## DSE_Management_5 
##            0.754

One-Factor Model (Efficacy Scales)

OneFactor_model <- '
  # One Factor: Bias-Awareness, Self-Regulation, & Intergroup-Management Efficacy
  OneFactor =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 + 
               DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
               DSE_Regulate_4 + DSE_Regulate_5 +
               DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

Alt_Model1_1factor_fit <- cfa(OneFactor_model, ConstructValidity_2, estimator = "ML")
## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 463.387  65.000   0.000   0.746   0.099
## Standardized Factor Loadings:
## 
##                  OnFctr
## DSE_Aware_1       0.635
## DSE_Aware_2       0.575
## DSE_Aware_3       0.654
## DSE_Regulate_1    0.644
## DSE_Regulate_2    0.655
## DSE_Regulate_3    0.609
## DSE_Regulate_4    0.622
## DSE_Regulate_5    0.640
## DSE_Management_1  0.757
## DSE_Management_2  0.799
## DSE_Management_3  0.787
## DSE_Management_4  0.776
## DSE_Management_5  0.777
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.404            0.331            0.428            0.415 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.429            0.371            0.386            0.409 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.573            0.638            0.620            0.603 
## DSE_Management_5 
##            0.603
## 
## 
##  Three-Factor vs One-Factor Model:
## 
## Chi-Squared Difference Test
## 
##                        Df    AIC    BIC  Chisq Chisq diff   RMSEA Df diff
## ThreeFactor_fit        62 5502.5 5597.3 166.87                           
## Alt_Model1_1factor_fit 65 5793.0 5878.0 463.39     296.52 0.71016       3
##                        Pr(>Chisq)    
## ThreeFactor_fit                      
## Alt_Model1_1factor_fit  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Alternative 2-Factor Models

Alt_Model2_2factor <- '
Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

Regulation_Management =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +       
  DSE_Regulate_4 + DSE_Regulate_5 + DSE_Management_1 + DSE_Management_2 +    
  DSE_Management_3 + DSE_Management_4 + DSE_Management_5 
'
### Fit Indices for Alternative 2-Factor Model #1
Alt_Model2_2factor_fit <- cfa(Alt_Model2_2factor, ConstructValidity_2)

#####
Alt_Model3_2factor <- '
Awareness_Regulation =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 + DSE_Regulate_1 + 
  DSE_Regulate_2 + DSE_Regulate_3 + DSE_Regulate_4 + DSE_Regulate_5

Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +                 
  DSE_Management_4 + DSE_Management_5
'
### Fit Indices for Alternative 2-Factor Model #2
Alt_Model3_2factor_fit <- cfa(Alt_Model3_2factor, ConstructValidity_2)

#####
Alt_Model4_2factor <- '
Awareness_Management =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 + DSE_Management_1 + 
  DSE_Management_2 + DSE_Management_3 + DSE_Management_4 + DSE_Management_5

Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +           
  DSE_Regulate_4 + DSE_Regulate_5
'
### Fit Indices for Alternative 2-Factor Model #3
Alt_Model4_2factor_fit <- cfa(Alt_Model4_2factor, ConstructValidity_2)

Table A2 (Model Comparison): Chi-Square Test of Difference

Model_3vs1 <- anova(ThreeFactor_fit, Alt_Model1_1factor_fit)
Model_3vs2.1 <- anova(ThreeFactor_fit, Alt_Model2_2factor_fit)
Model_3vs2.2 <- anova(ThreeFactor_fit, Alt_Model3_2factor_fit)
Model_3vs2.3 <- anova(ThreeFactor_fit, Alt_Model4_2factor_fit)


Hypothesized_Model <- Model_3vs1[1, ]  # three-factor model
Alt_Model1_1f <- Model_3vs1[2, ] # one-factor model
Alt_Model2_2f <- Model_3vs2.1[2, ] # self-regulatory and management efficacy = 1 factor
Alt_Model3_2f <- Model_3vs2.2[2, ] # awareness and self-regulatory efficacy = 1 factor
Alt_Model4_2f <- Model_3vs2.3[2, ] # awareness and management efficacy = 1 factor

model_comparisons <- rbind(Hypothesized_Model,Alt_Model1_1f,Alt_Model2_2f,Alt_Model3_2f,Alt_Model4_2f)

# Print the data frame
print(model_comparisons)
## 
## Chi-Squared Difference Test
## 
##                        Df    AIC    BIC  Chisq Chisq diff   RMSEA Df diff
## ThreeFactor_fit        62 5502.5 5597.3 166.87                           
## Alt_Model1_1factor_fit 65 5793.0 5878.0 463.39    296.518 0.71016       3
## Alt_Model2_2factor_fit 64 5718.1 5806.3 386.42    219.547 0.74879       2
## Alt_Model3_2factor_fit 64 5626.7 5714.9 295.02    128.155 0.57021       2
## Alt_Model4_2factor_fit 64 5593.5 5681.7 261.82     94.955 0.48946       2
##                        Pr(>Chisq)    
## ThreeFactor_fit                      
## Alt_Model1_1factor_fit  < 2.2e-16 ***
## Alt_Model2_2factor_fit  < 2.2e-16 ***
## Alt_Model3_2factor_fit  < 2.2e-16 ***
## Alt_Model4_2factor_fit  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##                         cfi       srmr
## ThreeFactor       0.9330665 0.05173359
## OneFactor         0.7457266 0.09897023
## Alt_2factor_SR+M  0.7942153 0.08963291
## Alt_2factor_Aw+SR 0.8525469 0.08767441
## Alt_2factor_Aw+M  0.8737370 0.07008811

Fornell-Larcker Test

# Average Variance Extracted
cat("Average Variance Extracted (AVE): \n")
## Average Variance Extracted (AVE):
AVE <- AVE(ThreeFactor_fit) 
AVE
##  Awareness Regulation Management 
##      0.588      0.593      0.677
# Square Root of AVE
cat("\n Square Root of AVE:\n")
## 
##  Square Root of AVE:
AVEsqrt <- sqrt(AVE)
AVEsqrt["Awareness"]
## Awareness 
##  0.766524
AVEsqrt["Regulation"]
## Regulation 
##  0.7698694
AVEsqrt["Management"]
## Management 
##  0.8229723
# Maximum Squared Correlation
apa.cor.table(ConstructValidity_2[,c("AWARENESS", "REGULATION", "MANAGEMENT")])
## 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable      M    SD   1          2         
##   1. AWARENESS  3.99 0.78                      
##                                                
##   2. REGULATION 4.20 0.69 .51**                
##                           [.40, .61]           
##                                                
##   3. MANAGEMENT 3.63 0.97 .62**      .59**     
##                           [.52, .70] [.49, .68]
##                                                
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 
max_sq_cor <- cor(ConstructValidity_2$AWARENESS,ConstructValidity_2$MANAGEMENT)^2
cat("Max Squared Correlation:", max_sq_cor, "\n")
## Max Squared Correlation: 0.3796969
## Fornell-Larcker Test
Awareness_vs_Regulation <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Regulation"] > max_sq_cor
Awareness_vs_Management <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Management"] > max_sq_cor
Regulation_vs_Management <- AVEsqrt["Regulation"] > max_sq_cor &&
                            AVEsqrt["Management"] > max_sq_cor

cat("Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE): \n")
## Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE):
cat("Awareness vs Regulation:", Awareness_vs_Regulation, "\n")
## Awareness vs Regulation: TRUE
cat("Awareness vs Management:", Awareness_vs_Management, "\n")
## Awareness vs Management: TRUE
cat("Regulation vs Management:", Regulation_vs_Management, "\n")
## Regulation vs Management: TRUE

Heterotrait-monotrait ratio (HTMT) Analysis

# Compute and Print HTMT Values
HTMTresults <- htmt(ThreeFactor_model,ConstructValidity_2)
HTMTresults 
##            Awrnss Regltn Mngmnt
## Awareness   1.000              
## Regulation  0.603  1.000       
## Management  0.718  0.667  1.000

Correlation between Efficacy Beliefs and Pro-Diversity Attitudes

## Pro-Diversity Beliefs Scale
ConstructValidity_2$ProDiversity <- rowMeans(ConstructValidity_2[, c("ProDiversity_1", "ProDiversity_2", "ProDiversity_3", "ProDiversity_4")], na.rm = TRUE)

# Correlations
apa.cor.table(ConstructValidity_2[,c("AWARENESS", "REGULATION", "MANAGEMENT", "ProDiversity")])
## 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable        M    SD   1          2           3         
##   1. AWARENESS    3.99 0.78                                  
##                                                              
##   2. REGULATION   4.20 0.69 .51**                            
##                             [.40, .61]                       
##                                                              
##   3. MANAGEMENT   3.63 0.97 .62**      .59**                 
##                             [.52, .70] [.49, .68]            
##                                                              
##   4. ProDiversity 5.87 1.32 .34**      .14         .42**     
##                             [.21, .46] [-.00, .27] [.29, .53]
##                                                              
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 

Discriminant Validity: Efficacy Beliefs and Pro-Diversity Attitudes

FourFactor_model <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
                
  # Factor 4: Pro-Diversity Attitudes
  Pro_Diversity =~ ProDiversity_1 + ProDiversity_2 +
                  ProDiversity_3 + ProDiversity_4
'

FourFactor_fit <- cfa(FourFactor_model, ConstructValidity_2, estimator = "ML")
## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 271.344 113.000   0.000   0.938   0.055
## Standardized Factor Loadings:
## 
##                  Awrnss Regltn Mngmnt Pr_Dvr
## DSE_Aware_1       0.792  0.000  0.000  0.000
## DSE_Aware_2       0.714  0.000  0.000  0.000
## DSE_Aware_3       0.821  0.000  0.000  0.000
## DSE_Regulate_1    0.000  0.781  0.000  0.000
## DSE_Regulate_2    0.000  0.799  0.000  0.000
## DSE_Regulate_3    0.000  0.748  0.000  0.000
## DSE_Regulate_4    0.000  0.748  0.000  0.000
## DSE_Regulate_5    0.000  0.771  0.000  0.000
## DSE_Management_1  0.000  0.000  0.731  0.000
## DSE_Management_2  0.000  0.000  0.776  0.000
## DSE_Management_3  0.000  0.000  0.843  0.000
## DSE_Management_4  0.000  0.000  0.865  0.000
## DSE_Management_5  0.000  0.000  0.872  0.000
## ProDiversity_1    0.000  0.000  0.000  0.932
## ProDiversity_2    0.000  0.000  0.000  0.941
## ProDiversity_3    0.000  0.000  0.000  0.943
## ProDiversity_4    0.000  0.000  0.000  0.887
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.627            0.510            0.673            0.609 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.638            0.559            0.559            0.595 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.535            0.602            0.710            0.748 
## DSE_Management_5   ProDiversity_1   ProDiversity_2   ProDiversity_3 
##            0.760            0.868            0.885            0.890 
##   ProDiversity_4 
##            0.788

Fornell-Larcker Test

# Average Variance Extracted
cat("Average Variance Extracted (AVE): \n")
## Average Variance Extracted (AVE):
AVE <- AVE(FourFactor_fit) 
AVE
##     Awareness    Regulation    Management Pro_Diversity 
##         0.586         0.592         0.677         0.852
# Square Root of AVE
cat("\n Square Root of AVE:\n")
## 
##  Square Root of AVE:
AVEsqrt <- sqrt(AVE)
AVEsqrt["Awareness"]
## Awareness 
## 0.7657416
AVEsqrt["Regulation"]
## Regulation 
##   0.769726
AVEsqrt["Management"]
## Management 
##  0.8225269
AVEsqrt["Pro_Diversity"]
## Pro_Diversity 
##     0.9228545
# Maximum Squared Correlation
max_sq_cor <- cor(ConstructValidity_2$ProDiversity,ConstructValidity_2$MANAGEMENT)^2
cat("\n Max Squared Correlation:", max_sq_cor, "\n")
## 
##  Max Squared Correlation: 0.1745743
## Fornell-Larcker Test
Awareness_vs_ProDiversity <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Pro_Diversity"] > max_sq_cor
Regulation_vs_ProDiversity <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["Pro_Diversity"] > max_sq_cor
Management_vs_ProDiversity <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["Pro_Diversity"] > max_sq_cor

cat("Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE): \n")
## Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE):
cat("Awareness vs ProDiversity:", Awareness_vs_ProDiversity, "\n")
## Awareness vs ProDiversity: TRUE
cat("Regulation vs ProDiversity:", Regulation_vs_ProDiversity, "\n")
## Regulation vs ProDiversity: TRUE
cat("Management vs ProDiversity:", Management_vs_ProDiversity, "\n")
## Management vs ProDiversity: TRUE

Heterotrait-monotrait ratio (HTMT) Analysis

# Compute and Print HTMT Values
library(semTools)
HTMTresults <- semTools::htmt(FourFactor_model, ConstructValidity_2)
print(HTMTresults)
##               Awrnss Regltn Mngmnt Pr_Dvr
## Awareness      1.000                     
## Regulation     0.603  1.000              
## Management     0.718  0.667  1.000       
## Pro_Diversity  0.373  0.138  0.420  1.000

Alternative One-Factor Model (A1)

Note: Bias-Awareness Efficacy & Pro-Diversity Attitudes are combined into single factor

Alt_Model_1_Discriminant_Validity <- '
  # Factor 1: Bias-Awareness Efficacy & Pro-Diversity Attitudes
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               ProDiversity_1 + ProDiversity_2 +
               ProDiversity_3 + ProDiversity_4

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

### Fit Indices for Alternative One-Factor Model (A1)
Alt_Model_1_Discriminant_Validity_fit <- cfa(Alt_Model_1_Discriminant_Validity, ConstructValidity_2)

Alternative Two-Factor Model (A2)

Note: Self-Regulation Efficacy & Pro-Diversity Attitudes are combined into single factor

Alt_Model_2_Discriminant_Validity <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & Pro-Diversity Attitudes
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                ProDiversity_1 + ProDiversity_2 +
                ProDiversity_3 + ProDiversity_4

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

### Fit Indices for Alternative Two-Factor Model (A2)
Alt_Model_2_Discriminant_Validity_fit <- cfa(Alt_Model_2_Discriminant_Validity, ConstructValidity_2)

Alternative Two-Factor Model (A3)

Note: Intergroup-Management Efficacy & Pro-Diversity Attitudes are combined into single factor

Alt_Model_3_Discriminant_Validity <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy & Pro-Diversity Attitudes
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5 +
                ProDiversity_1 + ProDiversity_2 +
                ProDiversity_3 + ProDiversity_4
'

### Fit Indices for Alternative Two-Factor Model (A3)
Alt_Model_3_Discriminant_Validity_fit <- cfa(Alt_Model_3_Discriminant_Validity, ConstructValidity_2)

Table A3 (Model Comparison): Chi-Square Test of Difference

Discriminant_Model_4vs3.1 <- anova(FourFactor_fit, 
                                 Alt_Model_1_Discriminant_Validity_fit)

Discriminant_Model_4vs3.2 <- anova(FourFactor_fit, 
                                   Alt_Model_2_Discriminant_Validity_fit)

Discriminant_Model_4vs3.3 <- anova(FourFactor_fit, 
                                   Alt_Model_3_Discriminant_Validity_fit)

# extract values based on column indices
Hypothesized_Discriminant_Model <- Discriminant_Model_4vs3.1[1, ]  
Alt_Discriminant_Model1_1f <- Discriminant_Model_4vs3.1[2, ] 
Alt_Discriminant_Model2_2f <- Discriminant_Model_4vs3.2[2, ] 
Alt_Discriminant_Model3_2f <- Discriminant_Model_4vs3.3[2, ] 

discriminant_model_comparisons <- rbind(Hypothesized_Discriminant_Model,
                           Alt_Discriminant_Model1_1f,
                           Alt_Discriminant_Model2_2f,
                           Alt_Discriminant_Model3_2f
                           ) 

# Print the data frame
print(discriminant_model_comparisons)
## 
## Chi-Squared Difference Test
## 
##                                        Df    AIC    BIC   Chisq Chisq diff
## FourFactor_fit                        113 7289.9 7420.6  271.34           
## Alt_Model_1_Discriminant_Validity_fit 116 7545.8 7666.7  533.18     261.84
## Alt_Model_2_Discriminant_Validity_fit 116 8193.4 8314.3 1180.80     909.45
## Alt_Model_3_Discriminant_Validity_fit 116 8040.1 8161.0 1027.51     756.17
##                                         RMSEA Df diff Pr(>Chisq)    
## FourFactor_fit                                                      
## Alt_Model_1_Discriminant_Validity_fit 0.66689       3  < 2.2e-16 ***
## Alt_Model_2_Discriminant_Validity_fit 1.24799       3  < 2.2e-16 ***
## Alt_Model_3_Discriminant_Validity_fit 1.13759       3  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##                         cfi       srmr
## FourFactor        0.9381997 0.05544447
## Alt_3factor_Aw+PD 0.8371773 0.17204555
## Alt_3factor_SR+PD 0.5844190 0.17844416
## Alt_3factor_M+PD  0.6442459 0.13901229

Correlation between Current and Existing Self-Efficacy Scales

## General Self-Efficacy Scale
ConstructValidity_2$GeneralSE <- rowMeans(ConstructValidity_2[, c("GSE_1", "GSE_2", "GSE_3", "GSE_4", "GSE_5", "GSE_6", "GSE_7", "GSE_8")], na.rm = TRUE)

## Leadership Self-Efficacy Scale
ConstructValidity_2$LeadershipSE <- rowMeans(ConstructValidity_2[, c("LSE_1", "LSE_2", "LSE_3", "LSE_4","LSE_5", "LSE_6", "LSE_7", "LSE_8")], na.rm = TRUE)

## Teamwork Self-Efficacy Scale
ConstructValidity_2$TeamworkSE <- rowMeans(ConstructValidity_2[, c("TSE_1", "TSE_2", "TSE_3", "TSE_4","TSE_5", "TSE_6", "TSE_7", "TSE_8", "TSE_9", "TSE_10", "TSE_11", "TSE_12")], na.rm = TRUE)

# Correlations
CorVars <- ConstructValidity_2[, c("AWARENESS", "REGULATION", "MANAGEMENT", 
                                "GeneralSE", "LeadershipSE", "TeamworkSE")]
apa.cor.table(CorVars)
## 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable        M    SD   1          2          3          4         
##   1. AWARENESS    3.99 0.78                                            
##                                                                        
##   2. REGULATION   4.20 0.69 .51**                                      
##                             [.40, .61]                                 
##                                                                        
##   3. MANAGEMENT   3.63 0.97 .62**      .59**                           
##                             [.52, .70] [.49, .68]                      
##                                                                        
##   4. GeneralSE    5.55 1.10 .33**      .53**      .41**                
##                             [.19, .45] [.42, .62] [.29, .52]           
##                                                                        
##   5. LeadershipSE 4.94 1.21 .29**      .40**      .45**      .47**     
##                             [.15, .41] [.27, .51] [.33, .56] [.35, .57]
##                                                                        
##   6. TeamworkSE   5.44 0.92 .40**      .53**      .56**      .56**     
##                             [.27, .51] [.43, .63] [.45, .65] [.45, .65]
##                                                                        
##   5         
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##   .78**     
##   [.72, .83]
##             
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 

Discriminant Validity: Six Distinct Constructs

Note: general, leadership, and teamwork self-efficacy

# Create three parcels for the 12-items teamwork self-efficacy scale
ConstructValidity_2 <- ConstructValidity_2 %>%
  mutate(
    TSE_parcel1 = rowMeans(dplyr::select(., c(TSE_1, TSE_2, TSE_3, TSE_4)), na.rm = TRUE),
    TSE_parcel2 = rowMeans(dplyr::select(., c(TSE_5, TSE_6, TSE_7, TSE_8)), na.rm = TRUE),
    TSE_parcel3 = rowMeans(dplyr::select(., c(TSE_9, TSE_10, TSE_11, TSE_12)), na.rm = TRUE)
  )
DiscriminateValidity_Model <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5

  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8 

  # Factor 5: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8

  # Factor 6: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3 
'

DiscriminateValidity_Model_fit <- cfa(DiscriminateValidity_Model, ConstructValidity_2, estimator = "ML")
## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 900.373 449.000   0.000   0.923   0.050
## Standardized Factor Loadings:
## 
##                  Awrnss Regltn Mngmnt   GSE   LSE   TSE
## DSE_Aware_1       0.795  0.000  0.000 0.000 0.000 0.000
## DSE_Aware_2       0.717  0.000  0.000 0.000 0.000 0.000
## DSE_Aware_3       0.815  0.000  0.000 0.000 0.000 0.000
## DSE_Regulate_1    0.000  0.785  0.000 0.000 0.000 0.000
## DSE_Regulate_2    0.000  0.809  0.000 0.000 0.000 0.000
## DSE_Regulate_3    0.000  0.742  0.000 0.000 0.000 0.000
## DSE_Regulate_4    0.000  0.744  0.000 0.000 0.000 0.000
## DSE_Regulate_5    0.000  0.764  0.000 0.000 0.000 0.000
## DSE_Management_1  0.000  0.000  0.746 0.000 0.000 0.000
## DSE_Management_2  0.000  0.000  0.783 0.000 0.000 0.000
## DSE_Management_3  0.000  0.000  0.838 0.000 0.000 0.000
## DSE_Management_4  0.000  0.000  0.861 0.000 0.000 0.000
## DSE_Management_5  0.000  0.000  0.865 0.000 0.000 0.000
## GSE_1             0.000  0.000  0.000 0.906 0.000 0.000
## GSE_2             0.000  0.000  0.000 0.902 0.000 0.000
## GSE_3             0.000  0.000  0.000 0.917 0.000 0.000
## GSE_4             0.000  0.000  0.000 0.906 0.000 0.000
## GSE_5             0.000  0.000  0.000 0.904 0.000 0.000
## GSE_6             0.000  0.000  0.000 0.818 0.000 0.000
## GSE_7             0.000  0.000  0.000 0.678 0.000 0.000
## GSE_8             0.000  0.000  0.000 0.815 0.000 0.000
## LSE_1             0.000  0.000  0.000 0.000 0.684 0.000
## LSE_2             0.000  0.000  0.000 0.000 0.848 0.000
## LSE_3             0.000  0.000  0.000 0.000 0.916 0.000
## LSE_4             0.000  0.000  0.000 0.000 0.931 0.000
## LSE_5             0.000  0.000  0.000 0.000 0.888 0.000
## LSE_6             0.000  0.000  0.000 0.000 0.896 0.000
## LSE_7             0.000  0.000  0.000 0.000 0.796 0.000
## LSE_8             0.000  0.000  0.000 0.000 0.904 0.000
## TSE_parcel1       0.000  0.000  0.000 0.000 0.000 0.882
## TSE_parcel2       0.000  0.000  0.000 0.000 0.000 0.923
## TSE_parcel3       0.000  0.000  0.000 0.000 0.000 0.911
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.632            0.515            0.665            0.616 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.655            0.550            0.553            0.584 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.557            0.614            0.702            0.742 
## DSE_Management_5            GSE_1            GSE_2            GSE_3 
##            0.748            0.820            0.814            0.842 
##            GSE_4            GSE_5            GSE_6            GSE_7 
##            0.822            0.816            0.669            0.459 
##            GSE_8            LSE_1            LSE_2            LSE_3 
##            0.664            0.467            0.718            0.840 
##            LSE_4            LSE_5            LSE_6            LSE_7 
##            0.867            0.788            0.802            0.633 
##            LSE_8      TSE_parcel1      TSE_parcel2      TSE_parcel3 
##            0.816            0.777            0.852            0.829

Fornell-Larcker Test

# Average Variance Extracted
cat("Average Variance Extracted (AVE): \n")
## Average Variance Extracted (AVE):
AVE <- AVE(DiscriminateValidity_Model_fit) 
AVE
##  Awareness Regulation Management        GSE        LSE        TSE 
##      0.587      0.592      0.677      0.740      0.742      0.824
# Square Root of AVE
cat("\n Square Root of AVE:\n")
## 
##  Square Root of AVE:
AVEsqrt <- sqrt(AVE)
AVEsqrt["Awareness"]
## Awareness 
## 0.7662687
AVEsqrt["Regulation"]
## Regulation 
##  0.7692228
AVEsqrt["Management"]
## Management 
##  0.8230704
AVEsqrt["GSE"]
##       GSE 
## 0.8601203
AVEsqrt["LSE"]
##       LSE 
## 0.8616076
AVEsqrt["TSE"]
##       TSE 
## 0.9079116
# Maximum Squared Correlation
max_sq_cor <- cor(ConstructValidity_2$TeamworkSE,ConstructValidity_2$MANAGEMENT)^2
cat("Max Squared Correlation:", max_sq_cor, "\n")
## Max Squared Correlation: 0.3131897
## Fornell-Larcker Test
Awareness_vs_GSE <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["GSE"] > max_sq_cor
Regulation_vs_GSE <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["GSE"] > max_sq_cor
Management_vs_GSE <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["GSE"] > max_sq_cor

Awareness_vs_LSE <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["LSE"] > max_sq_cor
Regulation_vs_LSE <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["LSE"] > max_sq_cor
Management_vs_LSE <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["LSE"] > max_sq_cor

Awareness_vs_TSE <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["TSE"] > max_sq_cor
Regulation_vs_TSE <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["TSE"] > max_sq_cor
Management_vs_TSE <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["TSE"] > max_sq_cor

cat("Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE): \n")
## Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE):
cat("Awareness vs GSE:", Awareness_vs_GSE, "\n")
## Awareness vs GSE: TRUE
cat("Regulation vs GSE:", Regulation_vs_GSE, "\n")
## Regulation vs GSE: TRUE
cat("Management vs GSE:", Management_vs_GSE, "\n")
## Management vs GSE: TRUE
cat("Awareness vs LSE:", Awareness_vs_LSE, "\n")
## Awareness vs LSE: TRUE
cat("Regulation vs LSE:", Regulation_vs_LSE, "\n")
## Regulation vs LSE: TRUE
cat("Management vs LSE:", Management_vs_LSE, "\n")
## Management vs LSE: TRUE
cat("Awareness vs TSE:", Awareness_vs_TSE, "\n")
## Awareness vs TSE: TRUE
cat("Regulation vs TSE:", Regulation_vs_TSE, "\n")
## Regulation vs TSE: TRUE
cat("Management vs TSE:", Management_vs_TSE, "\n")
## Management vs TSE: TRUE

Heterotrait-monotrait ratio (HTMT) Analysis

# Compute and Print HTMT Values
library(semTools)
HTMTresults <- semTools::htmt(DiscriminateValidity_Model, ConstructValidity_2)
print(HTMTresults)
##            Awrnss Regltn Mngmnt   GSE   LSE   TSE
## Awareness   1.000                                
## Regulation  0.603  1.000                         
## Management  0.718  0.667  1.000                  
## GSE         0.366  0.570  0.441 1.000            
## LSE         0.311  0.421  0.483 0.485 1.000      
## TSE         0.458  0.593  0.606 0.594 0.815 1.000

Alternative Model #1: Five Distinct Constructs

Alt_Model_1 <- '
  # Factor 1: Bias-Awareness Efficacy & General Self-Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
               GSE_6 + GSE_7 + GSE_8

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5

  # Factor 4: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8

  # Factor 5: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3
'

Alt_Model_1_fit <- cfa(Alt_Model_1, ConstructValidity_2, estimator = "ML")

Alternative Model #2: Five Distinct Constructs

Alt_Model_2 <- '
  # Factor 1: Bias-Awareness Efficacy & Leadership Self-Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
               LSE_6 + LSE_7 + LSE_8

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8

  # Factor 5: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3
'
Alt_Model_2_fit <- cfa(Alt_Model_2, ConstructValidity_2, estimator = "ML")

Alternative Model #3: Five Distinct Constructs

Alt_Model_3 <- '
  # Factor 1: Bias-Awareness Efficacy & Teamwork Self-Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               TSE_parcel1 + TSE_parcel2 + TSE_parcel3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8
         
  # Factor 5: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8
'
Alt_Model_3_fit <- cfa(Alt_Model_3, ConstructValidity_2, estimator = "ML")

Alternative Model #4: Five Distinct Constructs

Alt_Model_4 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & General Self-Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
                GSE_6 + GSE_7 + GSE_8

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5

  # Factor 4: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8

  # Factor 5: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3
'
Alt_Model_4_fit <- cfa(Alt_Model_4, ConstructValidity_2, estimator = "ML")

Alternative Model #5: Five Distinct Constructs

Alt_Model_5 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & Leadership Self-Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
                LSE_6 + LSE_7 + LSE_8

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8

  # Factor 5: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3
'
Alt_Model_5_fit <- cfa(Alt_Model_5, ConstructValidity_2, estimator = "ML")

Alternative Model #6: Five Distinct Constructs

Alt_Model_6 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & Teamwork Self-Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                TSE_parcel1 + TSE_parcel2 + TSE_parcel3

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8
         
  # Factor 5: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8
'
Alt_Model_6_fit <- cfa(Alt_Model_6, ConstructValidity_2, estimator = "ML")

Alternative Model #7: Five Distinct Constructs

Alt_Model_7 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy 
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy & General Self-Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5 +
                GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
                GSE_6 + GSE_7 + GSE_8

  # Factor 4: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8

  # Factor 5: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3
'
Alt_Model_7_fit <- cfa(Alt_Model_7, ConstructValidity_2, estimator = "ML")

Alternative Model #8: Five Distinct Constructs

Alt_Model_8 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy 
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy & Leadership Self-Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5 +
                LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
                LSE_6 + LSE_7 + LSE_8
         
  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8

  # Factor 5: Teamwork Self-Efficacy
  TSE =~ TSE_parcel1 + TSE_parcel2 + TSE_parcel3
'
Alt_Model_8_fit <- cfa(Alt_Model_8, ConstructValidity_2, estimator = "ML")

Alternative Model #9: Five Distinct Constructs

Alt_Model_9 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy 
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy & Teamwork Self-Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5 +
                TSE_parcel1 + TSE_parcel2 + TSE_parcel3
 
  # Factor 4: General Self-Efficacy
  GSE =~ GSE_1 + GSE_2 + GSE_3 + GSE_4 + GSE_5 +
         GSE_6 + GSE_7 + GSE_8
         
  # Factor 5: Leadership Self-Efficacy
  LSE =~ LSE_1 + LSE_2 + LSE_3 + LSE_4 + LSE_5 +
         LSE_6 + LSE_7 + LSE_8
'
Alt_Model_9_fit <- cfa(Alt_Model_9, ConstructValidity_2, estimator = "ML")

Table A4 (Model Comparison): Chi-Square Test of Difference

Discriminant_Model_AltModel1 <- anova(DiscriminateValidity_Model_fit, 
                                 Alt_Model_1_fit)

Discriminant_Model_AltModel2 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_2_fit)

Discriminant_Model_AltModel3 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_3_fit)

Discriminant_Model_AltModel4 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_4_fit)

Discriminant_Model_AltModel5 <- anova(DiscriminateValidity_Model_fit, 
                                 Alt_Model_5_fit)

Discriminant_Model_AltModel6 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_6_fit)

Discriminant_Model_AltModel7 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_7_fit)

Discriminant_Model_AltModel8 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_8_fit)

Discriminant_Model_AltModel9 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_9_fit)

# extract values based on column indices
Discriminant_Model <- Discriminant_Model_AltModel1[1, ]  
Alt_Discriminant_AltModel1 <- Discriminant_Model_AltModel1[2, ] 
Alt_Discriminant_AltModel2 <- Discriminant_Model_AltModel2[2, ] 
Alt_Discriminant_AltModel3 <- Discriminant_Model_AltModel3[2, ] 
Alt_Discriminant_AltModel4 <- Discriminant_Model_AltModel4[2, ] 
Alt_Discriminant_AltModel5 <- Discriminant_Model_AltModel5[2, ] 
Alt_Discriminant_AltModel6 <- Discriminant_Model_AltModel6[2, ] 
Alt_Discriminant_AltModel7 <- Discriminant_Model_AltModel7[2, ] 
Alt_Discriminant_AltModel8 <- Discriminant_Model_AltModel8[2, ] 
Alt_Discriminant_AltModel9 <- Discriminant_Model_AltModel9[2, ]

discriminant_model_comparisons <- rbind(
  Discriminant_Model,
  Alt_Discriminant_AltModel1,
  Alt_Discriminant_AltModel2,
  Alt_Discriminant_AltModel3,
  Alt_Discriminant_AltModel4,
  Alt_Discriminant_AltModel5,
  Alt_Discriminant_AltModel6,
  Alt_Discriminant_AltModel7,
  Alt_Discriminant_AltModel8,
  Alt_Discriminant_AltModel9
)

# Print the data frame
print(discriminant_model_comparisons)
## 
## Chi-Squared Difference Test
## 
##                                 Df   AIC   BIC   Chisq Chisq diff   RMSEA
## DiscriminateValidity_Model_fit 449 13706 13964  900.37                   
## Alt_Model_1_fit                454 13960 14202 1164.28     263.91 0.51664
## Alt_Model_2_fit                454 13966 14208 1170.70     270.33 0.52300
## Alt_Model_3_fit                454 13920 14162 1125.17     224.79 0.47602
## Alt_Model_4_fit                454 14061 14303 1265.64     365.26 0.60943
## Alt_Model_5_fit                454 14155 14397 1359.77     459.40 0.68443
## Alt_Model_6_fit                454 14020 14262 1224.81     324.44 0.57386
## Alt_Model_7_fit                454 14305 14547 1509.96     609.58 0.78948
## Alt_Model_8_fit                454 14270 14512 1474.60     574.23 0.76605
## Alt_Model_9_fit                454 14107 14349 1311.48     411.10 0.64704
##                                Df diff Pr(>Chisq)    
## DiscriminateValidity_Model_fit                       
## Alt_Model_1_fit                      5  < 2.2e-16 ***
## Alt_Model_2_fit                      5  < 2.2e-16 ***
## Alt_Model_3_fit                      5  < 2.2e-16 ***
## Alt_Model_4_fit                      5  < 2.2e-16 ***
## Alt_Model_5_fit                      5  < 2.2e-16 ***
## Alt_Model_6_fit                      5  < 2.2e-16 ***
## Alt_Model_7_fit                      5  < 2.2e-16 ***
## Alt_Model_8_fit                      5  < 2.2e-16 ***
## Alt_Model_9_fit                      5  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##                          cfi       srmr
## SixFactor          0.9233343 0.05001294
## Alt_5factor_Aw+GSE 0.8793583 0.09919066
## Alt_5factor_Aw+LSE 0.8782686 0.10270737
## Alt_5factor_Aw+TSE 0.8860025 0.08095873
## Alt_5factor_SR+GSE 0.8621437 0.10165963
## Alt_5factor_SR+LSE 0.8461551 0.12528597
## Alt_5factor_SR+TSE 0.8690781 0.08222891
## Alt_5factor_M+GSE  0.8206459 0.12702966
## Alt_5factor_M+LSE  0.8266514 0.11874971
## Alt_5factor_M+TSE  0.8543574 0.07512208

Load Data for Step 5 (Replication Study)

ConstructValidity_3 <- read_sav("Construct Validity (Replication Study).sav")

# Bias-Awareness Efficacy
ConstructValidity_3$AWARENESS <- rowMeans(ConstructValidity_3[, c("DSE_Aware_1", "DSE_Aware_2", "DSE_Aware_3")], na.rm = TRUE)

# Self-Regulation Efficacy
ConstructValidity_3$REGULATION <- rowMeans(ConstructValidity_3[, c("DSE_Regulate_1", "DSE_Regulate_2", "DSE_Regulate_3", "DSE_Regulate_4", "DSE_Regulate_5")], na.rm = TRUE)

# Intergroup-Management Efficacy
ConstructValidity_3$MANAGEMENT <- rowMeans(ConstructValidity_3[, c("DSE_Management_1", "DSE_Management_2", "DSE_Management_3", "DSE_Management_4", "DSE_Management_5")], na.rm = TRUE)

## Pro-Diversity Beliefs Scale
ConstructValidity_3$ProDiversity <- rowMeans(ConstructValidity_3[, c("ProDiversity_1", "ProDiversity_2", "ProDiversity_3", "ProDiversity_4")], na.rm = TRUE)

## Empathetic Concern
ConstructValidity_3$Empathy <- rowMeans(ConstructValidity_3[, c("Empathy_1", "Empathy_2", "Empathy_3", "Empathy_4")], na.rm = TRUE)

## Perspective Taking
ConstructValidity_3$PerspectiveTaking <- rowMeans(ConstructValidity_3[, c("PerspectiveTaking_1", "PerspectiveTaking_2", "PerspectiveTaking_3", "PerspectiveTaking_4", "PerspectiveTaking_5", "PerspectiveTaking_6")], na.rm = TRUE)

# Correlations
apa.cor.table(ConstructValidity_3[,c("AWARENESS", "REGULATION", "MANAGEMENT", "ProDiversity", "Empathy", "PerspectiveTaking")])
## 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable             M    SD   1          2          3          4         
##   1. AWARENESS         3.93 0.81                                            
##                                                                             
##   2. REGULATION        4.11 0.72 .55**                                      
##                                  [.45, .64]                                 
##                                                                             
##   3. MANAGEMENT        3.56 1.04 .63**      .67**                           
##                                  [.54, .70] [.59, .74]                      
##                                                                             
##   4. ProDiversity      5.72 1.29 .50**      .37**      .61**                
##                                  [.39, .60] [.25, .48] [.52, .69]           
##                                                                             
##   5. Empathy           3.68 0.95 .52**      .44**      .59**      .73**     
##                                  [.41, .61] [.32, .54] [.50, .68] [.66, .79]
##                                                                             
##   6. PerspectiveTaking 4.43 0.67 .36**      .33**      .41**      .61**     
##                                  [.24, .47] [.21, .45] [.29, .51] [.52, .69]
##                                                                             
##   5         
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##             
##   .49**     
##   [.38, .59]
##             
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 

Confirmatory Factor Analysis

Three-Factor Model (Efficacy Scales)

ThreeFactor_model <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

ThreeFactor_fit <- cfa(ThreeFactor_model, ConstructValidity_3, estimator = "ML")

# plot CFA results
semPaths(ThreeFactor_fit, "std", weighted = FALSE, nCharNodes = 7, 
         shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)

## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 189.528  62.000   0.000   0.934   0.047
## Standardized Factor Loadings:
## 
##                  Awrnss Regltn Mngmnt
## DSE_Aware_1       0.863  0.000  0.000
## DSE_Aware_2       0.755  0.000  0.000
## DSE_Aware_3       0.805  0.000  0.000
## DSE_Regulate_1    0.000  0.820  0.000
## DSE_Regulate_2    0.000  0.770  0.000
## DSE_Regulate_3    0.000  0.713  0.000
## DSE_Regulate_4    0.000  0.763  0.000
## DSE_Regulate_5    0.000  0.873  0.000
## DSE_Management_1  0.000  0.000  0.804
## DSE_Management_2  0.000  0.000  0.804
## DSE_Management_3  0.000  0.000  0.889
## DSE_Management_4  0.000  0.000  0.854
## DSE_Management_5  0.000  0.000  0.852
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.745            0.570            0.647            0.672 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.592            0.508            0.582            0.762 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.646            0.647            0.791            0.729 
## DSE_Management_5 
##            0.726

One-Factor Model (Efficacy Scales)

OneFactor_model <- '
  # One Factor: Bias-Awareness, Self-Regulation, & Intergroup-Management Efficacy
  OneFactor =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 + 
               DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
               DSE_Regulate_4 + DSE_Regulate_5 +
               DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

Alt_Model1_1factor_fit <- cfa(OneFactor_model, ConstructValidity_3, estimator = "ML")
## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 189.528  62.000   0.000   0.934   0.047
## Standardized Factor Loadings:
## 
##                  Awrnss Regltn Mngmnt
## DSE_Aware_1       0.863  0.000  0.000
## DSE_Aware_2       0.755  0.000  0.000
## DSE_Aware_3       0.805  0.000  0.000
## DSE_Regulate_1    0.000  0.820  0.000
## DSE_Regulate_2    0.000  0.770  0.000
## DSE_Regulate_3    0.000  0.713  0.000
## DSE_Regulate_4    0.000  0.763  0.000
## DSE_Regulate_5    0.000  0.873  0.000
## DSE_Management_1  0.000  0.000  0.804
## DSE_Management_2  0.000  0.000  0.804
## DSE_Management_3  0.000  0.000  0.889
## DSE_Management_4  0.000  0.000  0.854
## DSE_Management_5  0.000  0.000  0.852
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.745            0.570            0.647            0.672 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.592            0.508            0.582            0.762 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.646            0.647            0.791            0.729 
## DSE_Management_5 
##            0.726
## 
## 
##  Three-Factor vs One-Factor Model:
## 
## Chi-Squared Difference Test
## 
##                        Df    AIC    BIC  Chisq Chisq diff   RMSEA Df diff
## ThreeFactor_fit        62 5902.7 5999.7 189.53                           
## Alt_Model1_1factor_fit 65 6231.4 6318.4 524.24     334.71 0.72562       3
##                        Pr(>Chisq)    
## ThreeFactor_fit                      
## Alt_Model1_1factor_fit  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Alternative 2-Factor Models

Alt_Model2_2factor <- '
Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

Regulation_Management =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +       
  DSE_Regulate_4 + DSE_Regulate_5 + DSE_Management_1 + DSE_Management_2 +    
  DSE_Management_3 + DSE_Management_4 + DSE_Management_5 
'
### Fit Indices for Alternative 2-Factor Model #1
Alt_Model2_2factor_fit <- cfa(Alt_Model2_2factor, ConstructValidity_3)

#####
Alt_Model3_2factor <- '
Awareness_Regulation =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 + DSE_Regulate_1 + 
  DSE_Regulate_2 + DSE_Regulate_3 + DSE_Regulate_4 + DSE_Regulate_5

Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +                 
  DSE_Management_4 + DSE_Management_5
'
### Fit Indices for Alternative 2-Factor Model #2
Alt_Model3_2factor_fit <- cfa(Alt_Model3_2factor, ConstructValidity_3)

#####
Alt_Model4_2factor <- '
Awareness_Management =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 + DSE_Management_1 + 
  DSE_Management_2 + DSE_Management_3 + DSE_Management_4 + DSE_Management_5

Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +           
  DSE_Regulate_4 + DSE_Regulate_5
'
### Fit Indices for Alternative 2-Factor Model #3
Alt_Model4_2factor_fit <- cfa(Alt_Model4_2factor, ConstructValidity_3)

Table A5 (Model Comparison): Chi-Square Test of Difference

Model_3vs1 <- anova(ThreeFactor_fit, Alt_Model1_1factor_fit)
Model_3vs2.1 <- anova(ThreeFactor_fit, Alt_Model2_2factor_fit)
Model_3vs2.2 <- anova(ThreeFactor_fit, Alt_Model3_2factor_fit)
Model_3vs2.3 <- anova(ThreeFactor_fit, Alt_Model4_2factor_fit)


Hypothesized_Model <- Model_3vs1[1, ]  # first row contains the comparison of interest
Alt_Model1_1f <- Model_3vs1[2, ] # second row contains the comparison of interest
Alt_Model2_2f <- Model_3vs2.1[2, ] # self-regulatory and management efficacy = 1 factor
Alt_Model3_2f <- Model_3vs2.2[2, ] # awareness and self-regulatory efficacy = 1 factor
Alt_Model4_2f <- Model_3vs2.3[2, ] # awareness and management efficacy = 1 factor

model_comparisons <- rbind(Hypothesized_Model,Alt_Model1_1f,Alt_Model2_2f,Alt_Model3_2f,Alt_Model4_2f)

# Print the data frame
print(model_comparisons)
## 
## Chi-Squared Difference Test
## 
##                        Df    AIC    BIC  Chisq Chisq diff   RMSEA Df diff
## ThreeFactor_fit        62 5902.7 5999.7 189.53                           
## Alt_Model1_1factor_fit 65 6231.4 6318.4 524.24     334.71 0.72562       3
## Alt_Model2_2factor_fit 64 6112.9 6203.3 403.79     214.26 0.71091       2
## Alt_Model3_2factor_fit 64 6067.8 6158.2 358.64     169.12 0.63079       2
## Alt_Model4_2factor_fit 64 6026.2 6116.6 317.04     127.51 0.54665       2
##                        Pr(>Chisq)    
## ThreeFactor_fit                      
## Alt_Model1_1factor_fit  < 2.2e-16 ***
## Alt_Model2_2factor_fit  < 2.2e-16 ***
## Alt_Model3_2factor_fit  < 2.2e-16 ***
## Alt_Model4_2factor_fit  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##                         cfi       srmr
## ThreeFactor       0.9344963 0.04715030
## OneFactor         0.7641142 0.09211582
## Alt_2factor_SR+M  0.8254684 0.07800437
## Alt_2factor_Aw+SR 0.8486582 0.08024082
## Alt_2factor_Aw+M  0.8700297 0.07096009

Fornell-Larcker Test

# Average Variance Extracted
cat("Average Variance Extracted (AVE): \n")
## Average Variance Extracted (AVE):
AVE <- AVE(ThreeFactor_fit) 
AVE
##  Awareness Regulation Management 
##      0.638      0.621      0.709
# Square Root of AVE
cat("\n Square Root of AVE:\n")
## 
##  Square Root of AVE:
AVEsqrt <- sqrt(AVE)
AVEsqrt["Awareness"]
## Awareness 
## 0.7990596
AVEsqrt["Regulation"]
## Regulation 
##  0.7882438
AVEsqrt["Management"]
## Management 
##  0.8421174
# Maximum Squared Correlation
apa.cor.table(ConstructValidity_3[,c("AWARENESS", "REGULATION", "MANAGEMENT")])
## 
## 
## Means, standard deviations, and correlations with confidence intervals
##  
## 
##   Variable      M    SD   1          2         
##   1. AWARENESS  3.93 0.81                      
##                                                
##   2. REGULATION 4.11 0.72 .55**                
##                           [.45, .64]           
##                                                
##   3. MANAGEMENT 3.56 1.04 .63**      .67**     
##                           [.54, .70] [.59, .74]
##                                                
## 
## Note. M and SD are used to represent mean and standard deviation, respectively.
## Values in square brackets indicate the 95% confidence interval.
## The confidence interval is a plausible range of population correlations 
## that could have caused the sample correlation (Cumming, 2014).
##  * indicates p < .05. ** indicates p < .01.
## 
max_sq_cor <- cor(ConstructValidity_3$AWARENESS,ConstructValidity_3$MANAGEMENT)^2
cat("Max Squared Correlation:", max_sq_cor, "\n")
## Max Squared Correlation: 0.3914351
## Fornell-Larcker Test
Awareness_vs_Regulation <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Regulation"] > max_sq_cor
Awareness_vs_Management <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Management"] > max_sq_cor
Regulation_vs_Management <- AVEsqrt["Regulation"] > max_sq_cor &&
                            AVEsqrt["Management"] > max_sq_cor

cat("Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE): \n")
## Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE):
cat("Awareness vs Regulation:", Awareness_vs_Regulation, "\n")
## Awareness vs Regulation: TRUE
cat("Awareness vs Management:", Awareness_vs_Management, "\n")
## Awareness vs Management: TRUE
cat("Regulation vs Management:", Regulation_vs_Management, "\n")
## Regulation vs Management: TRUE

Heterotrait-monotrait ratio (HTMT) Analysis

# Compute and Print HTMT Values
HTMTresults <- htmt(ThreeFactor_model,ConstructValidity_3)
HTMTresults 
##            Awrnss Regltn Mngmnt
## Awareness   1.000              
## Regulation  0.635  1.000       
## Management  0.696  0.737  1.000

Discriminant Validity: Efficacy Beliefs and Pro-Diversity Attitudes

FourFactor_model <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
                
  # Factor 4: Pro-Diversity Attitudes
  Pro_Diversity =~ ProDiversity_1 + ProDiversity_2 +
                  ProDiversity_3 + ProDiversity_4
'

FourFactor_fit <- cfa(FourFactor_model, ConstructValidity_3, estimator = "ML")
## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 356.365 113.000   0.000   0.916   0.053
## Standardized Factor Loadings:
## 
##                  Awrnss Regltn Mngmnt Pr_Dvr
## DSE_Aware_1       0.855  0.000  0.000  0.000
## DSE_Aware_2       0.768  0.000  0.000  0.000
## DSE_Aware_3       0.800  0.000  0.000  0.000
## DSE_Regulate_1    0.000  0.820  0.000  0.000
## DSE_Regulate_2    0.000  0.770  0.000  0.000
## DSE_Regulate_3    0.000  0.711  0.000  0.000
## DSE_Regulate_4    0.000  0.762  0.000  0.000
## DSE_Regulate_5    0.000  0.874  0.000  0.000
## DSE_Management_1  0.000  0.000  0.809  0.000
## DSE_Management_2  0.000  0.000  0.804  0.000
## DSE_Management_3  0.000  0.000  0.889  0.000
## DSE_Management_4  0.000  0.000  0.851  0.000
## DSE_Management_5  0.000  0.000  0.852  0.000
## ProDiversity_1    0.000  0.000  0.000  0.885
## ProDiversity_2    0.000  0.000  0.000  0.910
## ProDiversity_3    0.000  0.000  0.000  0.885
## ProDiversity_4    0.000  0.000  0.000  0.877
## 
## 
## Explained Variance (R²):
## 
##      DSE_Aware_1      DSE_Aware_2      DSE_Aware_3   DSE_Regulate_1 
##            0.730            0.590            0.640            0.672 
##   DSE_Regulate_2   DSE_Regulate_3   DSE_Regulate_4   DSE_Regulate_5 
##            0.593            0.506            0.581            0.764 
## DSE_Management_1 DSE_Management_2 DSE_Management_3 DSE_Management_4 
##            0.654            0.647            0.790            0.723 
## DSE_Management_5   ProDiversity_1   ProDiversity_2   ProDiversity_3 
##            0.725            0.784            0.828            0.783 
##   ProDiversity_4 
##            0.770

Fornell-Larcker Test

# Average Variance Extracted
cat("Average Variance Extracted (AVE): \n")
## Average Variance Extracted (AVE):
AVE <- AVE(FourFactor_fit) 
AVE
##     Awareness    Regulation    Management Pro_Diversity 
##         0.642         0.621         0.709         0.789
# Square Root of AVE
cat("\n Square Root of AVE:\n")
## 
##  Square Root of AVE:
AVEsqrt <- sqrt(AVE)
AVEsqrt["Awareness"]
## Awareness 
## 0.8010305
AVEsqrt["Regulation"]
## Regulation 
##    0.78814
AVEsqrt["Management"]
## Management 
##  0.8420558
AVEsqrt["Pro_Diversity"]
## Pro_Diversity 
##     0.8884849
# Maximum Squared Correlation
max_sq_cor <- cor(ConstructValidity_3$ProDiversity,ConstructValidity_3$MANAGEMENT)^2
cat("\n Max Squared Correlation:", max_sq_cor, "\n")
## 
##  Max Squared Correlation: 0.3780954
## Fornell-Larcker Test
Awareness_vs_ProDiversity <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Pro_Diversity"] > max_sq_cor
Regulation_vs_ProDiversity <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["Pro_Diversity"] > max_sq_cor
Management_vs_ProDiversity <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["Pro_Diversity"] > max_sq_cor

cat("Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE): \n")
## Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE):
cat("Awareness vs ProDiversity:", Awareness_vs_ProDiversity, "\n")
## Awareness vs ProDiversity: TRUE
cat("Regulation vs ProDiversity:", Regulation_vs_ProDiversity, "\n")
## Regulation vs ProDiversity: TRUE
cat("Management vs ProDiversity:", Management_vs_ProDiversity, "\n")
## Management vs ProDiversity: TRUE

Heterotrait-monotrait ratio (HTMT) Analysis

# Compute and Print HTMT Values
library(semTools)
HTMTresults <- semTools::htmt(FourFactor_model, ConstructValidity_3)
print(HTMTresults)
##               Awrnss Regltn Mngmnt Pr_Dvr
## Awareness      1.000                     
## Regulation     0.635  1.000              
## Management     0.696  0.737  1.000       
## Pro_Diversity  0.538  0.400  0.655  1.000

Alternative One-Factor Model (A1)

Note: Bias-Awareness Efficacy & Pro-Diversity Attitudes are combined into single factor

Alt_Model_1_Discriminant_Validity <- '
  # Factor 1: Bias-Awareness Efficacy & Pro-Diversity Attitudes
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               ProDiversity_1 + ProDiversity_2 +
               ProDiversity_3 + ProDiversity_4

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

### Fit Indices for Alternative One-Factor Model (A1)
Alt_Model_1_Discriminant_Validity_fit <- cfa(Alt_Model_1_Discriminant_Validity, ConstructValidity_3)

Alternative Two-Factor Model (A2)

Note: Self-Regulation Efficacy & Pro-Diversity Attitudes are combined into single factor

Alt_Model_2_Discriminant_Validity <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & Pro-Diversity Attitudes
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                ProDiversity_1 + ProDiversity_2 +
                ProDiversity_3 + ProDiversity_4

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
'

### Fit Indices for Alternative Two-Factor Model (A2)
Alt_Model_2_Discriminant_Validity_fit <- cfa(Alt_Model_2_Discriminant_Validity, ConstructValidity_3)

Alternative Two-Factor Model (A3)

Note: Intergroup-Management Efficacy & Pro-Diversity Attitudes are combined into single factor

Alt_Model_3_Discriminant_Validity <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy & Pro-Diversity Attitudes
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5 +
                ProDiversity_1 + ProDiversity_2 +
                ProDiversity_3 + ProDiversity_4
'

### Fit Indices for Alternative Two-Factor Model (A3)
Alt_Model_3_Discriminant_Validity_fit <- cfa(Alt_Model_3_Discriminant_Validity, ConstructValidity_3)

Table A6 (Model Comparison): Chi-Square Test of Difference

Discriminant_Model_4vs3.1 <- anova(FourFactor_fit, 
                                 Alt_Model_1_Discriminant_Validity_fit)

Discriminant_Model_4vs3.2 <- anova(FourFactor_fit, 
                                   Alt_Model_2_Discriminant_Validity_fit)

Discriminant_Model_4vs3.3 <- anova(FourFactor_fit, 
                                   Alt_Model_3_Discriminant_Validity_fit)

# extract values based on column indices
Hypothesized_Discriminant_Model <- Discriminant_Model_4vs3.1[1, ]  
Alt_Discriminant_Model1_1f <- Discriminant_Model_4vs3.1[2, ] 
Alt_Discriminant_Model2_2f <- Discriminant_Model_4vs3.2[2, ] 
Alt_Discriminant_Model3_2f <- Discriminant_Model_4vs3.3[2, ] 

discriminant_model_comparisons <- rbind(Hypothesized_Discriminant_Model,
                           Alt_Discriminant_Model1_1f,
                           Alt_Discriminant_Model2_2f,
                           Alt_Discriminant_Model3_2f
                           ) 

# Print the data frame
print(discriminant_model_comparisons)
## 
## Chi-Squared Difference Test
## 
##                                        Df    AIC    BIC  Chisq Chisq diff
## FourFactor_fit                        113 8030.1 8164.0 356.37           
## Alt_Model_1_Discriminant_Validity_fit 116 8250.9 8374.8 583.17     226.81
## Alt_Model_2_Discriminant_Validity_fit 116 8579.4 8703.2 911.65     555.28
## Alt_Model_3_Discriminant_Validity_fit 116 8451.9 8575.7 784.15     427.78
##                                         RMSEA Df diff Pr(>Chisq)    
## FourFactor_fit                                                      
## Alt_Model_1_Discriminant_Validity_fit 0.59603       3  < 2.2e-16 ***
## Alt_Model_2_Discriminant_Validity_fit 0.93629       3  < 2.2e-16 ***
## Alt_Model_3_Discriminant_Validity_fit 0.82113       3  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##                         cfi       srmr
## FourFactor        0.9159035 0.05274644
## Alt_3factor_Aw+PD 0.8385658 0.11890085
## Alt_3factor_SR+PD 0.7250597 0.17099332
## Alt_3factor_M+PD  0.7691165 0.09244667

Discriminant Validity: Efficacy Beliefs, Empathetic Concern, and Perspective Taking

DiscriminateValidity_Model <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
          
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5

  # Factor 4: Empathetic Concern
  Empathetic_Concern =~ Empathy_1 + Empathy_2 + Empathy_3 + Empathy_4 

  # Factor 5: Perspective Taking
  Perspective_Taking =~ PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + PerspectiveTaking_4 +   
                       PerspectiveTaking_5 + PerspectiveTaking_6 
'

DiscriminateValidity_Model_fit <- cfa(DiscriminateValidity_Model, ConstructValidity_3, estimator = "ML")
## Fit Indices:
## 
##   chisq      df  pvalue     cfi    srmr 
## 548.128 220.000   0.000   0.919   0.047
## Standardized Factor Loadings:
## 
##                     Awrnss Regltn Mngmnt Empt_C Prsp_T
## DSE_Aware_1          0.857  0.000  0.000  0.000  0.000
## DSE_Aware_2          0.768  0.000  0.000  0.000  0.000
## DSE_Aware_3          0.803  0.000  0.000  0.000  0.000
## DSE_Regulate_1       0.000  0.826  0.000  0.000  0.000
## DSE_Regulate_2       0.000  0.763  0.000  0.000  0.000
## DSE_Regulate_3       0.000  0.702  0.000  0.000  0.000
## DSE_Regulate_4       0.000  0.752  0.000  0.000  0.000
## DSE_Regulate_5       0.000  0.867  0.000  0.000  0.000
## DSE_Management_1     0.000  0.000  0.799  0.000  0.000
## DSE_Management_2     0.000  0.000  0.794  0.000  0.000
## DSE_Management_3     0.000  0.000  0.884  0.000  0.000
## DSE_Management_4     0.000  0.000  0.857  0.000  0.000
## DSE_Management_5     0.000  0.000  0.848  0.000  0.000
## Empathy_1            0.000  0.000  0.000  0.890  0.000
## Empathy_2            0.000  0.000  0.000  0.932  0.000
## Empathy_3            0.000  0.000  0.000  0.931  0.000
## Empathy_4            0.000  0.000  0.000  0.848  0.000
## PerspectiveTaking_1  0.000  0.000  0.000  0.000  0.818
## PerspectiveTaking_2  0.000  0.000  0.000  0.000  0.838
## PerspectiveTaking_3  0.000  0.000  0.000  0.000  0.780
## PerspectiveTaking_4  0.000  0.000  0.000  0.000  0.893
## PerspectiveTaking_5  0.000  0.000  0.000  0.000  0.845
## PerspectiveTaking_6  0.000  0.000  0.000  0.000  0.878
## 
## 
## Explained Variance (R²):
## 
##         DSE_Aware_1         DSE_Aware_2         DSE_Aware_3      DSE_Regulate_1 
##               0.734               0.589               0.645               0.683 
##      DSE_Regulate_2      DSE_Regulate_3      DSE_Regulate_4      DSE_Regulate_5 
##               0.583               0.493               0.566               0.752 
##    DSE_Management_1    DSE_Management_2    DSE_Management_3    DSE_Management_4 
##               0.638               0.631               0.781               0.735 
##    DSE_Management_5           Empathy_1           Empathy_2           Empathy_3 
##               0.720               0.792               0.868               0.867 
##           Empathy_4 PerspectiveTaking_1 PerspectiveTaking_2 PerspectiveTaking_3 
##               0.719               0.668               0.702               0.608 
## PerspectiveTaking_4 PerspectiveTaking_5 PerspectiveTaking_6 
##               0.797               0.714               0.772

Fornell-Larcker Test

# Average Variance Extracted
cat("Average Variance Extracted (AVE): \n")
## Average Variance Extracted (AVE):
AVE <- AVE(DiscriminateValidity_Model_fit) 
AVE
##          Awareness         Regulation         Management Empathetic_Concern 
##              0.644              0.612              0.703              0.805 
## Perspective_Taking 
##              0.712
# Square Root of AVE
cat("\n Square Root of AVE:\n")
## 
##  Square Root of AVE:
AVEsqrt <- sqrt(AVE)
AVEsqrt["Awareness"]
## Awareness 
## 0.8023375
AVEsqrt["Regulation"]
## Regulation 
##  0.7824537
AVEsqrt["Management"]
## Management 
##  0.8384341
AVEsqrt["Empathy"]
## <NA> 
##   NA
AVEsqrt["PerspectiveTaking"]
## <NA> 
##   NA
# Maximum Squared Correlation
max_sq_cor <- cor(ConstructValidity_3$Empathy,ConstructValidity_3$MANAGEMENT)^2
cat("Max Squared Correlation:", max_sq_cor, "\n")
## Max Squared Correlation: NA
## Fornell-Larcker Test
Awareness_vs_Empathy <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["Empathy"] > max_sq_cor
Regulation_vs_Empathy <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["Empathy"] > max_sq_cor
Management_vs_Empathy <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["Empathy"] > max_sq_cor

Awareness_vs_PerspectiveTaking <- AVEsqrt["Awareness"] > max_sq_cor &&
                           AVEsqrt["PerspectiveTaking"] > max_sq_cor
Regulation_vs_PerspectiveTaking <- AVEsqrt["Regulation"] > max_sq_cor &&
                           AVEsqrt["PerspectiveTaking"] > max_sq_cor
Management_vs_PerspectiveTaking <- AVEsqrt["Management"] > max_sq_cor &&
                            AVEsqrt["PerspectiveTaking"] > max_sq_cor

cat("Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE): \n")
## Fornell–Larcker Criterion (√AVE > max_sq correlation → TRUE):
cat("Awareness vs Empathy:", Awareness_vs_Empathy, "\n")
## Awareness vs Empathy: NA
cat("Regulation vs Empathy:", Regulation_vs_Empathy, "\n")
## Regulation vs Empathy: NA
cat("Management vs Empathy:", Management_vs_Empathy, "\n")
## Management vs Empathy: NA
cat("Awareness vs PerspectiveTaking:", Awareness_vs_PerspectiveTaking, "\n")
## Awareness vs PerspectiveTaking: NA
cat("Regulation vs PerspectiveTaking:", Regulation_vs_PerspectiveTaking, "\n")
## Regulation vs PerspectiveTaking: NA
cat("Management vs PerspectiveTaking:", Management_vs_PerspectiveTaking, "\n")
## Management vs PerspectiveTaking: NA

Heterotrait-monotrait ratio (HTMT) Analysis

# Compute and Print HTMT Values
library(semTools)
HTMTresults <- semTools::htmt(FourFactor_model, ConstructValidity_3)
print(HTMTresults)
##               Awrnss Regltn Mngmnt Pr_Dvr
## Awareness      1.000                     
## Regulation     0.635  1.000              
## Management     0.696  0.737  1.000       
## Pro_Diversity  0.538  0.400  0.655  1.000

Alternative Model #1: Four Distinct Constructs

Alt_Model_1 <- '
  # Factor 1: Bias-Awareness Efficacy & Empathetic Concern
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               Empathy_1 + Empathy_2 + Empathy_3 + Empathy_4

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5

  # Factor 4: Perspective Taking
  Perspective_Taking =~ PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + PerspectiveTaking_4 + PerspectiveTaking_5 + PerspectiveTaking_6
'

Alt_Model_1_fit <- cfa(Alt_Model_1, ConstructValidity_3, estimator = "ML")

Alternative Model #2: Four Distinct Constructs

Alt_Model_2 <- '
  # Factor 2: Bias-Awareness Efficacy & Perspective Taking
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3 +
               PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + 
               PerspectiveTaking_4 + PerspectiveTaking_5 + PerspectiveTaking_6

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: Empathetic Concern
  Empathetic_Concern =~ Empathy_1 + Empathy_2 + Empathy_3 + Empathy_4 
'
Alt_Model_2_fit <- cfa(Alt_Model_2, ConstructValidity_3, estimator = "ML")

Alternative Model #3: Four Distinct Constructs

Alt_Model_3 <- '
  # Factor 2: Bias-Awareness Efficacy 
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & Empathetic Concern
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                Empathy_1 + Empathy_2 + Empathy_3 + Empathy_4

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: Perspective Taking
  Perspective_Taking =~ PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + PerspectiveTaking_4 +   
                        PerspectiveTaking_5 + PerspectiveTaking_6
'
Alt_Model_3_fit <- cfa(Alt_Model_3, ConstructValidity_3, estimator = "ML")

Alternative Model #4: Four Distinct Constructs

Alt_Model_4 <- '
  # Factor 1: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy & Perspective Taking
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 +
                PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + 
                PerspectiveTaking_4 + PerspectiveTaking_5 + PerspectiveTaking_6

  # Factor 3: Intergroup-Management Efficacy
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5

  # Factor 4: Empathetic Concern
  Empathetic_Concern =~ Empathy_1 + Empathy_2 + Empathy_3 + Empathy_4
'
Alt_Model_4_fit <- cfa(Alt_Model_4, ConstructValidity_3, estimator = "ML")

Alternative Model #5: Four Distinct Constructs

Alt_Model_5 <- '
  # Factor 2: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5

  # Factor 3: Intergroup-Management Efficacy & Empathetic Concern
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5
         
  # Factor 4: Perspective Taking
  Perspective_Taking =~ PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + PerspectiveTaking_4 +   
                        PerspectiveTaking_5 + PerspectiveTaking_6
'
Alt_Model_5_fit <- cfa(Alt_Model_5, ConstructValidity_3, estimator = "ML")

Alternative Model #6: Four Distinct Constructs

Alt_Model_6 <- '
  # Factor 2: Bias-Awareness Efficacy
  Awareness =~ DSE_Aware_1 + DSE_Aware_2 + DSE_Aware_3

  # Factor 2: Self-Regulation Efficacy
  Regulation =~ DSE_Regulate_1 + DSE_Regulate_2 + DSE_Regulate_3 +
                DSE_Regulate_4 + DSE_Regulate_5 
                
  # Factor 3: Intergroup-Management Efficacy & Perspective Taking
  Management =~ DSE_Management_1 + DSE_Management_2 + DSE_Management_3 +
                DSE_Management_4 + DSE_Management_5 +
                PerspectiveTaking_1 + PerspectiveTaking_2 + PerspectiveTaking_3 + 
                PerspectiveTaking_4 + PerspectiveTaking_5 + PerspectiveTaking_6
         
  # Factor 4: Empathetic Concern
  Empathetic_Concern =~ Empathy_1 + Empathy_2 + Empathy_3 + Empathy_4
'
Alt_Model_6_fit <- cfa(Alt_Model_6, ConstructValidity_3, estimator = "ML")

Table A7 (Model Comparison): Chi-Square Test of Difference

Discriminant_Model_AltModel1 <- anova(DiscriminateValidity_Model_fit, 
                                 Alt_Model_1_fit)

Discriminant_Model_AltModel2 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_2_fit)

Discriminant_Model_AltModel3 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_3_fit)

Discriminant_Model_AltModel4 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_4_fit)

Discriminant_Model_AltModel5 <- anova(DiscriminateValidity_Model_fit, 
                                 Alt_Model_5_fit)

Discriminant_Model_AltModel6 <- anova(DiscriminateValidity_Model_fit, 
                                   Alt_Model_6_fit)

# extract values based on column indices
Discriminant_Model <- Discriminant_Model_AltModel1[1, ]  
Alt_Discriminant_AltModel1 <- Discriminant_Model_AltModel1[2, ] 
Alt_Discriminant_AltModel2 <- Discriminant_Model_AltModel2[2, ] 
Alt_Discriminant_AltModel3 <- Discriminant_Model_AltModel3[2, ] 
Alt_Discriminant_AltModel4 <- Discriminant_Model_AltModel4[2, ] 
Alt_Discriminant_AltModel5 <- Discriminant_Model_AltModel5[2, ] 
Alt_Discriminant_AltModel6 <- Discriminant_Model_AltModel6[2, ] 

discriminant_model_comparisons <- rbind(
  Discriminant_Model,
  Alt_Discriminant_AltModel1,
  Alt_Discriminant_AltModel2,
  Alt_Discriminant_AltModel3,
  Alt_Discriminant_AltModel4,
  Alt_Discriminant_AltModel5,
  Alt_Discriminant_AltModel6
)

# Print the data frame
print(discriminant_model_comparisons)
## 
## Chi-Squared Difference Test
## 
##                                  Df    AIC     BIC   Chisq Chisq diff   RMSEA
## DiscriminateValidity_Model_fit  220 9220.7  9407.9  548.13                   
## Alt_Model_1_fit                 224 9450.4  9624.2  785.80     237.67 0.52869
## Alt_Model_2_fit                 224 9534.0  9707.8  869.42     321.29 0.61606
## Alt_Model_3_fit                 224 9704.1  9877.9 1039.53     491.41 0.76356
## Alt_Model_4_fit                 224 9771.0  9944.8 1106.46     558.33 0.81429
## DiscriminateValidity_Model_fit1 220 9220.7  9407.9  548.13     167.76 0.07786
## Alt_Model_6_fit                 224 9984.4 10158.2 1319.85     771.73 0.95830
##                                 Df diff Pr(>Chisq)    
## DiscriminateValidity_Model_fit                        
## Alt_Model_1_fit                       4  < 2.2e-16 ***
## Alt_Model_2_fit                       4  < 2.2e-16 ***
## Alt_Model_3_fit                       4  < 2.2e-16 ***
## Alt_Model_4_fit                       4  < 2.2e-16 ***
## DiscriminateValidity_Model_fit1      74  3.088e-09 ***
## Alt_Model_6_fit                       4  < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##                          cfi       srmr
## SixFactor          0.9192006 0.04685369
## Alt_5factor_Aw+EMP 0.8616601 0.09466963
## Alt_5factor_Aw+PT  0.8410704 0.13535706
## Alt_5factor_SR+EMP 0.7991799 0.12423063
## Alt_5factor_SR+PT  0.7827010 0.16021334
## Alt_5factor_M+EMP  0.9240949 0.04616654
## Alt_5factor_M+PT   0.7301531 0.11297820