# Download data and Store in data1
data1 <- read.csv(url("https://www.dropbox.com/s/ypygopkc9dzwhn6/data1.csv?dl=1"), header = TRUE)
# Remove first column and store in efaData
efaData <- data1[,2:29]
# Load Packages
library(psych)
library(lavaan)
library(semTools)
library(semPlot)
An exploratory factor analysis (EFA) was conducted to identify underlying factors among the survey responses. Prior to EFA, initial analyses will be performed to assess if the dataset is suited for an exploratory factor analysis. Kaiser-Meyer-Olkin measure of sampling adequacy was used to measure how suited the data is for factor analysis. This test aims to measure the adequacy of the data for factor analysis with an acceptable value of at least 0.60 (Kaiser and Rice, 1974). Bartlett’s Test of Sphericity was used to test the hypothesis that the correlation matrix is an identity matrix (Snedecor and Cochran, 1980). Once the dataset is established to be suited for the analysis, an exploratory factor analysis will be performed. An exploratory factor analysis is a statistical technique that analyze patterns of linear relationship that aims to identify empirically distinct or unobserved constructs (Sakaluk and Short, 2016).
Initially, the factorability of the survey questionnaire was examined using Kaiser-Meyer-Olkin (KMO) measure of sampling adequacy, and Bartlett’s test of Sphericity. The KMO measure of sampling adequacy is 0.99 which is considered marvelous. Moreover, Bartlett’s test of sphericity was significant \(\chi^2(378) = 129017, p < 0.001)\). Given all these indicators, factor analysis is deemed to be appropriate for the survey items.
KMO(efaData)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = efaData)
## Overall MSA = 0.99
## MSA for each item =
## JST_1 JST_2 JST_3 JST_4 JST_5 JST_6 JST_7 JST_8 JST_9 JST_10 OS_1
## 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.99 0.98 0.97 0.99
## OS_2 OS_3 OS_4 OS_5 JSA_1 JSA_2 JSA_3 JSA_4 JSA_5 JSA_6 JSA_7
## 0.99 0.99 0.99 0.98 0.98 0.98 0.99 0.99 0.98 0.99 0.99
## JSA_8 JSA_9 JSA_10 JSA_11 JSA_12 JSA_13
## 0.98 0.99 0.98 0.99 0.98 0.99
cortest(efaData)
## Tests of correlation matrices
## Call:cortest(R1 = efaData)
## Chi Square value 129017 with df = 378 with probability < 0
EFA was run iteratively to achieve a simple factor structure where every statements has a primary factor loading of at least 0.50 with no cross-loading among factors. Items that did not meet these criteria were removed. The following results illustrate the entire process undertaken by the researchers to achieve a simple 4-factor structure using the items included in the survey.
# Show factor loadings
efaDataFinal <- efaData[,-c(6)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 3, cutoff = 0.40, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 -0.718
## JST_2 -0.655
## JST_3 -0.599
## JST_4 -0.741
## JST_5 -0.734
## JST_7 -0.498
## JST_8 -0.575
## JST_9 -0.414 -0.440
## JST_10 -0.814
## OS_1 0.447
## OS_2 0.764
## OS_3 0.403
## OS_4
## OS_5 0.568
## JSA_1 0.798
## JSA_2 0.565 0.407
## JSA_3 0.508
## JSA_4 0.607
## JSA_5 0.475 0.583
## JSA_6 0.412 0.471
## JSA_7 0.577 0.460
## JSA_8 0.463 0.550
## JSA_9 0.561 0.416
## JSA_10 0.577
## JSA_11 0.489
## JSA_12 0.735
## JSA_13 0.673
##
## ML1 ML2 ML3
## SS loadings 5.243 5.154 2.908
## Proportion Var 0.194 0.191 0.108
## Cumulative Var 0.194 0.385 0.493
Initially, JST_6 is removed as per recommendation.
Cut-off is set to 0.40 to help researchers identify which item should be
removed based on their factor loadings. The result shows no
cross-loading (items with factor loadings of at least 0.50 in two or
more factors) but some items have factor loading that is less than 0.5.
From among these items, OS_4 has the lowest. Hence, it is
removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 3, cutoff = 0.40, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.721
## JST_2 0.658
## JST_3 0.600
## JST_4 0.741
## JST_5 0.736
## JST_7 0.500
## JST_8 0.578
## JST_9 0.415 -0.440
## JST_10 -0.811
## OS_1 -0.450
## OS_2 0.764
## OS_3 -0.407
## OS_5 0.565
## JSA_1 0.797
## JSA_2 0.565 0.405
## JSA_3 -0.510
## JSA_4 0.609
## JSA_5 -0.475 0.583
## JSA_6 -0.413 0.469
## JSA_7 -0.581 0.454
## JSA_8 -0.470 0.541
## JSA_9 0.561 0.413
## JSA_10 0.572
## JSA_11 0.488
## JSA_12 0.727
## JSA_13 0.669
##
## ML1 ML2 ML3
## SS loadings 5.182 5.018 2.756
## Proportion Var 0.199 0.193 0.106
## Cumulative Var 0.199 0.392 0.498
After removing OS_4, the second iteration of EFA was
conducted. Still, cross-loading is not observed but some items have
factor loading that is less than 0.5. From among the items,
OS_3 has the lowest. Thus, it is removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 3, cutoff = 0.40, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.721
## JST_2 0.658
## JST_3 0.598
## JST_4 0.740
## JST_5 0.734
## JST_7 0.499
## JST_8 0.576
## JST_9 0.414 -0.443
## JST_10 -0.811
## OS_1 -0.451
## OS_2 0.765
## OS_5 0.561
## JSA_1 0.798
## JSA_2 0.566 0.404
## JSA_3 -0.509
## JSA_4 0.610
## JSA_5 -0.473 0.584
## JSA_6 -0.416 0.467
## JSA_7 -0.583 0.450
## JSA_8 -0.473 0.537
## JSA_9 0.562 0.412
## JSA_10 0.567
## JSA_11 0.489
## JSA_12 0.720
## JSA_13 0.671
##
## ML1 ML2 ML3
## SS loadings 5.013 4.958 2.618
## Proportion Var 0.201 0.198 0.105
## Cumulative Var 0.201 0.399 0.504
After removing OS_3, the third iteration of EFA was
conducted. Similar to the previous result, cross-loading is not observed
but some items have factor loading score of less than 0.5. From among
the items, JST_9 has the lowest. Thus, it is removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13,9)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 3, cutoff = 0.40, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.725
## JST_2 0.663
## JST_3 0.599
## JST_4 0.746
## JST_5 0.738
## JST_7 0.497
## JST_8 0.575
## JST_10 -0.808
## OS_1 -0.454
## OS_2 0.765
## OS_5 0.561
## JSA_1 0.797
## JSA_2 0.565 0.401
## JSA_3 -0.512
## JSA_4 0.608
## JSA_5 -0.474 0.584
## JSA_6 -0.423 0.457
## JSA_7 -0.588 0.443
## JSA_8 -0.478 0.529
## JSA_9 0.562 0.408
## JSA_10 0.572
## JSA_11 0.491
## JSA_12 0.723
## JSA_13 0.672
##
## ML1 ML2 ML3
## SS loadings 4.897 4.751 2.567
## Proportion Var 0.204 0.198 0.107
## Cumulative Var 0.204 0.402 0.509
After removing JST_9, the fourth iteration of EFA was
conducted. Still, cross-loading is not observed but some items have
factor loading score of less than 0.5. From among the items,
OS_1 has the lowest. Hence, it is removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13,9,11)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 3, cutoff = 0.40, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.715
## JST_2 0.658
## JST_3 0.596
## JST_4 0.742
## JST_5 0.738
## JST_7 0.492
## JST_8 0.570
## JST_10 -0.808
## OS_2 0.763
## OS_5 0.562
## JSA_1 0.799
## JSA_2 0.564 0.402
## JSA_3 -0.508
## JSA_4 0.609
## JSA_5 -0.470 0.584
## JSA_6 -0.419 0.460
## JSA_7 -0.581 0.447
## JSA_8 -0.471 0.534
## JSA_9 0.562 0.409
## JSA_10 0.574
## JSA_11 0.491
## JSA_12 0.727
## JSA_13 0.673
##
## ML1 ML2 ML3
## SS loadings 4.615 4.641 2.556
## Proportion Var 0.201 0.202 0.111
## Cumulative Var 0.201 0.402 0.514
After removing OS_1, the fifth iteration of EFA was
done. Still, cross-loading is not observed but some items have factor
loading score of less than 0.5. From among the items, JSA_6
has the lowest. Hence, it is removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13,9,11,21)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 2, cutoff = 0.50, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.72
## JST_2 0.67
## JST_3 0.60
## JST_4 0.75
## JST_5 0.75
## JST_7
## JST_8 0.58
## JST_10 -0.81
## OS_2 0.77
## OS_5 0.54
## JSA_1 0.81
## JSA_2 0.58
## JSA_3 -0.52
## JSA_4 0.61
## JSA_5 0.58
## JSA_7 -0.59
## JSA_8 0.53
## JSA_9 0.57
## JSA_10 0.57
## JSA_11
## JSA_12 0.71
## JSA_13 0.67
##
## ML1 ML2 ML3
## SS loadings 4.58 4.65 2.22
## Proportion Var 0.21 0.21 0.10
## Cumulative Var 0.21 0.42 0.52
After removing JSA_6, the sixth iteration of EFA was
done setting the cutoff value to 0.50. Still, cross-loading is no longer
observed but JSA_11 has a factor loading of less than 0.50.
Thus, it is removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13,9,11,21,26)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 2, cutoff = 0.50, sort = FALSE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.72
## JST_2 0.67
## JST_3 0.61
## JST_4 0.75
## JST_5 0.75
## JST_7
## JST_8 0.58
## JST_10 -0.81
## OS_2 0.76
## OS_5 0.54
## JSA_1 0.80
## JSA_2 0.58
## JSA_3 -0.52
## JSA_4 0.60
## JSA_5 0.57
## JSA_7 -0.59
## JSA_8 0.53
## JSA_9 0.56
## JSA_10 0.57
## JSA_12 0.71
## JSA_13 0.65
##
## ML1 ML2 ML3
## SS loadings 4.54 4.33 2.16
## Proportion Var 0.22 0.21 0.10
## Cumulative Var 0.22 0.42 0.53
After removing JSA_11, the seventh iteration of EFA was
done setting the cutoff value to 0.50. Still, cross-loading is not
observed but JSA_7 has a factor loading of less than 0.50.
Thus, it is removed.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13,9,11,21,26,7)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 2, cutoff = 0.50, sort = TRUE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.72
## JST_2 0.67
## JST_3 0.60
## JST_4 0.74
## JST_5 0.74
## JST_8 0.56
## JSA_3 -0.51
## JSA_7 -0.60
## JST_10 -0.81
## OS_2 0.75
## JSA_1 0.80
## JSA_2 0.57
## JSA_4 0.61
## JSA_5 0.58
## JSA_9 0.56
## JSA_13 0.66
## OS_5 0.54
## JSA_8 0.53
## JSA_10 0.57
## JSA_12 0.71
##
## ML1 ML2 ML3
## SS loadings 4.23 4.25 2.14
## Proportion Var 0.21 0.21 0.11
## Cumulative Var 0.21 0.42 0.53
After removing JSA_7, the eight iteration of EFA was
done while arranging the items based on their factor loadings.
Similarly, cross-loading is no longer observed and all items has a
factor loading of at least 0.50. Thus, a good factor structure is
achieved and items are examined to create the final factor model.
# KMO
KMO(efaDataFinal)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = efaDataFinal)
## Overall MSA = 0.98
## MSA for each item =
## JST_1 JST_2 JST_3 JST_4 JST_5 JST_8 JST_10 OS_2 OS_5 JSA_1 JSA_2
## 0.98 0.99 0.99 0.98 0.98 0.99 0.97 0.99 0.98 0.98 0.98
## JSA_3 JSA_4 JSA_5 JSA_7 JSA_8 JSA_9 JSA_10 JSA_12 JSA_13
## 0.99 0.98 0.98 0.98 0.98 0.98 0.98 0.97 0.98
# Bartlett's Test
cortest(efaDataFinal)
## Tests of correlation matrices
## Call:cortest(R1 = efaDataFinal)
## Chi Square value 63590.54 with df = 190 with probability < 0
The factorability of the survey questionnaire was examined using Kaiser-Meyer-Olkin (KMO) measure of sampling adequacy, and Bartlett’s test of Sphericity. The KMO measure of sampling adequacy is 0.98 which is considered marvelous. Moreover, Bartlett’s test of sphericity was significant \(\chi^2(561) = 63590.54, p < 0.001)\). Given all these indicators, factor analysis is deemed to be appropriate for the survey items.
# Show factor loadings
efaDataFinal <- efaData[,-c(6,14,13,9,11,21,26,7)]
print(
fa(efaDataFinal,
nfactors = 3,
rotate = "promax",
scores = "regression",
fm = "ml"
)$loadings,
digits = 2, cutoff = 0.50, sort = TRUE)
##
## Loadings:
## ML1 ML2 ML3
## JST_1 0.72
## JST_2 0.67
## JST_3 0.60
## JST_4 0.74
## JST_5 0.74
## JST_8 0.56
## JSA_3 -0.51
## JSA_7 -0.60
## JST_10 -0.81
## OS_2 0.75
## JSA_1 0.80
## JSA_2 0.57
## JSA_4 0.61
## JSA_5 0.58
## JSA_9 0.56
## JSA_13 0.66
## OS_5 0.54
## JSA_8 0.53
## JSA_10 0.57
## JSA_12 0.71
##
## ML1 ML2 ML3
## SS loadings 4.23 4.25 2.14
## Proportion Var 0.21 0.21 0.11
## Cumulative Var 0.21 0.42 0.53
Most of the statements in Job Stress belong to the hypothesized
component (except JST_10). However, the hypothesized
statements Job Satisfaction and Organizational Support items were broken
down into two components while JST_10, OS_2,
and OS_5 now belongs to one of these two components while
JSA_3 and JSA_7 belong to Job Stress.
Specifically, Component 1 (ML1) includes 5 statements
which are JST_1, JST_2, JST_3,
JST_4, JST_5, JST_8,
JSA_3, and JSA_7. These statements describes
the respondents’ feelings of dissatisfaction, stress, and uncertainty
within the organization and job roles. Thus, this component will be
named as Job stress and will be used to capture their
emotions and attitudes related to their work environment and future
career prospects. Finally, JSA_3 (The benefits I
receive are as good as most other organizations can offer.) and
JSA_7 (I am held accountable for the results of my
work.) have negative factor loading which suggest that the
statement is negatively phrased relative to the other statements that
belong to this component.
Moreover, Component 2 (ML2) includes 5 statements which
are JST_10, OS_2, JSA_1,
JSA_2, JSA_4, JSA_5,
JSA_9, and JSA_13. It is important to take
note that JSA_10 (My job makes it difficult to fulfill
family responsibilities) has a negative factor loading suggesting
that the statement is negatively phrased when compared to the other
statements that belong to this component. These statements reflect
respondents’ perception of their work-life balance, compensation,
recognition, and job satisfaction. Thus, this component will be named as
Job Satisfaction as it captures the different aspects
of their job experience which includes how their roles impact their
personal lives and how they feel valued by the company.
Additionally, Component 3 (ML3) includes four statements
which are OS_5, JSA_8, JSA_10,
and JSA_12. These statements reflect respondents’
perceptions of organizational support, pride in their work,
accountability, feedback, and opportunities for career advancement.
Hence, this component will be named Organizational
Support as it highlights the support and growth potential they
perceive within the organization.
Reliability test using Cronbach \(\alpha\) was conducted after generating the factor structure of the statments using Exploratory Factor Analysis. Cronbach \(\alpha\) tests the reliability of a measurement tool by measuring its internal consistency. For it to be acceptable, all components should have at least 0.70 which indicates strong internal consistency among items within the component.
In summary, all four components has an internal consistency of at
least 0.97 suggesting a very strong internal consistency among items
within each component. It is important to note, however, that
JSA_3, JSA_7, and JST_10 of
Components 1 and 2 are reverse coded (that is, scores of 1 are encoded
as 5, 2 as 4, 4 as 2, and 5 as 1) to ensure that the tone of these
statement are consistent with the other items within this component.
Finally, for each component considered, removing items does not merit an improvement to the internal consistency of each. Removing items may, in turn, decrease the overall internal consistency of the component suggesting that all items considered in each component contribute positively to the overall internal consistency of the component.
alpha(efaData[,c(1:5,8,18,22)], check.keys = TRUE)
## Warning in alpha(efaData[, c(1:5, 8, 18, 22)], check.keys = TRUE): Some items were negatively correlated with the first principal component and were automatically reversed.
## This is indicated by a negative sign for the variable name.
##
## Reliability analysis
## Call: alpha(x = efaData[, c(1:5, 8, 18, 22)], check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.98 0.98 0.98 0.88 60 0.0017 3.4 1.6 0.88
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.98 0.98 0.99
## Duhachek 0.98 0.98 0.99
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JST_1 0.98 0.98 0.98 0.88 49 0.0021 0.00027 0.88
## JST_2 0.98 0.98 0.98 0.88 51 0.0020 0.00045 0.88
## JST_3 0.98 0.98 0.98 0.89 55 0.0019 0.00044 0.89
## JST_4 0.98 0.98 0.98 0.88 52 0.0020 0.00050 0.88
## JST_5 0.98 0.98 0.98 0.88 54 0.0019 0.00050 0.88
## JST_8 0.98 0.98 0.98 0.89 56 0.0018 0.00040 0.89
## JSA_3- 0.98 0.98 0.98 0.88 52 0.0020 0.00056 0.88
## JSA_7- 0.98 0.98 0.98 0.88 52 0.0020 0.00040 0.88
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JST_1 210 0.97 0.97 0.97 0.96 3.4 1.7
## JST_2 210 0.96 0.95 0.95 0.94 3.4 1.7
## JST_3 210 0.93 0.93 0.92 0.91 3.4 1.6
## JST_4 210 0.95 0.95 0.95 0.94 3.4 1.6
## JST_5 210 0.94 0.94 0.93 0.92 3.4 1.7
## JST_8 210 0.93 0.93 0.91 0.91 3.4 1.6
## JSA_3- 210 0.95 0.95 0.94 0.93 3.4 1.6
## JSA_7- 210 0.95 0.95 0.94 0.93 3.3 1.7
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## JST_1 0.29 0.06 0.09 0.11 0.45 0
## JST_2 0.25 0.09 0.11 0.14 0.41 0
## JST_3 0.22 0.09 0.14 0.15 0.40 0
## JST_4 0.25 0.08 0.10 0.17 0.40 0
## JST_5 0.27 0.07 0.10 0.16 0.40 0
## JST_8 0.21 0.11 0.12 0.16 0.40 0
## JSA_3 0.43 0.10 0.14 0.10 0.22 0
## JSA_7 0.41 0.11 0.10 0.10 0.27 0
alpha(efaData[,c(10,12,16,17,19,20,24,28)], check.keys = TRUE)
## Warning in alpha(efaData[, c(10, 12, 16, 17, 19, 20, 24, 28)], check.keys = TRUE): Some items were negatively correlated with the first principal component and were automatically reversed.
## This is indicated by a negative sign for the variable name.
##
## Reliability analysis
## Call: alpha(x = efaData[, c(10, 12, 16, 17, 19, 20, 24, 28)], check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.98 0.98 0.98 0.86 50 0.0021 2.4 1.5 0.86
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.98 0.98 0.98
## Duhachek 0.98 0.98 0.98
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## JST_10- 0.98 0.98 0.98 0.86 44 0.0024 0.00067 0.87
## OS_2 0.98 0.98 0.98 0.86 42 0.0025 0.00065 0.86
## JSA_1 0.98 0.98 0.98 0.86 42 0.0025 0.00061 0.86
## JSA_2 0.98 0.98 0.98 0.87 46 0.0023 0.00022 0.87
## JSA_4 0.98 0.98 0.98 0.86 44 0.0024 0.00062 0.86
## JSA_5 0.98 0.98 0.98 0.86 43 0.0025 0.00063 0.86
## JSA_9 0.98 0.98 0.98 0.86 42 0.0025 0.00061 0.86
## JSA_13 0.98 0.98 0.98 0.87 45 0.0023 0.00042 0.87
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## JST_10- 210 0.93 0.94 0.92 0.91 2.4 1.6
## OS_2 210 0.95 0.95 0.94 0.93 2.4 1.5
## JSA_1 210 0.95 0.95 0.94 0.93 2.4 1.5
## JSA_2 210 0.92 0.92 0.91 0.89 2.5 1.6
## JSA_4 210 0.94 0.94 0.92 0.92 2.4 1.6
## JSA_5 210 0.94 0.94 0.94 0.93 2.5 1.6
## JSA_9 210 0.95 0.95 0.94 0.93 2.5 1.6
## JSA_13 210 0.93 0.93 0.91 0.90 2.5 1.7
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## JST_10 0.21 0.05 0.09 0.20 0.44 0
## OS_2 0.41 0.21 0.11 0.08 0.19 0
## JSA_1 0.40 0.20 0.14 0.04 0.21 0
## JSA_2 0.41 0.17 0.13 0.08 0.20 0
## JSA_4 0.45 0.13 0.16 0.05 0.21 0
## JSA_5 0.43 0.14 0.15 0.08 0.20 0
## JSA_9 0.43 0.13 0.16 0.06 0.21 0
## JSA_13 0.50 0.09 0.09 0.08 0.24 0
alpha(efaData[,c(15,23,25,27)], check.keys = TRUE)
##
## Reliability analysis
## Call: alpha(x = efaData[, c(15, 23, 25, 27)], check.keys = TRUE)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.97 0.97 0.96 0.9 35 0.0031 2.6 1.6 0.9
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.97 0.97 0.98
## Duhachek 0.97 0.97 0.98
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## OS_5 0.96 0.96 0.95 0.90 26 0.0045 2.5e-04 0.90
## JSA_8 0.97 0.97 0.95 0.90 28 0.0041 1.3e-04 0.90
## JSA_10 0.97 0.97 0.95 0.90 28 0.0041 3.2e-04 0.91
## JSA_12 0.96 0.96 0.94 0.89 24 0.0049 8.6e-05 0.88
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## OS_5 210 0.96 0.96 0.95 0.93 2.5 1.7
## JSA_8 210 0.96 0.96 0.94 0.92 2.7 1.7
## JSA_10 210 0.95 0.96 0.93 0.92 2.5 1.6
## JSA_12 210 0.97 0.97 0.96 0.94 2.7 1.7
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## OS_5 0.47 0.09 0.12 0.08 0.24 0
## JSA_8 0.42 0.10 0.10 0.10 0.28 0
## JSA_10 0.46 0.10 0.12 0.13 0.19 0
## JSA_12 0.43 0.11 0.09 0.08 0.29 0
# Store Data for SEM
semData <- data1[,2:38]
testModel <- '
# measurement model
jobStress =~ JST_1 + JST_2 + JST_3 + JST_4 + JST_5 + JST_8 + JSA_3_N + JSA_7_N
jobSatisfaction =~ JST_10_N + OS_2 + JSA_1 + JSA_2 + JSA_4 + JSA_5 + JSA_13
organizationalSupport =~ OS_5 + JSA_8 + JSA_10 + JSA_12
turnoverIntention =~ TI_1 + TI_2 + TI_3 + TI_4 + TI_5 + TI_6
'
testFit <- cfa(testModel, data = semData, estimator = "MLM")
summary(testFit, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 90 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 56
##
## Number of observations 210
##
## Model Test User Model:
## Standard Scaled
## Test Statistic 763.190 483.506
## Degrees of freedom 269 269
## P-value (Chi-square) 0.000 0.000
## Scaling correction factor 1.578
## Satorra-Bentler correction
##
## Model Test Baseline Model:
##
## Test statistic 10181.810 15095.149
## Degrees of freedom 300 300
## P-value 0.000 0.000
## Scaling correction factor 0.675
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.950 0.986
## Tucker-Lewis Index (TLI) 0.944 0.984
##
## Robust Comparative Fit Index (CFI) 0.966
## Robust Tucker-Lewis Index (TLI) 0.962
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5293.433 -5293.433
## Loglikelihood unrestricted model (H1) -4911.838 -4911.838
##
## Akaike (AIC) 10698.866 10698.866
## Bayesian (BIC) 10886.304 10886.304
## Sample-size adjusted Bayesian (SABIC) 10708.864 10708.864
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.094 0.062
## 90 Percent confidence interval - lower 0.086 0.055
## 90 Percent confidence interval - upper 0.101 0.069
## P-value H_0: RMSEA <= 0.050 0.000 0.004
## P-value H_0: RMSEA >= 0.080 0.998 0.000
##
## Robust RMSEA 0.077
## 90 Percent confidence interval - lower 0.066
## 90 Percent confidence interval - upper 0.088
## P-value H_0: Robust RMSEA <= 0.050 0.000
## P-value H_0: Robust RMSEA >= 0.080 0.359
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.026 0.026
##
## Parameter Estimates:
##
## Standard errors Robust.sem
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv
## jobStress =~
## JST_1 1.000 1.676
## JST_2 0.934 0.025 37.779 0.000 1.566
## JST_3 0.876 0.029 30.379 0.000 1.468
## JST_4 0.925 0.022 42.667 0.000 1.551
## JST_5 0.927 0.026 35.625 0.000 1.554
## JST_8 0.870 0.029 29.958 0.000 1.458
## JSA_3_N 0.915 0.023 39.065 0.000 1.533
## JSA_7_N 0.958 0.021 46.189 0.000 1.605
## jobSatisfaction =~
## JST_10_N 1.000 1.465
## OS_2 0.976 0.029 33.328 0.000 1.430
## JSA_1 0.987 0.027 36.287 0.000 1.445
## JSA_2 0.970 0.029 32.982 0.000 1.420
## JSA_4 1.007 0.032 31.306 0.000 1.474
## JSA_5 1.004 0.031 32.785 0.000 1.470
## JSA_13 1.052 0.031 33.927 0.000 1.541
## organizationalSupport =~
## OS_5 1.000 1.599
## JSA_8 1.005 0.029 34.190 0.000 1.608
## JSA_10 0.941 0.029 32.717 0.000 1.505
## JSA_12 1.031 0.026 40.161 0.000 1.649
## turnoverIntention =~
## TI_1 1.000 1.544
## TI_2 0.962 0.036 26.725 0.000 1.485
## TI_3 1.011 0.035 29.140 0.000 1.561
## TI_4 0.984 0.038 26.159 0.000 1.518
## TI_5 0.986 0.035 28.202 0.000 1.523
## TI_6 0.980 0.036 27.448 0.000 1.513
## Std.all
##
## 0.967
## 0.951
## 0.920
## 0.943
## 0.928
## 0.914
## 0.943
## 0.949
##
## 0.926
## 0.933
## 0.935
## 0.904
## 0.930
## 0.942
## 0.915
##
## 0.954
## 0.939
## 0.943
## 0.955
##
## 0.922
## 0.952
## 0.953
## 0.944
## 0.943
## 0.942
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv
## jobStress ~~
## jobSatisfactin -2.321 0.159 -14.622 0.000 -0.946
## organztnlSpprt -2.581 0.140 -18.461 0.000 -0.963
## turnoverIntntn 2.404 0.161 14.967 0.000 0.929
## jobSatisfaction ~~
## organztnlSpprt 2.189 0.165 13.236 0.000 0.935
## turnoverIntntn -2.101 0.171 -12.311 0.000 -0.929
## organizationalSupport ~~
## turnoverIntntn -2.408 0.148 -16.228 0.000 -0.976
## Std.all
##
## -0.946
## -0.963
## 0.929
##
## 0.935
## -0.929
##
## -0.976
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .JST_1 0.196 0.036 5.439 0.000 0.196 0.065
## .JST_2 0.260 0.054 4.832 0.000 0.260 0.096
## .JST_3 0.393 0.063 6.247 0.000 0.393 0.154
## .JST_4 0.299 0.044 6.739 0.000 0.299 0.111
## .JST_5 0.389 0.071 5.457 0.000 0.389 0.139
## .JST_8 0.419 0.064 6.526 0.000 0.419 0.164
## .JSA_3_N 0.293 0.050 5.879 0.000 0.293 0.111
## .JSA_7_N 0.282 0.046 6.117 0.000 0.282 0.099
## .JST_10_N 0.359 0.055 6.496 0.000 0.359 0.143
## .OS_2 0.303 0.058 5.263 0.000 0.303 0.129
## .JSA_1 0.301 0.048 6.293 0.000 0.301 0.126
## .JSA_2 0.452 0.070 6.436 0.000 0.452 0.183
## .JSA_4 0.340 0.056 6.045 0.000 0.340 0.135
## .JSA_5 0.276 0.045 6.089 0.000 0.276 0.113
## .JSA_13 0.462 0.102 4.534 0.000 0.462 0.163
## .OS_5 0.254 0.046 5.475 0.000 0.254 0.090
## .JSA_8 0.347 0.056 6.203 0.000 0.347 0.118
## .JSA_10 0.281 0.048 5.860 0.000 0.281 0.110
## .JSA_12 0.261 0.038 6.858 0.000 0.261 0.088
## .TI_1 0.422 0.099 4.243 0.000 0.422 0.150
## .TI_2 0.227 0.038 5.960 0.000 0.227 0.093
## .TI_3 0.249 0.048 5.158 0.000 0.249 0.093
## .TI_4 0.283 0.049 5.812 0.000 0.283 0.109
## .TI_5 0.291 0.055 5.284 0.000 0.291 0.112
## .TI_6 0.291 0.048 6.088 0.000 0.291 0.113
## jobStress 2.809 0.142 19.753 0.000 1.000 1.000
## jobSatisfactin 2.145 0.186 11.559 0.000 1.000 1.000
## organztnlSpprt 2.556 0.159 16.081 0.000 1.000 1.000
## turnoverIntntn 2.383 0.174 13.712 0.000 1.000 1.000
modifIndices <- modificationindices(testFit)
modifIndices[modifIndices$mi>10,]
## lhs op rhs mi epc sepc.lv sepc.all sepc.nox
## 63 jobStress =~ JSA_1 11.238 0.302 0.506 0.327 0.327
## 66 jobStress =~ JSA_5 16.317 -0.354 -0.594 -0.380 -0.380
## 69 jobStress =~ JSA_8 18.951 -0.540 -0.906 -0.529 -0.529
## 72 jobStress =~ TI_1 59.866 0.671 1.125 0.672 0.672
## 80 jobSatisfaction =~ JST_3 10.549 -0.359 -0.526 -0.330 -0.330
## 84 jobSatisfaction =~ JSA_3_N 18.562 -0.423 -0.619 -0.381 -0.381
## 86 jobSatisfaction =~ OS_5 12.678 0.334 0.489 0.292 0.292
## 89 jobSatisfaction =~ JSA_12 18.816 -0.415 -0.608 -0.352 -0.352
## 90 jobSatisfaction =~ TI_1 17.286 -0.418 -0.612 -0.366 -0.366
## 103 organizationalSupport =~ JSA_7_N 19.668 -0.495 -0.792 -0.468 -0.468
## 107 organizationalSupport =~ JSA_2 29.961 0.554 0.886 0.564 0.564
## 111 organizationalSupport =~ TI_1 31.134 -1.030 -1.646 -0.983 -0.983
## 128 turnoverIntention =~ JSA_2 46.528 -0.669 -1.033 -0.658 -0.658
## 130 turnoverIntention =~ JSA_5 14.647 0.311 0.480 0.307 0.307
## 133 turnoverIntention =~ JSA_8 21.743 0.864 1.333 0.779 0.779
## 134 turnoverIntention =~ JSA_10 16.636 -0.689 -1.064 -0.667 -0.667
## 151 JST_1 ~~ JSA_8 12.754 -0.076 -0.076 -0.290 -0.290
## 154 JST_1 ~~ TI_1 10.345 0.074 0.074 0.256 0.256
## 187 JST_3 ~~ JSA_7_N 10.381 -0.083 -0.083 -0.249 -0.249
## 199 JST_3 ~~ TI_1 11.947 0.105 0.105 0.259 0.259
## 282 JSA_3_N ~~ TI_6 13.559 0.083 0.083 0.286 0.286
## 293 JSA_7_N ~~ JSA_12 21.583 -0.101 -0.101 -0.373 -0.373
## 306 JST_10_N ~~ OS_5 17.028 0.099 0.099 0.329 0.329
## 307 JST_10_N ~~ JSA_8 30.439 -0.152 -0.152 -0.430 -0.430
## 339 JSA_1 ~~ TI_1 11.710 0.094 0.094 0.265 0.265
## 347 JSA_2 ~~ JSA_13 12.278 -0.124 -0.124 -0.270 -0.270
## 373 JSA_5 ~~ JSA_10 13.682 -0.082 -0.082 -0.295 -0.295
## 375 JSA_5 ~~ TI_1 12.110 -0.093 -0.093 -0.272 -0.272
## 378 JSA_5 ~~ TI_4 16.254 0.090 0.090 0.322 0.322
## 402 JSA_8 ~~ TI_1 13.477 -0.108 -0.108 -0.283 -0.283
testModel2 <- '
# Loadings
jobStress =~ JST_1 + JST_2 + JST_3 + JST_4 + JST_5 + JST_8 + JSA_3_N + JSA_7_N
jobSatisfaction =~ JST_10_N + OS_2 + JSA_1 + JSA_2 + JSA_4 + JSA_5 + JSA_13
organizationalSupport =~ OS_5 + JSA_8 + JSA_10 + JSA_12
turnoverIntention =~ TI_1 + TI_2 + TI_3 + TI_4 + TI_5 + TI_6
# regression
turnoverIntention ~ jobStress + jobSatisfaction + organizationalSupport
'
testFit2 <- sem(testModel2, data = semData, estimator = "MLM")
summary(testFit2, fit.measures = TRUE, standardized = TRUE)
## lavaan 0.6-19 ended normally after 84 iterations
##
## Estimator ML
## Optimization method NLMINB
## Number of model parameters 56
##
## Number of observations 210
##
## Model Test User Model:
## Standard Scaled
## Test Statistic 763.190 483.506
## Degrees of freedom 269 269
## P-value (Chi-square) 0.000 0.000
## Scaling correction factor 1.578
## Satorra-Bentler correction
##
## Model Test Baseline Model:
##
## Test statistic 10181.810 15095.149
## Degrees of freedom 300 300
## P-value 0.000 0.000
## Scaling correction factor 0.675
##
## User Model versus Baseline Model:
##
## Comparative Fit Index (CFI) 0.950 0.986
## Tucker-Lewis Index (TLI) 0.944 0.984
##
## Robust Comparative Fit Index (CFI) 0.966
## Robust Tucker-Lewis Index (TLI) 0.962
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -5293.433 -5293.433
## Loglikelihood unrestricted model (H1) -4911.838 -4911.838
##
## Akaike (AIC) 10698.866 10698.866
## Bayesian (BIC) 10886.304 10886.304
## Sample-size adjusted Bayesian (SABIC) 10708.864 10708.864
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.094 0.062
## 90 Percent confidence interval - lower 0.086 0.055
## 90 Percent confidence interval - upper 0.101 0.069
## P-value H_0: RMSEA <= 0.050 0.000 0.004
## P-value H_0: RMSEA >= 0.080 0.998 0.000
##
## Robust RMSEA 0.077
## 90 Percent confidence interval - lower 0.066
## 90 Percent confidence interval - upper 0.088
## P-value H_0: Robust RMSEA <= 0.050 0.000
## P-value H_0: Robust RMSEA >= 0.080 0.359
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.026 0.026
##
## Parameter Estimates:
##
## Standard errors Robust.sem
## Information Expected
## Information saturated (h1) model Structured
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|) Std.lv
## jobStress =~
## JST_1 1.000 1.676
## JST_2 0.934 0.025 37.779 0.000 1.566
## JST_3 0.876 0.029 30.379 0.000 1.468
## JST_4 0.925 0.022 42.667 0.000 1.551
## JST_5 0.927 0.026 35.625 0.000 1.554
## JST_8 0.870 0.029 29.958 0.000 1.458
## JSA_3_N 0.915 0.023 39.065 0.000 1.533
## JSA_7_N 0.958 0.021 46.189 0.000 1.605
## jobSatisfaction =~
## JST_10_N 1.000 1.465
## OS_2 0.976 0.029 33.328 0.000 1.430
## JSA_1 0.987 0.027 36.287 0.000 1.445
## JSA_2 0.970 0.029 32.982 0.000 1.420
## JSA_4 1.007 0.032 31.306 0.000 1.474
## JSA_5 1.004 0.031 32.785 0.000 1.470
## JSA_13 1.052 0.031 33.927 0.000 1.541
## organizationalSupport =~
## OS_5 1.000 1.599
## JSA_8 1.005 0.029 34.190 0.000 1.608
## JSA_10 0.941 0.029 32.717 0.000 1.505
## JSA_12 1.031 0.026 40.161 0.000 1.649
## turnoverIntention =~
## TI_1 1.000 1.544
## TI_2 0.962 0.036 26.725 0.000 1.485
## TI_3 1.011 0.035 29.140 0.000 1.561
## TI_4 0.984 0.038 26.159 0.000 1.518
## TI_5 0.986 0.035 28.202 0.000 1.523
## TI_6 0.980 0.036 27.448 0.000 1.513
## Std.all
##
## 0.967
## 0.951
## 0.920
## 0.943
## 0.928
## 0.914
## 0.943
## 0.949
##
## 0.926
## 0.933
## 0.935
## 0.904
## 0.930
## 0.942
## 0.915
##
## 0.954
## 0.939
## 0.943
## 0.955
##
## 0.922
## 0.952
## 0.953
## 0.944
## 0.943
## 0.942
##
## Regressions:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## turnoverIntention ~
## jobStress -0.279 0.165 -1.688 0.091 -0.303 -0.303
## jobSatisfactin -0.258 0.131 -1.969 0.049 -0.245 -0.245
## organztnlSpprt -1.003 0.149 -6.738 0.000 -1.039 -1.039
##
## Covariances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## jobStress ~~
## jobSatisfactin -2.321 0.159 -14.622 0.000 -0.946 -0.946
## organztnlSpprt -2.581 0.140 -18.461 0.000 -0.963 -0.963
## jobSatisfaction ~~
## organztnlSpprt 2.189 0.165 13.236 0.000 0.935 0.935
##
## Variances:
## Estimate Std.Err z-value P(>|z|) Std.lv Std.all
## .JST_1 0.196 0.036 5.439 0.000 0.196 0.065
## .JST_2 0.260 0.054 4.832 0.000 0.260 0.096
## .JST_3 0.393 0.063 6.247 0.000 0.393 0.154
## .JST_4 0.299 0.044 6.739 0.000 0.299 0.111
## .JST_5 0.389 0.071 5.457 0.000 0.389 0.139
## .JST_8 0.419 0.064 6.526 0.000 0.419 0.164
## .JSA_3_N 0.293 0.050 5.879 0.000 0.293 0.111
## .JSA_7_N 0.282 0.046 6.117 0.000 0.282 0.099
## .JST_10_N 0.359 0.055 6.496 0.000 0.359 0.143
## .OS_2 0.303 0.058 5.263 0.000 0.303 0.129
## .JSA_1 0.301 0.048 6.293 0.000 0.301 0.126
## .JSA_2 0.452 0.070 6.436 0.000 0.452 0.183
## .JSA_4 0.340 0.056 6.045 0.000 0.340 0.135
## .JSA_5 0.276 0.045 6.089 0.000 0.276 0.113
## .JSA_13 0.462 0.102 4.534 0.000 0.462 0.163
## .OS_5 0.254 0.046 5.475 0.000 0.254 0.090
## .JSA_8 0.347 0.056 6.203 0.000 0.347 0.118
## .JSA_10 0.281 0.048 5.860 0.000 0.281 0.110
## .JSA_12 0.261 0.038 6.858 0.000 0.261 0.088
## .TI_1 0.422 0.099 4.243 0.000 0.422 0.150
## .TI_2 0.227 0.038 5.960 0.000 0.227 0.093
## .TI_3 0.249 0.048 5.158 0.000 0.249 0.093
## .TI_4 0.283 0.049 5.812 0.000 0.283 0.109
## .TI_5 0.291 0.055 5.284 0.000 0.291 0.112
## .TI_6 0.291 0.048 6.088 0.000 0.291 0.113
## jobStress 2.809 0.142 19.753 0.000 1.000 1.000
## jobSatisfactin 2.145 0.186 11.559 0.000 1.000 1.000
## organztnlSpprt 2.556 0.159 16.081 0.000 1.000 1.000
## .turnoverIntntn 0.096 0.044 2.203 0.028 0.040 0.040
sessionInfo()
## R version 4.4.3 (2025-02-28 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26100)
##
## Matrix products: default
##
##
## locale:
## [1] LC_COLLATE=English_United States.utf8
## [2] LC_CTYPE=English_United States.utf8
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United States.utf8
##
## time zone: Asia/Manila
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] semPlot_1.1.6 semTools_0.5-6 lavaan_0.6-19 psych_2.4.12
##
## loaded via a namespace (and not attached):
## [1] fastmap_1.2.0 OpenMx_2.21.13 XML_3.99-0.18
## [4] digest_0.6.37 rpart_4.1.24 mi_1.1
## [7] lifecycle_1.0.4 cluster_2.1.8 magrittr_2.0.3
## [10] compiler_4.4.3 rlang_1.1.5 Hmisc_5.2-2
## [13] sass_0.4.9 tools_4.4.3 igraph_2.1.4
## [16] yaml_2.3.10 data.table_1.17.0 knitr_1.49
## [19] htmlwidgets_1.6.4 mnormt_2.1.1 plyr_1.8.9
## [22] abind_1.4-8 foreign_0.8-88 nnet_7.3-20
## [25] grid_4.4.3 stats4_4.4.3 xtable_1.8-4
## [28] colorspace_2.1-1 GPArotation_2024.3-1 ggplot2_3.5.1
## [31] gtools_3.9.5 scales_1.3.0 MASS_7.3-64
## [34] cli_3.6.4 rmarkdown_2.29 reformulas_0.4.0
## [37] RcppParallel_5.1.10 rstudioapi_0.17.1 reshape2_1.4.4
## [40] pbapply_1.7-2 minqa_1.2.8 cachem_1.1.0
## [43] stringr_1.5.1 splines_4.4.3 parallel_4.4.3
## [46] base64enc_0.1-3 vctrs_0.6.5 boot_1.3-31
## [49] Matrix_1.7-2 jsonlite_1.9.1 carData_3.0-5
## [52] glasso_1.11 Formula_1.2-5 htmlTable_2.4.3
## [55] jpeg_0.1-10 jquerylib_0.1.4 qgraph_1.9.8
## [58] glue_1.8.0 nloptr_2.1.1 stringi_1.8.4
## [61] sem_3.1-16 gtable_0.3.6 quadprog_1.5-8
## [64] lme4_1.1-36 munsell_0.5.1 tibble_3.2.1
## [67] lisrelToR_0.3 pillar_1.10.1 htmltools_0.5.8.1
## [70] R6_2.6.1 Rdpack_2.6.2 evaluate_1.0.3
## [73] pbivnorm_0.6.0 lattice_0.22-6 rbibutils_2.3
## [76] png_0.1-8 backports_1.5.0 rockchalk_1.8.157
## [79] kutils_1.73 openxlsx_4.2.8 arm_1.14-4
## [82] corpcor_1.6.10 bslib_0.9.0 fdrtool_1.2.18
## [85] Rcpp_1.0.14 zip_2.3.2 coda_0.19-4.1
## [88] gridExtra_2.3 nlme_3.1-167 checkmate_2.3.2
## [91] xfun_0.51 pkgconfig_2.0.3