x3 ~ x4
x1 + x2 +x4 ~ x5'
paModel <- sem(pathAn,data=HolzingerSwineford1939)
summary(paModel)
semPaths(paModel,"par", weighted = FALSE, nCharNodes = 7, layout = "tree", shapeMan = "circle",
sizeMan = 8, sizeMan2 = 5)
pathAn <- 'x1 ~ x2 + x3 + x4
x2 ~  x4
x3 ~ x4
x1 + x2 +x4 ~ x5'
paModel <- sem(pathAn,data=HolzingerSwineford1939)
summary(paModel)
semPaths(paModel,"par", weighted = FALSE, nCharNodes = 7, layout = "spring",
sizeMan = 8, sizeMan2 = 5)
library(lavaan)
library(semPlot)  #this won't compile for me
example(cfa)
HolzingerSwineford1939
dat <- cor(dplyr::select(HolzingerSwineford1939,x1:x9))
dat
princomp(cc)
cc <- cor(dplyr::select(HolzingerSwineford1939,x1:x9))
princomp(cc)
pca <- princomp(cc)
pc1
pca
plot(pca)
loadings(pca)
f <- factanal(cc,factors=3)
data <- dplyr::select(HolzingerSwineford1939,x1:x9)
cc <- cor(data)
pca <- princomp(cc)
loadings(pca)
f <- factanal(data,factors=3)
f
f2 <- fa:fa(data.factors=3)
f2 <- fa:fa(data,factors=3)
f2
HS.model <- ' visual   =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed   =~ x7 + x8 + x9 '
HS.model
HolzingerSwineford1939
HS.model <- ' visual   =~ x1 + x2 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit <- cfa(HS.model,data=HolzingerSwineford1939)
fit
summary(fit,fit.measures=T)
HS.model <- ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit <- cfa(HS.model,data=HolzingerSwineford1939)
fit
summary(fit,fit.measures=T)
HS.model2 <- ' visual   =~ x1 + x2 + x3 + x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit2 <- cfa(HS.model2,data=HolzingerSwineford1939)
fit2
summary(fit2,fit.measures=T)
anova(fit,fit2)
HolzingerSwineford1939$ageyr
partable(fit)
#install.packages("semPlot",dependencies=T)
library(psych)
##library(semPlot) ##this won't install for me!
##semPaths(fit, "model","est",curvePivot = FALSE,edge.label.cex = 0.5)
lavaan.diagram(fit,cut=.2,digits=2)  ##in psych package
summary(fit,fit.measures=T,standardize=T)
inspect(fit,"rsquare")
semPaths(fit)
HS.model2 <- ' visual   =~ x1 + x2 + x3 + x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit2 <- cfa(HS.model2,data=HolzingerSwineford1939)
fit2
summary(fit2,fit.measures=T)
anova(fit,fit2)
summary(fit,fit.measures=T)
summary(fit2,fit.measures=T)
diagram(fit)
diagram(fit2)
HS.model3 <- ' f1  =~ x1 + x2
f2 =~ x3 + x4
f3 =~ x5 + x6
f4   =~ x7 + x8 + x9 '
fit3 <- cfa(HS.model3,data=HolzingerSwineford1939)
fit3
summary(fit3)
summary(fit3,fit.measures=T)
anova(fit,fit3)
anova(fit,fit3)
#semPlot::semPaths(fit3,title=F,curvePilot=T)
lavaan.diagram(fit3,cut=.2,digits=2)
semPaths(fit3,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
semPaths(fit3,"par", weighted = TRUE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
semPaths(fit3,"par", weighted = TRUE, nCharNodes = 7, shapeMan = "circle",
sizeMan = 8, sizeMan2 = 5)
semPaths(fit3,"par", weighted = TRUE, nCharNodes = 7, shapeMan = "square",
sizeMan = 8, sizeMan2 = 5)
anova(fit,fit3)
#semPlot::semPaths(fit3,title=F,curvePilot=T)
lavaan.diagram(fit3,cut=.2,digits=2)
semPaths(fit3,"par", weighted = TRUE, nCharNodes = 7, shapeMan = "square",
sizeMan = 8, sizeMan2 = 5,layout="spring")
semPaths(fit3,"par", weighted = TRUE, nCharNodes = 7, shapeMan = "square",
sizeMan = 8, sizeMan2 = 5,layout="tree")
semPaths(fit3,"par", weighted = TRUE, nCharNodes = 7, shapeMan = "square",
sizeMan = 8, sizeMan2 = 5,layout="tree2")
HS.modelG <-  'G =~ x1 + x2 + x3 + x4 + x5 + x6 + x7  + x8 + x9
visual   =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed   =~ x7 + x8 + x9 '
fitG <- cfa(HS.modelG,data=HolzingerSwineford1939)
summary(fitG,fit.measures=T)
summary(fit,fit.measures=T)
HS.model4 <- ' x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 =~ g
f1  =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
f3   =~ x7 + x8 + x9
g ~~ 0*f1
g ~~ 0*f2
g ~~ 0*f3
f1~~ 0*f1
f2~~ 0*f2
f3 ~~ 0*f3
'
fit4 <- cfa(HS.model4,data=HolzingerSwineford1939)
HS.model4 <- 'g=~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
f1  =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
f3   =~ x7 + x8 + x9
g ~~ 0*f1
g ~~ 0*f2
g ~~ 0*f3
f1~~ 0*f1
f2~~ 0*f2
f3 ~~ 0*f3
'
fit4 <- cfa(HS.model4,data=HolzingerSwineford1939)
fit4 <- cfa(HS.model4,data=HolzingerSwineford1939,estimator="WLS")
fit4
summary(fit4,fit.measures=T)
semPaths(fit4,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
HS.model4b <- 'g=~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9
f1  =~ x1 + x2 + x3
f2 =~ x4 + x5 + x6
f3   =~ x7 + x8
g ~~ 0*f1
g ~~ 0*f2
g ~~ 0*f3
f1~~ 0*f1
f2~~ 0*f2
f3 ~~ 0*f3
'
fit4b <- cfa(HS.model4b,data=HolzingerSwineford1939)
summary(fit4b,fit.measures=T)
anova(fit4,fit4b)
summary(fit4b,fit.measures=T)
semPaths(fit4,"model","est",curvePivot = FALSE,edge.label.cex = 0.5)
semPaths(fit4,"model","est",layout="circle",curvePivot = FALSE,edge.label.cex = 0.5)
semPaths(fit4,"model","est",layout="tree",curvePivot = FALSE,edge.label.cex = 0.5)
lavaan.diagram(fit4,cut=.2,digits=2)
semPaths(fit4,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
anova(fit4,fit)
fit5 <- cfa(HS.model4,data=HolzingerSwineford1939,orthogonal=TRUE)
summary(fit5)
#semPaths(fit5,"model","est",curvePivot = FALSE,edge.label.cex = 0.5)
residuals(fit5,type="cor")
summary(fit5,fit.measures=T)
library(psych)
holz <- omega(cor(HolzingerSwineford1939[,7:15]),3, title = "14 ability tests from Holzinger-Swineford")
holz
c(4,3,6,1)
a <- c(4,3,6,1)
a < 1:7
lapply(a,1,function(x){x<(1:7)})
lapply(a,function(x){x<(1:7)})
sapply(a,function(x){x<(1:7)})
a
sapply(a,function(x){x<(1:7)})
rowSums(sapply(a,function(x){x<(1:7)}))
rowSums(sapply(a,function(x){x<(1:8)}))
rowSums(sapply(a,function(x){x<(0:8)}))
rowSums(sapply(a,function(x){x<(0:8)}))/4
a
b <- c(5,3,7,6)
rowSums(sapply(b,function(x){x<(0:8)}))/4
plot(rowSums(sapply(b,function(x){x<(0:8)}))/4,rowSums(sapply(a,function(x){x<(0:8)}))/4)
plot(rowSums(sapply(b,function(x){x<(0:8)}))/4,rowSums(sapply(a,function(x){x<(0:8)}))/4,type="o")
set.seed(1234)
X <- rnorm(100)
M <- 0.5*X + rnorm(100)
Y <- 0.7*M + rnorm(100)
M2 <- 0.6*X + rnorm(100)
Y2 <- 0.6*X + rnorm(100)
Data <- data.frame(X = X, Y = Y, M = M)
Data2 <- data.frame(X = X, Y = Y2, M = M2)
pairs(Data)
cor(Data)
pairs(Data2)
cor(Data2)
model <- ' # direct effect
Y ~ c*X
# mediator
M ~ a*X
Y ~ b*M
# indirect effect (a*b)
ab := a*b
# total effect
total := c + (a*b)
'
set.seed(1234)
X <- rnorm(100)
M <- 0.5*X + rnorm(100)
Y <- 0.7*M + rnorm(100)
M2 <- 0.6*X + rnorm(100)
Y2 <- 0.6*X + rnorm(100)
Data <- data.frame(X = X, Y = Y, M = M)
Data2 <- data.frame(X = X, Y = Y2, M = M2)
pairs(Data)
cor(Data)
pairs(Data2)
cor(Data2)
library(lavaan)
library(semPlot)
model <- ' # direct effect
Y ~ c*X
# mediator
M ~ a*X
Y ~ b*M
# indirect effect (a*b)
ab := a*b
# total effect
total := c + (a*b)
'
fit <- sem(model, data = Data)
summary(fit)
lavaan.diagram(fit2)
semPaths(fit,title=F,curvePilot=T,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
library(lavaan)
library(semPlot)
model <- ' # direct effect
Y ~ c*X
# mediator
M ~ a*X
Y ~ b*M
# indirect effect (a*b)
ab := a*b
# total effect
total := c + (a*b)
'
fit <- sem(model, data = Data)
summary(fit)
lavaan.diagram(fit)
library(lavaan)
library(semPlot)
model <- ' # direct effect
Y ~ c*X
# mediator
M ~ a*X
Y ~ b*M
# indirect effect (a*b)
ab := a*b
# total effect
total := c + (a*b)
'
fit <- sem(model, data = Data)
summary(fit)
semPaths(fit,title=F,curvePilot=T,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 15, sizeMan2 = 15)
library(lavaan)
library(semPlot)
model <- ' # direct effect
Y ~ c*X
# mediator
M ~ a*X
Y ~ b*M
# indirect effect (a*b)
ab := a*b
# total effect
total := c + (a*b)
'
fit <- sem(model, data = Data)
summary(fit)
semPaths(fit,title=F,curvePilot=T,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 15, sizeMan2 = 10)
fit2 <- sem(model, data = Data2)
summary(fit2)
library(semPlot)
#lavaan.diagram(fit2)
semPaths(fit2,title=F,curvePilot=T,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
anova(fit,fit2)
fit2 <- sem(model, data = Data2)
summary(fit2)
library(semPlot)
#lavaan.diagram(fit2)
semPaths(fit2,title=F,curvePilot=T,"par", weighted = FALSE, nCharNodes = 7, shapeMan = "rectangle",
sizeMan = 8, sizeMan2 = 5)
fit3 <- sem(modelnomed,data=Data)
modelnomed <- ' # direct effect
Y ~ c*X
M ~ a*X
# total effect
total := c + b
'
fit3 <- sem(modelnomed,data=Data)
modelnomed <- ' # direct effect
Y ~ c*X
M ~ a*X
# total effect
total := c + a
'
fit3 <- sem(modelnomed,data=Data)
fit3
summary(fit3)
anova(fit1,fit3)
anova(fit,fit3)
anova(fit2,fit3)
pathAn1 <- 'x1 ~ x2 + x3 + x4
x2 ~ x4
x3 ~ x4
x1 + x2 +x4 ~ x5'
paModel <- sem(pathAn,data=HolzingerSwineford1939)
summary(paModel)
semPaths(paModel,"par", weighted = FALSE, nCharNodes = 7, layout = "spring",
sizeMan = 8, sizeMan2 = 5)
summary(paModel,fit.statistics=T)
summary(paModel,fit.measures=T)
pathAn2 <- 'x1 ~ x2 + x3 + x4
x2 + x3 + x4 ~ x5'
paModel2 <- sem(pathAn2,data=HolzingerSwineford1939)
summary(paModel2,fit.measures=T)
semPaths(paModel2,"par", weighted = FALSE, nCharNodes = 7, layout = "spring",
sizeMan = 8, sizeMan2 = 5)
anova(paModel,paModel2)
HS.sem <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit_sem <- sem(HS.sem,data=HolzingerSwineford1939)
summary(fit_sem,fit.measures=T, standardized=T)
semPaths(fit_sem, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "spring",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
HS.sem <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit_sem <- sem(HS.sem,data=HolzingerSwineford1939)
summary(fit_sem,fit.measures=T, standardized=T)
semPaths(fit_sem, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "spring",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
HS.model <- ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit <- cfa(HS.model,data=HolzingerSwineford1939)
fit
summary(fit,fit.measures=T)
fit
semPaths(fit, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "spring",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
fit
HS.sem <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9 '
fit_sem <- sem(HS.sem,data=HolzingerSwineford1939)
summary(fit_sem,fit.measures=T, standardized=T)
semPaths(fit_sem, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "spring",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
textual ~~ 1*textual
speed ~~ 1*speed
visual ~~ 1*visual
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "spring",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 1*visual
speed ~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 1*visual
speed ~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~~ 1*visual
speed ~~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 0
speed ~ 0
visual ~~ 1*visual
speed ~~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 1
speed ~ 1
visual ~~ 1*visual
speed ~~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 1
speed ~ 1
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 1*visual
speed ~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
anova(fit_sem,fit_sem2)
anova(fit_sem,fit_sem2)
HS.sem2 <-  ' visual   =~ x2 + x1 + x3
textual  =~ x4 + x5 + x6
speed    =~ x7 + x8 + x9
textual ~ visual + speed
visual ~ 1*visual
speed ~ 1*speed
'
fit_sem2 <- sem(HS.sem2,data=HolzingerSwineford1939)
summary(fit_sem2,fit.measures=T, standardized=T)
semPaths(fit_sem2, what = "col", whatLabels = "std", style = "mx",
rotation =1 , layout = "tree2",  nCharNodes = 7,
shapeMan = "rectangle", sizeMan = 8, sizeMan2 = 5)
