首页 > 编程知识 正文

元分析结构方程模型,r语言做结构方程模型

时间:2023-05-03 09:23:26 阅读:44418 作者:3381

r的功能很强大,有很多各种各样的包。 但是包太多了,引起了很大的麻烦。 必然,许多软件包可以创建结构方程模型,如sem、psych、OpenMx和lavaan。 我选择了lavaan包。 原因:语法概要简单、快捷,支持非正规、连续数据,能够处理缺失值。

lavaan软件包是由比利时根特大学的Yves Rosseel开发的。 lavaan的命名来自latent variable analysis,由每个单词的前两个字符la-va-an——lavaan组成。

为什么这么简单呢? 主要是因为那个lavaan model syntax,如果你能做r的回归分析,那对你来说很容易。

一、语法介绍

语法一: f3~f1 f2 (路径模型) ) ) ) ) ) ) ) ) ) )。

结构方程模型的路径部分可视为回归方程。 另一方面,在r中,回归式可以表示为y~ax1 bx2 c、"~"左边的因子、右边为自变量、" "表示为多个自变量的组合. 那么,把y看作内生潜变量,把x看作外生潜变量,省略截距的话,就是lavaan model syntax的语法1。

语法二: f1=~ item1 item2 item3(测量模型) ) )。

'=~'的左边是潜在变量,右边是观测变量,作为句子整体,潜在变量f1被理解为由观测变量item1、item2、item3来表现。

语法三、item1 ~~ item1,item1 ~~ item2

'~~ '的两边相同,表示该变量的方差,不同则表示两者的协方差

语法四: f1 ~ 1

表示截距

还有其他高级语法。 有关详细信息,请参阅lavaan帮助文档。 因为不能用于一般结构方程的建模分析,所以不列出。

二.模特的三种表示方法

以验证因子分析为例进行说明,下图所示的模型如下。

方法1 :说明最简单

指定最基本的要素即可,除此之外由函数自动实现,对模型的控制力最弱。 仅用于函数cfa (和sem )

模特

textual=~x4 x5 x6

speed=~x7 x8 x9 '

fit

请注意,在指定此模型的方法中,拟合时,潜在变量第一个测量变量的系数载荷缺省为1。 要指定潜在变量的方差为1,请执行以下操作:

model.bis

textual=~ NA*x4 x5 x6

speed=~ NA*x7 x8 x9

visual ~~ 1*visual

文本~~1 *文本

speed ~~ 1*speed '

方法2 :完整说明

必须指定所有元素,对模型的控制力最强,适用于lavaan ()函数,适合高级用户

model.full

textual=~ 1*x4 x5 x6

speed=~ 1*x7 x8 x9

x1 ~~ x1

x2 ~~ x2

x3 ~~ x3

x4 ~~ x4

x5 ~~ x5

x6 ~~ x6

x7 ~~ x7

x8 ~~ x8

x9 ~~ x9

视觉~ ~视觉

文本~ ~文本

引线~~引线

视觉~ ~文本速度

textual ~~ speed '

fit

方法3 :不完全说明

最简单、完整描述的混合版本。 在拟合时添加auto.*参数并将其应用于lavaan ()函数

model.mixed

visual=~ 1*x1 x2 x3

textual=~ 1*x4 x5 x6

speed=~ 1*x7 x8 x9

# factor covariances

视觉~ ~文本速度

textual ~~ speed '

fit

有关可以设置的参数的详细信息,请参阅帮助

PS:将参数mimic='Mplus '设置为lavaan ()函数可获得与Mplus在数值和外观上类似的结果,而将mimic='EQS '设置为输出与EQS在数值上类似的结果

三.拟合结果的显示

显示拟合结果的最简单方法是使用summary ()函数,如下所示

摘要(fit,fit.measures=TRUE ) ) ) )。

但是,summary ) )仅适用于显示结果,而parameterEstimates ) )返回数据框以便于进一步处理

参数定义(fit,ci=FALSE,标准=true ) )。

得到大于10校正指数

MI

p>subset(MI,mi>10)

此外,还有其他的展示拟合结果的函数,功能还是蛮强大的

四、结构方程模型

(1)设定模型

model

# measurement model

ind60 =~ x1 + x2 +x3

dem60 =~ y1 + y2 + y3 + y4

dem65 =~ y5 + y6 + y7 + y8

# regressions

dem60 ~ ind60

dem65 ~ ind60 + dem60

# redisual covariances

y1 ~~ y5

y2 ~~ y4 +y6

y3 ~~ y7

y4 ~~ y8

y6 ~~ y8'

(2)模型拟合

fit

summary(fit, standardized = TRUE)

(3)给回归系数设置标签

给回归系数设定标签在做有约束条件的结构方程模型时会很有用。当两个参数具有相同的标签时,会被视为同一个,只计算一次。

model.equal

ind60 =~ x1 + x2 + x3 +

dem60 =~ y1 + d1*y2 + d2*y3 + d3*y4

dem65 =~ y5 + d1*y6 + d2*y7 + d3*y8

# regressions

dem60 ~ ind60

dem65 ~ ind60 + dem60

# residual covariances

y1 ~~ y5

y2 ~~ y4 + y6

y3 ~~ y7

y4 ~~ y8

y6 ~~ y8'

(4)多组比较

anova(fit, fit.equal)

anova()会计算出卡方差异检验

(5)拟合系数

lavaan包可以高度定制化的计算出你想要的拟合指标值,例如,我想计算出卡方、自由度、p值、CFI、NFI、IFI、RMSEA、EVCI的值

fitMeasures(fit,c("chisq","df","pvalue","cfi","nfi","ifi","rmsea","EVCI"))

(6)多组结构方程

在拟合函数里面设置 group参数即可实现,同样的可以设置group.equal参数引入等式限制

五、作图

Amos以作图化操作见长,目前版本的Mplus也可以实现作图,那R语言呢,自然也是可以的,只不过是另一个包——semPlot,其中的semPaths()函数。

简单介绍一下semPaths()中的主要函数

semPaths(object, what = "paths", whatLabels, layout = "tree", ……)

(1)object:是拟合的对象,就是上文中的“fit”

(2)what:设定图中线的属性, 默认为paths,图中所有的线都为灰色,不显示参数估计值;

semPaths(fit)若what设定为est、par,则展示估计值,并将线的颜色、粗细、透明度根据参数估计值的大小和显著性做出改变

semPaths(fit,what = "est")若设置为stand、std,则展示标准参数估计

semPaths(fit,what = "stand")

若设置为eq、cons,则与默认path相同,如果有限制等式,被限制的相同参数会打上相同的颜色;

(3)whatLabels:设定图中线的标签name、label、path、diagram:将边名作为展示的标签

est、par:参数估计值作为边的标签

stand、std:标准参数估计值作为边的标签

eq、cons:参数号作为标签,0表示固定参数,被限制相同的参数编号相同

no、omit、hide、invisible:隐藏标签

(4)layout:布局

主要有树状和环状两种布局,每种布局又分别有两种风格。

默认为“tree”,树状的第二种风格如下图,比第一种看起来舒服都了

semPaths(fit,layout = "tree2")

第一种环状

semPaths(fit,layout = "circle")

擦,都揉成一团了!

试试第二种风格

semPaths(fit,layout = "circle2")

还好一点。如果把Rstudio默认的图片尺寸设计好,作图效果会更棒。

还有一种叫spring的布局,春OR泉?

semPaths(fit,layout = "spring")

看起来跟环状的很像。

详细内容可以阅读以下文献,以及相应的help文档:

[1]Rosseel Y. lavaan: An R package for structural equation modeling[J]. Journal of Statistical Software, 2012, 48(2): 1-36.

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。