Lab 4: Exploratory and Confirmatory Factor Analyses

Author

Usman Afzali

Published

January 27, 2023

In this lab we will have a look at a scale used in Prof Andy Field’s textbook (Discovering Statistics Using IBM SPSS Statistics) to conduct EFA and CFA analyses. The purpose of the factor analysis exercise is to get a better understanding of the psychological construct (SPSS Anxiety) as measured by the SAQ (i.e., construct validity information). Knowing the construct validity of a scale allows us to make an informed decision on how the scale can be used. One of the most common usages is to create valid composite scores. We randomly divided up the original dataset of responses on the SAQ into an EFA sample and a CFA sample (Please note that Usman used the same dataset for EFA in the class too, but he used the data from all subjects). Dividing up is a common methodological strategy in scale development to obtain two independent samples. This lab is important because it provides you with an experiential learning opportunity to conduct exploratory and confirmatory factor analyses. This is an important skill that will be assessed in your Lab Report (the next assignment).

Task 1: Exploratory Factor Analysis – Deciding on a factor structure

Q1. Import the dataset into R. Go through to ensure that the data variable information is correct for all the variables (i.e., measure type, data type, missing values).

library(readxl)
df <- read_xlsx("Lab 4 Dataset.xlsx")
df
# A tibble: 2,571 × 24
   factor_anal…¹ Quest…² Quest…³ Quest…⁴ Quest…⁵ Quest…⁶ Quest…⁷ Quest…⁸ Quest…⁹
           <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
 1             1       2       1       4       2       2       2       3       1
 2             1       1       1       4       3       2       2       2       2
 3             1       2       3       2       2       4       1       2       2
 4             1       3       1       1       4       3       3       4       2
 5             1       2       1       3       2       2       3       3       2
 6             1       2       1       3       2       4       4       4       2
 7             1       2       3       3       2       2       2       2       2
 8             1       2       2       3       2       2       2       2       2
 9             1       3       3       1       4       5       3       5       5
10             1       2       4       4       3       2       1       2       2
# … with 2,561 more rows, 15 more variables: Question_9 <dbl>,
#   Question_10 <dbl>, Question_11 <dbl>, Question_12 <dbl>, Question_13 <dbl>,
#   Question_14 <dbl>, Question_15 <dbl>, Question_16 <dbl>, Question_17 <dbl>,
#   Question_18 <dbl>, Question_19 <dbl>, Question_20 <dbl>, Question_21 <dbl>,
#   Question_22 <dbl>, Question_23 <dbl>, and abbreviated variable names
#   ¹​factor_analysis_sample, ²​Question_1, ³​Question_2, ⁴​Question_3,
#   ⁵​Question_4, ⁶​Question_5, ⁷​Question_6, ⁸​Question_7, ⁹​Question_8

Let’s have a look at the structure.

str(df)
tibble [2,571 × 24] (S3: tbl_df/tbl/data.frame)
 $ factor_analysis_sample: num [1:2571] 1 1 1 1 1 1 1 1 1 1 ...
 $ Question_1            : num [1:2571] 2 1 2 3 2 2 2 2 3 2 ...
 $ Question_2            : num [1:2571] 1 1 3 1 1 1 3 2 3 4 ...
 $ Question_3            : num [1:2571] 4 4 2 1 3 3 3 3 1 4 ...
 $ Question_4            : num [1:2571] 2 3 2 4 2 2 2 2 4 3 ...
 $ Question_5            : num [1:2571] 2 2 4 3 2 4 2 2 5 2 ...
 $ Question_6            : num [1:2571] 2 2 1 3 3 4 2 2 3 1 ...
 $ Question_7            : num [1:2571] 3 2 2 4 3 4 2 2 5 2 ...
 $ Question_8            : num [1:2571] 1 2 2 2 2 2 2 2 5 2 ...
 $ Question_9            : num [1:2571] 1 5 2 2 4 4 3 4 3 3 ...
 $ Question_10           : num [1:2571] 2 2 2 4 2 3 2 2 3 2 ...
 $ Question_11           : num [1:2571] 1 2 3 2 2 2 2 2 5 2 ...
 $ Question_12           : num [1:2571] 2 3 3 2 3 4 2 3 5 3 ...
 $ Question_13           : num [1:2571] 2 1 2 2 3 3 2 2 5 2 ...
 $ Question_14           : num [1:2571] 2 3 4 3 2 3 2 2 5 1 ...
 $ Question_15           : num [1:2571] 2 4 2 3 2 5 2 3 5 2 ...
 $ Question_16           : num [1:2571] 3 3 3 3 2 2 2 2 5 3 ...
 $ Question_17           : num [1:2571] 1 2 2 2 2 3 2 2 5 2 ...
 $ Question_18           : num [1:2571] 2 2 3 4 3 5 2 2 5 2 ...
 $ Question_19           : num [1:2571] 3 3 1 2 3 1 3 4 2 3 ...
 $ Question_20           : num [1:2571] 2 4 4 4 4 5 2 3 5 3 ...
 $ Question_21           : num [1:2571] 2 4 3 4 2 3 2 2 5 2 ...
 $ Question_22           : num [1:2571] 2 4 2 4 4 1 4 4 3 4 ...
 $ Question_23           : num [1:2571] 5 2 2 3 4 4 4 4 3 4 ...

Q2. As a practice, let’s rename the nominal (factor analysis sample) variable levels to corresponding names where EFA replaces 1 and CFA replaces 2.

col <- 1
df[col] <- lapply(df[col], as.character)
str(df)
tibble [2,571 × 24] (S3: tbl_df/tbl/data.frame)
 $ factor_analysis_sample: chr [1:2571] "1" "1" "1" "1" ...
 $ Question_1            : num [1:2571] 2 1 2 3 2 2 2 2 3 2 ...
 $ Question_2            : num [1:2571] 1 1 3 1 1 1 3 2 3 4 ...
 $ Question_3            : num [1:2571] 4 4 2 1 3 3 3 3 1 4 ...
 $ Question_4            : num [1:2571] 2 3 2 4 2 2 2 2 4 3 ...
 $ Question_5            : num [1:2571] 2 2 4 3 2 4 2 2 5 2 ...
 $ Question_6            : num [1:2571] 2 2 1 3 3 4 2 2 3 1 ...
 $ Question_7            : num [1:2571] 3 2 2 4 3 4 2 2 5 2 ...
 $ Question_8            : num [1:2571] 1 2 2 2 2 2 2 2 5 2 ...
 $ Question_9            : num [1:2571] 1 5 2 2 4 4 3 4 3 3 ...
 $ Question_10           : num [1:2571] 2 2 2 4 2 3 2 2 3 2 ...
 $ Question_11           : num [1:2571] 1 2 3 2 2 2 2 2 5 2 ...
 $ Question_12           : num [1:2571] 2 3 3 2 3 4 2 3 5 3 ...
 $ Question_13           : num [1:2571] 2 1 2 2 3 3 2 2 5 2 ...
 $ Question_14           : num [1:2571] 2 3 4 3 2 3 2 2 5 1 ...
 $ Question_15           : num [1:2571] 2 4 2 3 2 5 2 3 5 2 ...
 $ Question_16           : num [1:2571] 3 3 3 3 2 2 2 2 5 3 ...
 $ Question_17           : num [1:2571] 1 2 2 2 2 3 2 2 5 2 ...
 $ Question_18           : num [1:2571] 2 2 3 4 3 5 2 2 5 2 ...
 $ Question_19           : num [1:2571] 3 3 1 2 3 1 3 4 2 3 ...
 $ Question_20           : num [1:2571] 2 4 4 4 4 5 2 3 5 3 ...
 $ Question_21           : num [1:2571] 2 4 3 4 2 3 2 2 5 2 ...
 $ Question_22           : num [1:2571] 2 4 2 4 4 1 4 4 3 4 ...
 $ Question_23           : num [1:2571] 5 2 2 3 4 4 4 4 3 4 ...

Q3. Here is a neat trick; R (and other data analysis software) use the filter function that enables you to work with a subset of a large dataset. This is handy for keeping analyses tidy. For this exercise, we are going to use a filter to separate out our EFA and CFA samples. We designate 1 to the EFA subsample and 2 to the CFA sample.

Renaming EFA and CFA samples:

df$FAS = ifelse(df$factor_analysis_sample < 2, "EFA", "CFA")
str(df)
tibble [2,571 × 25] (S3: tbl_df/tbl/data.frame)
 $ factor_analysis_sample: chr [1:2571] "1" "1" "1" "1" ...
 $ Question_1            : num [1:2571] 2 1 2 3 2 2 2 2 3 2 ...
 $ Question_2            : num [1:2571] 1 1 3 1 1 1 3 2 3 4 ...
 $ Question_3            : num [1:2571] 4 4 2 1 3 3 3 3 1 4 ...
 $ Question_4            : num [1:2571] 2 3 2 4 2 2 2 2 4 3 ...
 $ Question_5            : num [1:2571] 2 2 4 3 2 4 2 2 5 2 ...
 $ Question_6            : num [1:2571] 2 2 1 3 3 4 2 2 3 1 ...
 $ Question_7            : num [1:2571] 3 2 2 4 3 4 2 2 5 2 ...
 $ Question_8            : num [1:2571] 1 2 2 2 2 2 2 2 5 2 ...
 $ Question_9            : num [1:2571] 1 5 2 2 4 4 3 4 3 3 ...
 $ Question_10           : num [1:2571] 2 2 2 4 2 3 2 2 3 2 ...
 $ Question_11           : num [1:2571] 1 2 3 2 2 2 2 2 5 2 ...
 $ Question_12           : num [1:2571] 2 3 3 2 3 4 2 3 5 3 ...
 $ Question_13           : num [1:2571] 2 1 2 2 3 3 2 2 5 2 ...
 $ Question_14           : num [1:2571] 2 3 4 3 2 3 2 2 5 1 ...
 $ Question_15           : num [1:2571] 2 4 2 3 2 5 2 3 5 2 ...
 $ Question_16           : num [1:2571] 3 3 3 3 2 2 2 2 5 3 ...
 $ Question_17           : num [1:2571] 1 2 2 2 2 3 2 2 5 2 ...
 $ Question_18           : num [1:2571] 2 2 3 4 3 5 2 2 5 2 ...
 $ Question_19           : num [1:2571] 3 3 1 2 3 1 3 4 2 3 ...
 $ Question_20           : num [1:2571] 2 4 4 4 4 5 2 3 5 3 ...
 $ Question_21           : num [1:2571] 2 4 3 4 2 3 2 2 5 2 ...
 $ Question_22           : num [1:2571] 2 4 2 4 4 1 4 4 3 4 ...
 $ Question_23           : num [1:2571] 5 2 2 3 4 4 4 4 3 4 ...
 $ FAS                   : chr [1:2571] "EFA" "EFA" "EFA" "EFA" ...

Selecting EFA sample only, so it can be used for further analysis.

EFA <- dplyr::filter(df, FAS %in% c("EFA"))
str(EFA)
tibble [1,285 × 25] (S3: tbl_df/tbl/data.frame)
 $ factor_analysis_sample: chr [1:1285] "1" "1" "1" "1" ...
 $ Question_1            : num [1:1285] 2 1 2 3 2 2 2 2 3 2 ...
 $ Question_2            : num [1:1285] 1 1 3 1 1 1 3 2 3 4 ...
 $ Question_3            : num [1:1285] 4 4 2 1 3 3 3 3 1 4 ...
 $ Question_4            : num [1:1285] 2 3 2 4 2 2 2 2 4 3 ...
 $ Question_5            : num [1:1285] 2 2 4 3 2 4 2 2 5 2 ...
 $ Question_6            : num [1:1285] 2 2 1 3 3 4 2 2 3 1 ...
 $ Question_7            : num [1:1285] 3 2 2 4 3 4 2 2 5 2 ...
 $ Question_8            : num [1:1285] 1 2 2 2 2 2 2 2 5 2 ...
 $ Question_9            : num [1:1285] 1 5 2 2 4 4 3 4 3 3 ...
 $ Question_10           : num [1:1285] 2 2 2 4 2 3 2 2 3 2 ...
 $ Question_11           : num [1:1285] 1 2 3 2 2 2 2 2 5 2 ...
 $ Question_12           : num [1:1285] 2 3 3 2 3 4 2 3 5 3 ...
 $ Question_13           : num [1:1285] 2 1 2 2 3 3 2 2 5 2 ...
 $ Question_14           : num [1:1285] 2 3 4 3 2 3 2 2 5 1 ...
 $ Question_15           : num [1:1285] 2 4 2 3 2 5 2 3 5 2 ...
 $ Question_16           : num [1:1285] 3 3 3 3 2 2 2 2 5 3 ...
 $ Question_17           : num [1:1285] 1 2 2 2 2 3 2 2 5 2 ...
 $ Question_18           : num [1:1285] 2 2 3 4 3 5 2 2 5 2 ...
 $ Question_19           : num [1:1285] 3 3 1 2 3 1 3 4 2 3 ...
 $ Question_20           : num [1:1285] 2 4 4 4 4 5 2 3 5 3 ...
 $ Question_21           : num [1:1285] 2 4 3 4 2 3 2 2 5 2 ...
 $ Question_22           : num [1:1285] 2 4 2 4 4 1 4 4 3 4 ...
 $ Question_23           : num [1:1285] 5 2 2 3 4 4 4 4 3 4 ...
 $ FAS                   : chr [1:1285] "EFA" "EFA" "EFA" "EFA" ...

First, let’s select only numeric columns - pertaining to questionnaire items.

library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
EFA_items <- EFA %>%
  select(Question_1, Question_2, Question_3, Question_4, Question_5, Question_6, Question_7, Question_8, Question_9, Question_10, Question_11, Question_12, Question_13, Question_14, Question_15, Question_16, Question_17, Question_18, Question_19, Question_20, Question_21, Question_22, Question_23)
str(EFA_items)
tibble [1,285 × 23] (S3: tbl_df/tbl/data.frame)
 $ Question_1 : num [1:1285] 2 1 2 3 2 2 2 2 3 2 ...
 $ Question_2 : num [1:1285] 1 1 3 1 1 1 3 2 3 4 ...
 $ Question_3 : num [1:1285] 4 4 2 1 3 3 3 3 1 4 ...
 $ Question_4 : num [1:1285] 2 3 2 4 2 2 2 2 4 3 ...
 $ Question_5 : num [1:1285] 2 2 4 3 2 4 2 2 5 2 ...
 $ Question_6 : num [1:1285] 2 2 1 3 3 4 2 2 3 1 ...
 $ Question_7 : num [1:1285] 3 2 2 4 3 4 2 2 5 2 ...
 $ Question_8 : num [1:1285] 1 2 2 2 2 2 2 2 5 2 ...
 $ Question_9 : num [1:1285] 1 5 2 2 4 4 3 4 3 3 ...
 $ Question_10: num [1:1285] 2 2 2 4 2 3 2 2 3 2 ...
 $ Question_11: num [1:1285] 1 2 3 2 2 2 2 2 5 2 ...
 $ Question_12: num [1:1285] 2 3 3 2 3 4 2 3 5 3 ...
 $ Question_13: num [1:1285] 2 1 2 2 3 3 2 2 5 2 ...
 $ Question_14: num [1:1285] 2 3 4 3 2 3 2 2 5 1 ...
 $ Question_15: num [1:1285] 2 4 2 3 2 5 2 3 5 2 ...
 $ Question_16: num [1:1285] 3 3 3 3 2 2 2 2 5 3 ...
 $ Question_17: num [1:1285] 1 2 2 2 2 3 2 2 5 2 ...
 $ Question_18: num [1:1285] 2 2 3 4 3 5 2 2 5 2 ...
 $ Question_19: num [1:1285] 3 3 1 2 3 1 3 4 2 3 ...
 $ Question_20: num [1:1285] 2 4 4 4 4 5 2 3 5 3 ...
 $ Question_21: num [1:1285] 2 4 3 4 2 3 2 2 5 2 ...
 $ Question_22: num [1:1285] 2 4 2 4 4 1 4 4 3 4 ...
 $ Question_23: num [1:1285] 5 2 2 3 4 4 4 4 3 4 ...

Q4. Set extraction method to ‘Principal axis’ (allowing for measurement error with the new scale being developed) and rotation method to ‘Promax’ (allowing for factors to correlate because most psychological constructs do correlate to some extent). Number of factors should be based on eigenvalues (Eigenvalues greater than 1). Hide loadings below 0.4; and show Factor summary.

Q5. Check both the options under ‘assumption checks’ (Bartlett’s test of sphericity and KMO measure of sampling adequacy). Do our data satisfy both assumptions for EFA?

Q6. With the criteria of eigenvalues greater than 1, how many factors were extracted?

Q7. Since a 1-factor model implies that SAQ is a 23-item scale, to explore how to make the scale more parsimonious we shall rerun the factor analysis with a more liberal eigenvalue. Let’s try eigenvalues greater than 0, how many factors were extracted now?

Correlate all items and round it up two dp.

EFAMatrix <- cor(EFA_items)
cored<-round (EFAMatrix, 2)
corrplot::corrplot(cored)

Checking EFA assumptions

psych::cortest.bartlett(EFAMatrix, n = 1285)
$chisq
[1] 9873.737

$p.value
[1] 0

$df
[1] 253
psych::KMO(EFA_items)
Kaiser-Meyer-Olkin factor adequacy
Call: psych::KMO(r = EFA_items)
Overall MSA =  0.93
MSA for each item = 
 Question_1  Question_2  Question_3  Question_4  Question_5  Question_6 
       0.91        0.87        0.95        0.95        0.96        0.90 
 Question_7  Question_8  Question_9 Question_10 Question_11 Question_12 
       0.94        0.88        0.82        0.94        0.90        0.95 
Question_13 Question_14 Question_15 Question_16 Question_17 Question_18 
       0.94        0.96        0.93        0.94        0.93        0.95 
Question_19 Question_20 Question_21 Question_22 Question_23 
       0.93        0.85        0.92        0.85        0.72 
det(cor(EFAMatrix))
[1] -3.268877e-30

Extracting EFA factors.

length(EFA_items) tells us the number of items

len<-length(EFA_items)
len
[1] 23

We are running principal axis factoring, with arbitrary number of 10 factors and no rotation.

pcModelnr<-psych::fa(EFA_items, nfactors = 10, fm = 'pa', rotate = "none")
pcModelnr
Factor Analysis using method =  pa
Call: psych::fa(r = EFA_items, nfactors = 10, rotate = "none", fm = "pa")
Standardized loadings (pattern matrix) based upon correlation matrix
              PA1   PA2   PA3   PA4   PA5   PA6   PA7   PA8   PA9  PA10   h2
Question_1   0.54  0.12 -0.25  0.21 -0.29 -0.21 -0.08  0.09  0.03  0.10 0.57
Question_2  -0.29  0.39  0.09  0.15  0.00  0.02 -0.07 -0.09  0.05  0.08 0.29
Question_3  -0.61  0.26  0.14  0.06  0.03  0.04  0.05 -0.02  0.12  0.01 0.48
Question_4   0.62  0.09 -0.15  0.13 -0.13  0.02 -0.06  0.05 -0.06 -0.03 0.46
Question_5   0.53  0.05 -0.11  0.10 -0.19 -0.04 -0.17  0.03  0.02 -0.05 0.37
Question_6   0.57  0.05  0.52 -0.02  0.08  0.03 -0.21  0.14  0.03  0.11 0.68
Question_7   0.69  0.03  0.22  0.09  0.14  0.05 -0.17  0.01 -0.17 -0.16 0.64
Question_8   0.58  0.41 -0.20 -0.32  0.09 -0.01  0.00 -0.02 -0.06  0.00 0.65
Question_9  -0.28  0.51  0.05  0.24  0.10 -0.05 -0.01 -0.12 -0.10  0.08 0.44
Question_10  0.42  0.02  0.22 -0.02 -0.15  0.08 -0.04 -0.01  0.21 -0.01 0.30
Question_11  0.67  0.29 -0.14 -0.39  0.09  0.01  0.03  0.14  0.09  0.00 0.75
Question_12  0.64 -0.10 -0.01  0.20  0.01 -0.08  0.19  0.01 -0.03 -0.10 0.52
Question_13  0.66  0.07  0.24  0.05  0.09 -0.14  0.24  0.07  0.08 -0.05 0.59
Question_14  0.63 -0.02  0.14  0.08  0.03 -0.04  0.13 -0.13 -0.10  0.18 0.50
Question_15  0.56 -0.06  0.14 -0.07 -0.19  0.44  0.10 -0.07 -0.06  0.03 0.58
Question_16  0.67 -0.01 -0.11  0.11 -0.27  0.10  0.04 -0.10  0.06  0.01 0.57
Question_17  0.63  0.34 -0.09 -0.21  0.02 -0.03  0.02 -0.13 -0.03 -0.02 0.59
Question_18  0.67  0.00  0.23  0.14  0.06 -0.15  0.08  0.01  0.04  0.00 0.55
Question_19 -0.37  0.29  0.06  0.05 -0.08  0.05  0.02 -0.02  0.16 -0.09 0.27
Question_20  0.38 -0.20 -0.32  0.12  0.29  0.14 -0.01  0.11  0.09  0.18 0.47
Question_21  0.65 -0.09 -0.22  0.25  0.32  0.08 -0.10 -0.18  0.13 -0.09 0.72
Question_22 -0.27  0.34 -0.08  0.23  0.04  0.15  0.05  0.09  0.00 -0.07 0.29
Question_23 -0.12  0.20 -0.08  0.23  0.01  0.15  0.10  0.27 -0.10 -0.01 0.23
              u2 com
Question_1  0.43 3.1
Question_2  0.71 2.7
Question_3  0.52 1.6
Question_4  0.54 1.4
Question_5  0.63 1.7
Question_6  0.32 2.6
Question_7  0.36 1.7
Question_8  0.35 2.8
Question_9  0.56 2.5
Question_10 0.70 2.5
Question_11 0.25 2.3
Question_12 0.48 1.5
Question_13 0.41 1.8
Question_14 0.50 1.6
Question_15 0.42 2.5
Question_16 0.43 1.6
Question_17 0.41 2.0
Question_18 0.45 1.5
Question_19 0.73 2.7
Question_20 0.53 5.0
Question_21 0.28 2.6
Question_22 0.71 3.7
Question_23 0.77 4.9

                       PA1  PA2  PA3  PA4  PA5  PA6  PA7  PA8  PA9 PA10
SS loadings           6.88 1.18 0.89 0.73 0.54 0.39 0.27 0.25 0.20 0.16
Proportion Var        0.30 0.05 0.04 0.03 0.02 0.02 0.01 0.01 0.01 0.01
Cumulative Var        0.30 0.35 0.39 0.42 0.44 0.46 0.47 0.48 0.49 0.50
Proportion Explained  0.60 0.10 0.08 0.06 0.05 0.03 0.02 0.02 0.02 0.01
Cumulative Proportion 0.60 0.70 0.78 0.84 0.89 0.92 0.95 0.97 0.99 1.00

Mean item complexity =  2.5
Test of the hypothesis that 10 factors are sufficient.

The degrees of freedom for the null model are  253  and the objective function was  7.74 with Chi Square of  9873.74
The degrees of freedom for the model are 68  and the objective function was  0.09 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  1285 with the empirical chi square  63.4  with prob <  0.64 
The total number of observations was  1285  with Likelihood Chi Square =  111.33  with prob <  0.00072 

Tucker Lewis Index of factoring reliability =  0.983
RMSEA index =  0.022  and the 90 % confidence intervals are  0.014 0.03
BIC =  -375.45
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                   PA1  PA2  PA3  PA4  PA5
Correlation of (regression) scores with factors   0.97 0.83 0.83 0.80 0.75
Multiple R square of scores with factors          0.94 0.70 0.69 0.64 0.56
Minimum correlation of possible factor scores     0.88 0.39 0.38 0.28 0.12
                                                    PA6   PA7   PA8   PA9  PA10
Correlation of (regression) scores with factors    0.68  0.62  0.59  0.55  0.51
Multiple R square of scores with factors           0.46  0.39  0.35  0.30  0.26
Minimum correlation of possible factor scores     -0.08 -0.23 -0.30 -0.40 -0.49

We change rotation to oblimin.

pcModelnrob<-psych::fa(EFA_items, nfactors = 10, fm = 'pa', rotate = "oblimin")
Loading required namespace: GPArotation
Warning in GPFoblq(L, Tmat = Tmat, normalize = normalize, eps = eps, maxit =
maxit, : convergence not obtained in GPFoblq. 1000 iterations used.
pcModelnrob
Factor Analysis using method =  pa
Call: psych::fa(r = EFA_items, nfactors = 10, rotate = "oblimin", fm = "pa")
Standardized loadings (pattern matrix) based upon correlation matrix
              PA4   PA7   PA1   PA5   PA3   PA2   PA6   PA8   PA9  PA10   h2
Question_1   0.04  0.75  0.04 -0.02  0.01  0.02 -0.06  0.01 -0.03 -0.03 0.57
Question_2  -0.02  0.03 -0.11 -0.01  0.08  0.49 -0.01 -0.01 -0.07  0.08 0.29
Question_3  -0.10 -0.20 -0.02 -0.09 -0.04  0.35 -0.06  0.05 -0.14  0.15 0.48
Question_4   0.12  0.40  0.02  0.09  0.04 -0.02  0.13  0.08  0.12 -0.02 0.46
Question_5   0.06  0.47 -0.07  0.07  0.12 -0.08  0.04 -0.01  0.10  0.09 0.37
Question_6   0.01  0.02  0.05 -0.01  0.76  0.02  0.05 -0.02  0.00 -0.01 0.68
Question_7   0.09  0.02  0.09  0.15  0.38 -0.05  0.07  0.03  0.35 -0.02 0.64
Question_8   0.81  0.03 -0.04  0.00 -0.04  0.07  0.01 -0.01  0.05 -0.05 0.65
Question_9   0.03  0.00 -0.01 -0.01  0.01  0.63 -0.10  0.04  0.05 -0.06 0.44
Question_10  0.00  0.13  0.09  0.03  0.24 -0.03  0.20 -0.10 -0.11  0.21 0.30
Question_11  0.81  0.00  0.05  0.02  0.07 -0.12 -0.01  0.05 -0.08  0.05 0.75
Question_12 -0.04  0.14  0.49  0.14 -0.10 -0.11  0.09  0.04  0.12 -0.04 0.52
Question_13  0.14 -0.02  0.64  0.00  0.10 -0.02  0.00  0.01 -0.02  0.02 0.59
Question_14  0.02  0.07  0.31  0.06  0.11  0.09  0.22 -0.15 -0.02 -0.25 0.50
Question_15  0.05 -0.05 -0.01 -0.01  0.07 -0.05  0.72  0.03  0.01 -0.01 0.58
Question_16  0.02  0.39  0.09  0.10 -0.08 -0.03  0.37 -0.08 -0.01  0.05 0.57
Question_17  0.61  0.06  0.07  0.03 -0.03  0.11  0.09 -0.12  0.07 -0.01 0.59
Question_18 -0.01  0.11  0.47  0.09  0.22  0.00 -0.01 -0.06  0.03 -0.03 0.55
Question_19  0.00 -0.05 -0.02 -0.08 -0.08  0.27 -0.01  0.04 -0.08  0.26 0.27
Question_20  0.03  0.02 -0.06  0.58  0.01 -0.10  0.01  0.15 -0.18 -0.17 0.47
Question_21  0.02  0.01  0.06  0.79  0.00  0.04  0.01 -0.07  0.08  0.05 0.72
Question_22 -0.01 -0.01 -0.01  0.05 -0.10  0.36  0.04  0.29  0.02  0.11 0.29
Question_23 -0.06  0.08  0.06 -0.07 -0.03  0.18  0.07  0.43  0.03 -0.02 0.23
              u2 com
Question_1  0.43 1.0
Question_2  0.71 1.3
Question_3  0.52 3.0
Question_4  0.54 1.9
Question_5  0.63 1.5
Question_6  0.32 1.0
Question_7  0.36 2.7
Question_8  0.35 1.0
Question_9  0.56 1.1
Question_10 0.70 4.8
Question_11 0.25 1.1
Question_12 0.48 1.8
Question_13 0.41 1.2
Question_14 0.50 4.1
Question_15 0.42 1.1
Question_16 0.43 2.5
Question_17 0.41 1.3
Question_18 0.45 1.7
Question_19 0.73 2.7
Question_20 0.53 1.7
Question_21 0.28 1.1
Question_22 0.71 2.4
Question_23 0.77 1.6

                       PA4  PA7  PA1  PA5  PA3  PA2  PA6  PA8  PA9 PA10
SS loadings           2.06 1.64 1.56 1.41 1.25 1.24 1.18 0.44 0.38 0.34
Proportion Var        0.09 0.07 0.07 0.06 0.05 0.05 0.05 0.02 0.02 0.01
Cumulative Var        0.09 0.16 0.23 0.29 0.34 0.40 0.45 0.47 0.49 0.50
Proportion Explained  0.18 0.14 0.14 0.12 0.11 0.11 0.10 0.04 0.03 0.03
Cumulative Proportion 0.18 0.32 0.46 0.58 0.69 0.80 0.90 0.94 0.97 1.00

 With factor correlations of 
       PA4   PA7   PA1   PA5   PA3   PA2   PA6   PA8   PA9  PA10
PA4   1.00  0.49  0.46  0.42  0.38 -0.13  0.42 -0.12  0.20 -0.11
PA7   0.49  1.00  0.50  0.48  0.23 -0.17  0.43 -0.12  0.25 -0.14
PA1   0.46  0.50  1.00  0.47  0.56 -0.19  0.46 -0.22  0.27 -0.15
PA5   0.42  0.48  0.47  1.00  0.27 -0.30  0.38 -0.03  0.28 -0.28
PA3   0.38  0.23  0.56  0.27  1.00 -0.17  0.43 -0.19  0.21 -0.04
PA2  -0.13 -0.17 -0.19 -0.30 -0.17  1.00 -0.28  0.13  0.05  0.19
PA6   0.42  0.43  0.46  0.38  0.43 -0.28  1.00 -0.17  0.22 -0.07
PA8  -0.12 -0.12 -0.22 -0.03 -0.19  0.13 -0.17  1.00 -0.16  0.01
PA9   0.20  0.25  0.27  0.28  0.21  0.05  0.22 -0.16  1.00 -0.05
PA10 -0.11 -0.14 -0.15 -0.28 -0.04  0.19 -0.07  0.01 -0.05  1.00

Mean item complexity =  1.9
Test of the hypothesis that 10 factors are sufficient.

The degrees of freedom for the null model are  253  and the objective function was  7.74 with Chi Square of  9873.74
The degrees of freedom for the model are 68  and the objective function was  0.09 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  1285 with the empirical chi square  63.4  with prob <  0.64 
The total number of observations was  1285  with Likelihood Chi Square =  111.33  with prob <  0.00072 

Tucker Lewis Index of factoring reliability =  0.983
RMSEA index =  0.022  and the 90 % confidence intervals are  0.014 0.03
BIC =  -375.45
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                   PA4  PA7  PA1  PA5  PA3  PA2
Correlation of (regression) scores with factors   0.93 0.87 0.88 0.89 0.87 0.81
Multiple R square of scores with factors          0.86 0.76 0.77 0.78 0.76 0.66
Minimum correlation of possible factor scores     0.72 0.52 0.54 0.57 0.51 0.32
                                                   PA6   PA8   PA9  PA10
Correlation of (regression) scores with factors   0.84  0.63  0.66  0.60
Multiple R square of scores with factors          0.70  0.40  0.43  0.35
Minimum correlation of possible factor scores     0.41 -0.21 -0.14 -0.29

Q8. Since a X-factor model is not parsimonious either, let’s look at the scree plot. According to the scree plot, after what number of factors does it seems like minimal additional variance is explained?

plot (pcModelnrob$values, type = "b")

Q9. Fix the EFA to that number and look to see if the factor loadings of the items make intuitive sense by looking at which scale items are included in each factor loading. You will need to refer to the scale items for reflection (see The SPSS Anxiety Questionnaire (SAQ) png file on Learn). Reduce the number of factors by 1 and explore that factor structure the same way, and repeat by reducing that number of factors by 1 again. Take your time with this and use another sheet within your codebook to help you understand various factor structures. You can also talk to a friend from class/your teammate and get their opinions on this (a common practice amongst psychology researchers while doing a factor analysis). After exploring a couple of options, which factor model seems to make the most sense?

Scree plot shows up to 4 factors, so we restrict the number of factors to four.

pcModel4f<-psych::fa(EFA_items, nfactors = 4, fm = 'pa', rotate = "oblimin")
pcModel4f
Factor Analysis using method =  pa
Call: psych::fa(r = EFA_items, nfactors = 4, rotate = "oblimin", fm = "pa")
Standardized loadings (pattern matrix) based upon correlation matrix
              PA1   PA3   PA4   PA2    h2   u2 com
Question_1   0.57 -0.02  0.13  0.06 0.383 0.62 1.1
Question_2  -0.06  0.06  0.00  0.52 0.277 0.72 1.1
Question_3  -0.32 -0.04 -0.11  0.41 0.474 0.53 2.1
Question_4   0.54  0.07  0.16  0.03 0.450 0.55 1.2
Question_5   0.42  0.09  0.12 -0.02 0.308 0.69 1.3
Question_6  -0.14  0.79  0.03  0.00 0.548 0.45 1.1
Question_7   0.20  0.52  0.08 -0.03 0.515 0.49 1.4
Question_8   0.01 -0.07  0.85  0.05 0.667 0.33 1.0
Question_9   0.02  0.03  0.02  0.63 0.366 0.63 1.0
Question_10  0.02  0.41  0.06 -0.03 0.222 0.78 1.1
Question_11 -0.04  0.05  0.78 -0.11 0.673 0.33 1.1
Question_12  0.49  0.27 -0.06 -0.10 0.468 0.53 1.7
Question_13  0.13  0.54  0.11 -0.01 0.481 0.52 1.2
Question_14  0.23  0.43  0.05 -0.07 0.413 0.59 1.6
Question_15  0.13  0.31  0.12 -0.14 0.300 0.70 2.1
Question_16  0.49  0.14  0.11 -0.08 0.468 0.53 1.3
Question_17  0.09  0.12  0.64  0.06 0.567 0.43 1.1
Question_18  0.24  0.58 -0.03 -0.01 0.526 0.47 1.3
Question_19 -0.16 -0.05  0.01  0.36 0.224 0.78 1.4
Question_20  0.42 -0.14  0.03 -0.22 0.235 0.77 1.8
Question_21  0.54  0.09  0.05 -0.11 0.448 0.55 1.2
Question_22  0.15 -0.14 -0.03  0.47 0.244 0.76 1.4
Question_23  0.20 -0.08 -0.07  0.29 0.095 0.91 2.1

                       PA1  PA3  PA4  PA2
SS loadings           2.78 2.71 2.26 1.61
Proportion Var        0.12 0.12 0.10 0.07
Cumulative Var        0.12 0.24 0.34 0.41
Proportion Explained  0.30 0.29 0.24 0.17
Cumulative Proportion 0.30 0.59 0.83 1.00

 With factor correlations of 
      PA1   PA3   PA4   PA2
PA1  1.00  0.53  0.55 -0.37
PA3  0.53  1.00  0.52 -0.35
PA4  0.55  0.52  1.00 -0.23
PA2 -0.37 -0.35 -0.23  1.00

Mean item complexity =  1.4
Test of the hypothesis that 4 factors are sufficient.

The degrees of freedom for the null model are  253  and the objective function was  7.74 with Chi Square of  9873.74
The degrees of freedom for the model are 167  and the objective function was  0.55 

The root mean square of the residuals (RMSR) is  0.03 
The df corrected root mean square of the residuals is  0.04 

The harmonic number of observations is  1285 with the empirical chi square  534.9  with prob <  4.2e-40 
The total number of observations was  1285  with Likelihood Chi Square =  698.46  with prob <  4.2e-66 

Tucker Lewis Index of factoring reliability =  0.916
RMSEA index =  0.05  and the 90 % confidence intervals are  0.046 0.054
BIC =  -497.01
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                   PA1  PA3  PA4  PA2
Correlation of (regression) scores with factors   0.90 0.91 0.92 0.83
Multiple R square of scores with factors          0.81 0.83 0.85 0.70
Minimum correlation of possible factor scores     0.62 0.65 0.71 0.39

Q10. How much total variance is accounted for by this final factor solution (e.g., total cumulative%)? What is the amount of variance accounted for by each factor?

Q12. Make a note with yourself on the final items and which factor they belong to.

Q13. Name each of the factors. What is your conclusion from the EFA?

psych::fa.diagram(pcModel4f)

Task 2: Confirmatory Factor Analysis

Q1. Change your filter to select the CFA subsample. For this task, we want to examine whether the decision on how items should load on the SAQ based on EFA can be replicated on an independent sample. We are going to refer to the criteria for model fit mentioned in the CFA lecture.

CFA <- dplyr::filter(df, FAS%in% c("CFA"))
str(CFA)
tibble [1,286 × 25] (S3: tbl_df/tbl/data.frame)
 $ factor_analysis_sample: chr [1:1286] "2" "2" "2" "2" ...
 $ Question_1            : num [1:1286] 4 3 2 3 3 2 2 3 2 2 ...
 $ Question_2            : num [1:1286] 1 1 2 2 1 1 1 1 1 1 ...
 $ Question_3            : num [1:1286] 1 1 3 3 1 2 3 2 3 4 ...
 $ Question_4            : num [1:1286] 4 5 4 4 4 3 3 3 2 2 ...
 $ Question_5            : num [1:1286] 4 4 2 4 2 3 4 4 3 3 ...
 $ Question_6            : num [1:1286] 2 2 3 4 2 3 2 1 1 2 ...
 $ Question_7            : num [1:1286] 2 2 5 4 5 3 5 2 1 1 ...
 $ Question_8            : num [1:1286] 2 2 3 3 1 2 2 3 1 1 ...
 $ Question_9            : num [1:1286] 1 1 4 2 1 1 4 5 1 5 ...
 $ Question_10           : num [1:1286] 3 2 1 4 3 3 3 5 2 3 ...
 $ Question_11           : num [1:1286] 2 2 1 3 3 2 3 2 1 1 ...
 $ Question_12           : num [1:1286] 4 5 5 4 5 3 3 4 3 3 ...
 $ Question_13           : num [1:1286] 2 1 4 4 3 3 4 2 1 1 ...
 $ Question_14           : num [1:1286] 2 3 4 4 4 3 3 2 1 2 ...
 $ Question_15           : num [1:1286] 2 1 2 4 2 3 5 3 3 4 ...
 $ Question_16           : num [1:1286] 4 5 2 4 2 3 2 3 2 3 ...
 $ Question_17           : num [1:1286] 3 2 4 4 3 3 2 3 2 2 ...
 $ Question_18           : num [1:1286] 4 3 5 4 3 2 4 3 1 1 ...
 $ Question_19           : num [1:1286] 2 1 5 2 3 2 2 4 4 5 ...
 $ Question_20           : num [1:1286] 5 5 3 4 2 3 4 5 3 4 ...
 $ Question_21           : num [1:1286] 4 3 5 4 4 3 4 4 2 2 ...
 $ Question_22           : num [1:1286] 2 2 5 3 4 2 4 4 2 3 ...
 $ Question_23           : num [1:1286] 4 5 5 4 4 3 5 4 3 2 ...
 $ FAS                   : chr [1:1286] "CFA" "CFA" "CFA" "CFA" ...

Selecting numeric items only.

library(dplyr)
CFA_items <- CFA %>% select(Question_1, Question_2, Question_3, Question_4, Question_5, Question_6, Question_7, Question_8, Question_9, Question_10, Question_11, Question_12, Question_13, Question_14, Question_15, Question_16, Question_17, Question_18, Question_19, Question_20, Question_21, Question_22, Question_23)
str(CFA_items)
tibble [1,286 × 23] (S3: tbl_df/tbl/data.frame)
 $ Question_1 : num [1:1286] 4 3 2 3 3 2 2 3 2 2 ...
 $ Question_2 : num [1:1286] 1 1 2 2 1 1 1 1 1 1 ...
 $ Question_3 : num [1:1286] 1 1 3 3 1 2 3 2 3 4 ...
 $ Question_4 : num [1:1286] 4 5 4 4 4 3 3 3 2 2 ...
 $ Question_5 : num [1:1286] 4 4 2 4 2 3 4 4 3 3 ...
 $ Question_6 : num [1:1286] 2 2 3 4 2 3 2 1 1 2 ...
 $ Question_7 : num [1:1286] 2 2 5 4 5 3 5 2 1 1 ...
 $ Question_8 : num [1:1286] 2 2 3 3 1 2 2 3 1 1 ...
 $ Question_9 : num [1:1286] 1 1 4 2 1 1 4 5 1 5 ...
 $ Question_10: num [1:1286] 3 2 1 4 3 3 3 5 2 3 ...
 $ Question_11: num [1:1286] 2 2 1 3 3 2 3 2 1 1 ...
 $ Question_12: num [1:1286] 4 5 5 4 5 3 3 4 3 3 ...
 $ Question_13: num [1:1286] 2 1 4 4 3 3 4 2 1 1 ...
 $ Question_14: num [1:1286] 2 3 4 4 4 3 3 2 1 2 ...
 $ Question_15: num [1:1286] 2 1 2 4 2 3 5 3 3 4 ...
 $ Question_16: num [1:1286] 4 5 2 4 2 3 2 3 2 3 ...
 $ Question_17: num [1:1286] 3 2 4 4 3 3 2 3 2 2 ...
 $ Question_18: num [1:1286] 4 3 5 4 3 2 4 3 1 1 ...
 $ Question_19: num [1:1286] 2 1 5 2 3 2 2 4 4 5 ...
 $ Question_20: num [1:1286] 5 5 3 4 2 3 4 5 3 4 ...
 $ Question_21: num [1:1286] 4 3 5 4 4 3 4 4 2 2 ...
 $ Question_22: num [1:1286] 2 2 5 3 4 2 4 4 2 3 ...
 $ Question_23: num [1:1286] 4 5 5 4 4 3 5 4 3 2 ...

Correlating items.

CFAMatrix <- cor(CFA_items)
cored2 <- round (CFAMatrix, 2)
corrplot::corrplot(cored2)

Q2 - 6. Conducting CFA based on the factor structures above. Also, get the path diagram, and model fit measures. 3. Click on ‘Factor 1’ and change it to the name that you decided for Factor 1 in the previous exercise. Drag the relevant items to the space below. 4. ‘Add New Factor’ and change the name to your decided name for Factor 2 in the previous exercise. Add the relevant items. 5. Do the same for the rest of the factors. 6. Under Additional output, tick Path diagram. Path diagram shows you a figure scheme of all observed and latent variables where observed variables load on their corresponding factors and the factors are correlated with each other.

model <- "
Factor_1 =~ Question_1 + Question_21 + Question_4 + Question_16 + Question_12 + Question_20 + Question_5 + Question_3
Factor_2 =~ Question_6 + Question_18 + Question_13 + Question_7 + Question_14 + Question_10
Factor_3 =~ Question_8 + Question_11 + Question_17
Factor_4 =~ Question_9 + Question_2 + Question_22"
fit <- lavaan::cfa(model, data=CFA_items)
lavaan::parameterEstimates(fit)
           lhs op         rhs    est    se       z pvalue ci.lower ci.upper
1     Factor_1 =~  Question_1  1.000 0.000      NA     NA    1.000    1.000
2     Factor_1 =~ Question_21  1.272 0.067  18.934      0    1.140    1.403
3     Factor_1 =~  Question_4  1.158 0.063  18.342      0    1.034    1.281
4     Factor_1 =~ Question_16  1.190 0.063  19.026      0    1.068    1.313
5     Factor_1 =~ Question_12  1.180 0.062  18.955      0    1.058    1.302
6     Factor_1 =~ Question_20  0.931 0.065  14.432      0    0.805    1.058
7     Factor_1 =~  Question_5  1.023 0.063  16.318      0    0.900    1.146
8     Factor_1 =~  Question_3 -1.267 0.071 -17.912      0   -1.405   -1.128
9     Factor_2 =~  Question_6  1.000 0.000      NA     NA    1.000    1.000
10    Factor_2 =~ Question_18  1.162 0.053  21.949      0    1.058    1.266
11    Factor_2 =~ Question_13  0.934 0.046  20.221      0    0.844    1.025
12    Factor_2 =~  Question_7  1.036 0.052  19.968      0    0.934    1.137
13    Factor_2 =~ Question_14  0.934 0.047  19.819      0    0.841    1.026
14    Factor_2 =~ Question_10  0.497 0.039  12.718      0    0.421    0.574
15    Factor_3 =~  Question_8  1.000 0.000      NA     NA    1.000    1.000
16    Factor_3 =~ Question_11  1.050 0.043  24.254      0    0.965    1.135
17    Factor_3 =~ Question_17  1.068 0.044  24.482      0    0.982    1.153
18    Factor_4 =~  Question_9  1.000 0.000      NA     NA    1.000    1.000
19    Factor_4 =~  Question_2  0.632 0.069   9.193      0    0.497    0.766
20    Factor_4 =~ Question_22  0.652 0.076   8.631      0    0.504    0.800
21  Question_1 ~~  Question_1  0.449 0.019  23.191      0    0.411    0.486
22 Question_21 ~~ Question_21  0.552 0.025  22.500      0    0.504    0.600
23  Question_4 ~~  Question_4  0.529 0.023  22.894      0    0.484    0.575
24 Question_16 ~~ Question_16  0.472 0.021  22.431      0    0.431    0.514
25 Question_12 ~~ Question_12  0.472 0.021  22.484      0    0.431    0.514
26 Question_20 ~~ Question_20  0.807 0.033  24.318      0    0.742    0.872
27  Question_5 ~~  Question_5  0.654 0.027  23.806      0    0.600    0.707
28  Question_3 ~~  Question_3  0.702 0.030  23.136      0    0.643    0.762
29  Question_6 ~~  Question_6  0.752 0.033  22.647      0    0.687    0.817
30 Question_18 ~~ Question_18  0.471 0.024  19.446      0    0.423    0.518
31 Question_13 ~~ Question_13  0.493 0.023  21.734      0    0.449    0.537
32  Question_7 ~~  Question_7  0.644 0.029  21.953      0    0.587    0.702
33 Question_14 ~~ Question_14  0.542 0.025  22.072      0    0.494    0.590
34 Question_10 ~~ Question_10  0.661 0.027  24.602      0    0.608    0.714
35  Question_8 ~~  Question_8  0.345 0.018  18.829      0    0.309    0.381
36 Question_11 ~~ Question_11  0.313 0.018  17.344      0    0.277    0.348
37 Question_17 ~~ Question_17  0.299 0.018  16.692      0    0.264    0.334
38  Question_9 ~~  Question_9  1.096 0.065  16.881      0    0.969    1.223
39  Question_2 ~~  Question_2  0.477 0.027  17.576      0    0.424    0.530
40 Question_22 ~~ Question_22  0.863 0.041  20.876      0    0.782    0.944
41    Factor_1 ~~    Factor_1  0.260 0.023  11.303      0    0.215    0.305
42    Factor_2 ~~    Factor_2  0.505 0.042  11.905      0    0.422    0.589
43    Factor_3 ~~    Factor_3  0.414 0.029  14.106      0    0.357    0.472
44    Factor_4 ~~    Factor_4  0.446 0.065   6.904      0    0.320    0.573
45    Factor_1 ~~    Factor_2  0.302 0.021  14.147      0    0.260    0.344
46    Factor_1 ~~    Factor_3  0.220 0.016  13.580      0    0.188    0.251
47    Factor_1 ~~    Factor_4 -0.166 0.019  -8.669      0   -0.204   -0.129
48    Factor_2 ~~    Factor_3  0.272 0.021  12.983      0    0.231    0.313
49    Factor_2 ~~    Factor_4 -0.203 0.025  -8.033      0   -0.253   -0.153
50    Factor_3 ~~    Factor_4 -0.078 0.020  -3.984      0   -0.116   -0.040

Q7. Report Model Fit statistics for the four factor model. Do our findings meet the factor loading criteria?

Q8. Compare the fit statistics of the four-factor model of the scale to a one-factor model (assuming no underlying factor solution for SAQ).

model2 <- "
Factor_1 =~ Question_1 + Question_21 + Question_4 + Question_16 + Question_12 + Question_20 + Question_5 + Question_3 + Question_6 + Question_18 + Question_13 + Question_7 + Question_14 + Question_10 + Question_8 + Question_11 + Question_17 + Question_9 + Question_2 + Question_22"
fit2 <- lavaan::cfa(model2, data=CFA_items)
lavaan::parameterEstimates(fit2)
           lhs op         rhs    est    se       z pvalue ci.lower ci.upper
1     Factor_1 =~  Question_1  1.000 0.000      NA     NA    1.000    1.000
2     Factor_1 =~ Question_21  1.267 0.069  18.416      0    1.132    1.401
3     Factor_1 =~  Question_4  1.147 0.065  17.775      0    1.020    1.273
4     Factor_1 =~ Question_16  1.175 0.064  18.384      0    1.050    1.300
5     Factor_1 =~ Question_12  1.209 0.064  18.811      0    1.083    1.334
6     Factor_1 =~ Question_20  0.881 0.065  13.487      0    0.753    1.009
7     Factor_1 =~  Question_5  1.020 0.064  15.919      0    0.894    1.146
8     Factor_1 =~  Question_3 -1.229 0.072 -17.090      0   -1.370   -1.088
9     Factor_1 =~  Question_6  1.212 0.075  16.164      0    1.065    1.359
10    Factor_1 =~ Question_18  1.539 0.077  19.879      0    1.387    1.691
11    Factor_1 =~ Question_13  1.285 0.068  18.872      0    1.151    1.418
12    Factor_1 =~  Question_7  1.414 0.076  18.558      0    1.265    1.563
13    Factor_1 =~ Question_14  1.283 0.069  18.513      0    1.147    1.419
14    Factor_1 =~ Question_10  0.693 0.056  12.332      0    0.583    0.803
15    Factor_1 =~  Question_8  0.845 0.057  14.814      0    0.733    0.957
16    Factor_1 =~ Question_11  1.047 0.060  17.441      0    0.929    1.164
17    Factor_1 =~ Question_17  1.076 0.060  17.794      0    0.958    1.195
18    Factor_1 =~  Question_9 -0.534 0.075  -7.103      0   -0.682   -0.387
19    Factor_1 =~  Question_2 -0.404 0.049  -8.192      0   -0.501   -0.308
20    Factor_1 =~ Question_22 -0.539 0.063  -8.582      0   -0.662   -0.416
21  Question_1 ~~  Question_1  0.465 0.019  23.968      0    0.427    0.503
22 Question_21 ~~ Question_21  0.581 0.025  23.573      0    0.533    0.629
23  Question_4 ~~  Question_4  0.557 0.023  23.833      0    0.511    0.603
24 Question_16 ~~ Question_16  0.504 0.021  23.587      0    0.462    0.546
25 Question_12 ~~ Question_12  0.478 0.020  23.382      0    0.438    0.518
26 Question_20 ~~ Question_20  0.843 0.034  24.764      0    0.777    0.910
27  Question_5 ~~  Question_5  0.672 0.028  24.358      0    0.618    0.726
28  Question_3 ~~  Question_3  0.751 0.031  24.059      0    0.690    0.812
29  Question_6 ~~  Question_6  0.899 0.037  24.303      0    0.827    0.972
30 Question_18 ~~ Question_18  0.575 0.025  22.695      0    0.526    0.625
31 Question_13 ~~ Question_13  0.532 0.023  23.350      0    0.487    0.576
32  Question_7 ~~  Question_7  0.698 0.030  23.507      0    0.640    0.757
33 Question_14 ~~ Question_14  0.581 0.025  23.529      0    0.533    0.630
34 Question_10 ~~ Question_10  0.669 0.027  24.895      0    0.616    0.722
35  Question_8 ~~  Question_8  0.585 0.024  24.570      0    0.539    0.632
36 Question_11 ~~ Question_11  0.502 0.021  23.949      0    0.461    0.543
37 Question_17 ~~ Question_17  0.488 0.021  23.826      0    0.448    0.529
38  Question_9 ~~  Question_9  1.472 0.058  25.232      0    1.358    1.587
39  Question_2 ~~  Question_2  0.615 0.024  25.186      0    0.567    0.663
40 Question_22 ~~ Question_22  0.982 0.039  25.167      0    0.905    1.058
41    Factor_1 ~~    Factor_1  0.244 0.022  11.075      0    0.201    0.287

Q9. Report Model Fit statistics for the one-factor model. Do our findings meet the factor loading criteria?

Q10. Comparing the 4-factor and the one-factor model, which one is a better fit? What is your conclusion from the CFA?