-
Notifications
You must be signed in to change notification settings - Fork 0
/
Confirmatory Factor Analysis (Thesis).R
140 lines (94 loc) · 5.19 KB
/
Confirmatory Factor Analysis (Thesis).R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
library(lavaan)
library(tidyverse)
dt <- read.csv("YIS Calculations for Community Brief Data.csv")
head(dt)
# The code below is based on the following link
# https://lavaan.ugent.be/tutorial/cfa.html
# specify the model
HS.model <- ' family =~ SUPPORT1 + SUPPORT2 + SUPPORT3 + SUPPORT4
friend =~ SUPPORT5 + SUPPORT6 + SUPPORT7 + SUPPORT8
belonging =~ BELONGING + SOC_ISO1 + SOC_ISO2 + SOC_ISO3 + SOC_ISO4
school =~ SCH_FEEL + SCH_ATT1 + SCH_ATT2 + SCH_ATT3 + TEACHER1 + TEACHER2 + TEACHER3 + TEACHER4 + TEACHER5 + TEACHER6 + TEACHER7 + TEACHER8
mental =~ MNTLHLTH + SADNESS + SYMPTOM1 + SYMPTOM2 + SYMPTOM3 + SYMPTOM4 + SYMPTOM5 + SYMPTOM6 + SYMPTOM7 + SYMPTOM8
well =~ LIFESAT + DAILYSTRESS + BESTLIFE '
# fit the model for confirmatory factor analysis
fitcfa <- cfa(HS.model, data = dt, missing = "ml", estimator = "mlr")
# fit the model for full structural equation models
fitsem <- sem(HS.model, data = dt)
# fit the model for growth curve models
fitgrowth <- growth(HS.model, data = dt)
# display summary output
summary(fitcfa, fit.measures = TRUE, standardize = TRUE, modindices = TRUE)
modindices(fitcfa, sort = TRUE, maximum.number = 10)
###
HS.model2 <- 'family =~ SUPPORT1 + SUPPORT2 + SUPPORT3 + SUPPORT4
friend =~ SUPPORT5 + SUPPORT6 + SUPPORT7 + SUPPORT8 + SOC_ISO1
belonging =~ BELONGING + SOC_ISO1 + SOC_ISO2 + SOC_ISO3 + SOC_ISO4 + SCH_ATT3
school =~ SCH_FEEL + SCH_ATT1 + SCH_ATT2 + SCH_ATT3 + TEACHER1 + TEACHER2 + TEACHER3 + TEACHER4 + TEACHER5 + TEACHER6 + TEACHER7 + TEACHER8
mental =~ MNTLHLTH + SADNESS + SYMPTOM1 + SYMPTOM2 + SYMPTOM3 + SYMPTOM4 + SYMPTOM5 + SYMPTOM6 + SYMPTOM7 + SYMPTOM8 + DAILYSTRESS
well =~ LIFESAT + DAILYSTRESS + BESTLIFE
###
SUPPORT7 ~~ SUPPORT8
SUPPORT5 ~~ SUPPORT6
LIFESAT ~~ BESTLIFE
SYMPTOM1 ~~ SYMPTOM2
SCH_FEEL ~~ SCH_ATT2
SCH_ATT2 ~~ SCH_ATT3 '
# fit the model for confirmatory factor analysis
fitcfa2 <- cfa(HS.model2, data = dt, missing = "ml", estimator = "mlr")
# fit the model for full structural equation models
fitsem <- sem(HS.model2, data = dt)
# fit the model for growth curve models
fitgrowth <- growth(HS.model2, data = dt)
# display summary output
summary(fitcfa2, fit.measures = TRUE, standardize = TRUE, modindices = TRUE)
modindices(fitcfa2, sort = TRUE, maximum.number = 10)
anova(fitcfa, fitcfa2)
### July 8
###
cfa.modelx <- 'family =~ SUPPORT1 + SUPPORT2 + SUPPORT3 + SUPPORT4
friend =~ SUPPORT5 + SUPPORT6 + SUPPORT7 + SUPPORT8 + SOC_ISO1
belonging =~ BELONGING + SOC_ISO1 + SOC_ISO2 + SOC_ISO3 + SOC_ISO4 + SCH_ATT3
school =~ SCH_FEEL + SCH_ATT1 + SCH_ATT2 + SCH_ATT3 + TEACHER1 + TEACHER2 + TEACHER3 + TEACHER4 + TEACHER5 + TEACHER6 + TEACHER7 + TEACHER8
mental =~ MNTLHLTH + SADNESS + SYMPTOM1 + SYMPTOM2 + SYMPTOM3 + SYMPTOM4 + SYMPTOM5 + SYMPTOM6 + SYMPTOM7 + SYMPTOM8 + DAILYSTRESS
well =~ LIFESAT + DAILYSTRESS + BESTLIFE
###
SUPPORT7 ~~ SUPPORT8
SUPPORT5 ~~ SUPPORT6
LIFESAT ~~ BESTLIFE
SYMPTOM1 ~~ SYMPTOM2
SCH_FEEL ~~ SCH_ATT2
SCH_ATT2 ~~ SCH_ATT3
#regressions
well ~ family + friend + belonging + school + GENDER + AGE + WELLOFF
mental ~ family + friend + belonging + school + GENDER + AGE + WELLOFF
'
fitcfa3x <- cfa(cfa.modelx, data = dt, missing = "ml", estimator = "mlr")
summary(fitcfa3x, fit.measures = TRUE, standardize = TRUE, modindices = TRUE)
###
HS.model4 <- 'family =~ SUPPORT1 + SUPPORT2 + SUPPORT3 + SUPPORT4
friend =~ SUPPORT5 + SUPPORT6 + SUPPORT7 + SUPPORT8 + SOC_ISO1
belonging =~ BELONGING + SOC_ISO1 + SOC_ISO2 + SOC_ISO3 + SOC_ISO4 + SCH_ATT3
school =~ SCH_FEEL + SCH_ATT1 + SCH_ATT2 + SCH_ATT3 + TEACHER1 + TEACHER2 + TEACHER3 + TEACHER4 + TEACHER5 + TEACHER6 + TEACHER7 + TEACHER8
mental =~ MNTLHLTH + SADNESS + SYMPTOM1 + SYMPTOM2 + SYMPTOM3 + SYMPTOM4 + SYMPTOM5 + SYMPTOM6 + SYMPTOM7 + SYMPTOM8 + DAILYSTRESS
well =~ LIFESAT + DAILYSTRESS + BESTLIFE
###
SUPPORT7 ~~ SUPPORT8
SUPPORT5 ~~ SUPPORT6
LIFESAT ~~ BESTLIFE
SYMPTOM1 ~~ SYMPTOM2
SCH_FEEL ~~ SCH_ATT2
SCH_ATT2 ~~ SCH_ATT3
#regressions
well ~ family + friend + belonging + school
mental ~ family + friend + belonging + school
#
well ~ family + friend + belonging + school + mental
mental ~ family + friend + belonging + school + well
family ~ friend + belonging + school + well + mental
friend ~ belonging + school + well + mental + family
belonging ~ school + well + mental + family + friend
school ~ well + mental + family + friend + belonging
'
fitcfa4 <- cfa(HS.model4, data = dt, missing = "ml", estimator = "mlr")
summary(fitcfa4, fit.measures = TRUE, standardize = TRUE, modindices = TRUE)