最近我们被客户要求撰写关于结构方程建模的研究报告,包括一些图形和统计输出。
结构方程模型是一个线性模型框架,它对潜变量同时进行回归方程建模
?诸如线性回归、多元回归、路径分析、确认性因子分析和结构回归等模型都可以被认为是SEM的特例。在SEM中可能存在以下关系。
SEM独特地包含了测量和结构模型。测量模型将观测变量与潜变量联系起来,结构模型将潜变量与潜变量联系起来。目前有多种软件处理SEM模型,包括Mplus、EQS、SAS PROC CALIS、Stata的sem和最近的R的lavaan。R的好处是它是开源的,可以免费使用,而且相对容易使用。
本文将介绍属于SEM框架的最常见的模型,包括
目的是在每个模型中介绍其
lavaan语法
在这次训练结束时,你应该能够理解这些概念,足以正确识别模型,认识矩阵表述中的每个参数,并解释每个模型的输出。
结构方程模型的路径部分可以看作是一个回归方程。而在R中,回归方程可以表示为yax1+bx2+c,“”的左边的因变量,右边是自变量,“+”把多个自变量组合在一起。那么把y看作是内生潜变量,把x看作是外生潜变量,略去截距,就构成了语法一。
"=~"的左边是潜变量,右边是观测变量,整句理解为潜变量f1由观测变量item1、item2和item3表现。
"~~"的两边相同,表示该变量的方差,不同的话表示两者的协方差
表示截距
在这种情况下,我们将模拟数据。
y?~?.5*f??#有外部标准的回归强度
f?=~?.8*x1?+?.8*x2?+?.8*x3?+?.8*x4?+?.8*x5??#定义因子f,在5个项目上的载荷。
x1?~~?(1-.8^2)*x1?#残差。请注意,通过使用1平方的载荷,我们在每个指标中实现了1.0的总变异性(标准化的)。
......
#产生数据;注意,标准化的lv是默认的
simData?
#看一下数据
describe(simData)[,1:4]
y?~?f?#?"~回归"
f?=~?x1+?x2?+?x3?+?x4?+?x5?#?"=~被测量的是"
x1?~~?x1?#?方差
x2?~~?x2?#方差
x3~~x3?#变量
x4~~x4?#变量
x5~~x5?#变量
#x4~~x5将是协方差的一个例子
summary(model_m)
inspect(model_m)
Paths
与上述步骤相同,但主要侧重于回归路径。值得注意的是这种方法对调节分析的效用。
02
03
04
##加载数据
set.seed(1234)
Data?<-?data.frame(X?=?X,?Y?=?Y,?M?=?M)
?#?直接效应
?????????????Y?~?c*X?#使用字符来命名回归路径
???????????#?调节变量
?????????????M?~?a*X
?????????????Y?~?b*M
???????????#?间接效应(a*b)
?????????????ab?:=?a*b?#定义新参数
???????????#?总效应
?????????????total?:=?c?+?(a*b)?#使用":="定义新参数
summary(model_m)
Paths(model)
除了指定对5000个样本的标准误差进行bootstrapping外,下面的语法还指出标准误差应进行偏差校正(但不是accelearted)。这种方法将产生与SPSS中的PROCESS宏程序类似的结果,即对标准误差进行偏差修正。
sem(medmodel,se?=?"bootstrap")
我们将使用例子中的相同数据
'
f?=~?x1?+?x2?+?x3?+x4?+?x5
x1~~x1
x2~~x2
x3~~x3
x4~~x4
x5~~x5
'
sem(fit,?simData)
Paths(fit)
anova
正如各模型的LRT所示,sem()和cfa()是具有相同默认值的软件包。CFA可以很容易地使用cfa()或sem()完成 结构方程模型
在这种情况下,我将模拟数据。
#结构成分
y?~?.5*f1?+?.7*f2?#用外部标准回归的强度
#测量部分
f1?=~?.8*x1?+?.6*x2?+?.7*x3?+?.8*x4?+?.75*x5?#定义因子f,在5个项目上的载荷。
x1?~~?(1-.8^2)*x1?#残差。注意,通过使用1平方的载荷,我们实现了每个指标的总变异性为1.0(标准化)。
...
#生成数据;注意,标准化的lv是默认的
sim?<-?sim(tosim)
#看一下数据
describe(sim?)
测试正确的模型
#结构性
y?~?f1+?f2
#测量
f1?=~?x1?+?x2?+?x3?+?x4?+?x5?
f2?=~?x6?+?x7
测试不正确的模型。假设我们错误地认为X4和X5负载于因子2。
incorrect
#结构性
y?~?f1+?f2
#测量
f1?=~?x1?+?x2?+?x3?
f2?=~?x6?+?x7?+?x4?+?x5
summary(model_m)
summary(incorrectmodel_m,?fit.measures?=?TRUE)
Paths(incorrec)
anova
除了不正确模型的整体拟合指数较差--如CFI<0.95,RMSEA>0.06,SRMR>0.08和Chi-square test<0.05所示,正确模型也优于不正确模型,如正确模型的AIC和BIC低得多所示。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。