打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
结构方程模型——R语言lavaan包
问题的提出
在社会科学的定量研究中,有很多变量是可以直接测量的,如:收入、年龄、受教育程度等,只要在问卷中设计一个调查此变量的问题,就能轻松的收集到这些变量的信息,并且对这些变量的测量效果信效度一般都会较高。可一旦我们要研究一个不是那么容易直接测量的变量该怎么呢?举个栗子:)——民主;如果要研究国家的民主状况,很显然直接参考某些国家发布的所谓“民主排名”是不可靠的,而如果在问卷里直接询问:你认为你们国家民主吗?那出来的结果信效度就会很差,记得一首歌的歌词就这么描述民主:Hey democracy, why you always hiding somewhere so hard to seek. So many counterfeits copying, so I guess you must be some kind of luxury. 放在这里很能说明这一变量的测量难度,针对这一问题我们可能会想到靠一些客观的指标来间接的测量一个国家的民主情况。这就引出了潜变量和观测变量的概念。
潜变量与观测变量
观测变量(observed variables)也叫显变量,指的就是可以直接测量的变量,也就是上文中的收入、受教育程度等。
潜变量(latent variables)也叫隐变量,是无法直接测量的变量,也就是上述问题中的民主情况。潜变量通常需要通过设计若干指标间接加以测量。
再回到一开始问题的提出,如果通过一些指标间接地测量出来了“民主”这一潜变量,我们还想探讨这一潜变量与另外同样也是潜变量的变量之间的关系该通过何种方法呢?比如我们想探讨发展中国家的一段时期内的民主情况对后一时期内的民主情况有什么影响,这段时期内的非民主情况对这些国家的现阶段和下一阶段内的民主情况有何影响,是否都是正相关的关系,这就涉及到了两个回归方程,一个简单线性回归,一个多元线性回归,在这里对这些变量概念的定义是不同于回归分析的。
外生变量和内生变量
外生变量(exogenous variables):指模型中只起解释作用的变量,它们能够影响其他变量,而不受其他变量的影响。比如上文中的发展中国家的一段时期内的非民主情况。
内生变量(endogenous variables):指模型中受其他变量(包括外生变量和内生变量)影响的变量。比如上文中的发展中国家的一段时期内的民主情况和后一时期内的非民主情况。
现在知道了显变量和潜变量,外生变量和内生变量,如果我们要把以上的想法结合起来即测量潜变量,再探讨潜变量之间的关系,我们要运用什么方法呢?
结构方程模型
以上的想法引出了这篇文章的重点——结构方程模型。
什么是结构方程模型?结构方程模型(structural equation model,简称sem)是综合运用多元回归分析、因子分析和路径分析等统计方法的一种统计分析工具。具体来说结构方程模型是反映潜变量和显变量关系的一组方程,其目的是通过显变量的测量推断潜变量,并对假设模型进行验证。
我们可以把结构方程模型看作是一个“方法集”,它运用许多方法对假设模型进行验证,是一种模型检验技术。
结构方程模型的构成
结构方程模型一般情况下由两个部分组成——测量模型和结构模型;
测量模型(measurement model)是联系观测变量和潜变量的测量模型,其目的是描述观测变量是否适合作为潜变量的测量手段;
结构模型(structural model)是经由联立方程将潜变量联系在一起的结构模型,它界定了各潜变量之间的关系。
结构模型和测量模型
结构方程模型的估计方法有很多种包括常见的极大似然估计、最小二乘估计等等。
结构方程模型的功能强大,比如可以分析有多个因变量的模型、可以分析复杂的中介模型、可以估算潜在变量以解释测量误差等等。
结构方程模型的前提假定很多,我们在这里就不详细描述了,其实在实际运用中,只要代码能跑出结果问题都不太大(前提是必须有理论支持,不然跑出来也解释不了),所以再介绍完了结构方程模型的基础概念,就直接让我们上手R进行操作吧(≧∇≦)/
案例分析
数据介绍
接着上文的问题,我们要研究发展中国家的民主情况。R语言lavaan包中自带了一个数据:PoliticalDemocracy,其中包含了很多显变量和潜变量。
变量含义
y11960年专家对出版物自由的评价
y21960年的反对党派自由
y31960年选举的公平性
y41960年选举产生的立法机关效率
y51965年专家对出版物自由的评价
y61965年的反对党派自由
y71965年选举的公平性
y81965年选举产生的立法机关效率
x11960年每单位资本GNP
x21960年每单位资本的物质能量消费
x31960年工业劳动力占比
我们用其中的y1,y2,y3,y4来表示1960年的民主情况(dem60);y5,y6,y7,y8来表示1965年的民主情况(dem65);x1,x2,x3来表示1960年的非民主情况(ind60)
建立如下的结构方程模型:
结构方程模型示意图
其中方块表示显变量,圆圈表示潜变量,单向箭头表示单向路径关系,双向箭头表示双向路径关系
结构方程模型分析
载入包
library(lavaan)
## This is lavaan 0.6-15
## lavaan is FREE software! Please report any bugs.library(semPlot)
本次结构方程模型分析使用的包是lavaan包,是由比利时Ghent大学的Yves Rosseel博士开发,完全开源免费,向Yves的开源精神致敬∠(`ω´*), 此外本次lavaan包的使用参考了lavaan简明教程 [中文翻译版],网址为https://www.cnblogs.com/squidGuang/p/9054301.html
载入数据,并查看数据结构
data('PoliticalDemocracy')
str(PoliticalDemocracy)
在lavaan包中进行结构方程模型分析所用的语法是非常简洁明了:
~:表示变量的回归关系
~=:用于表示测量模型,此符号的左侧为潜在变量,右侧为被测变量
~~ :表示方差或者协方差(也就是残余相关),当与自己用是为方差(y ~~ y),当与其他人用时为协方差(y ~~ x)
~1:表示截距,也可以加均值,只有截距项的回归方程表达如下:y ~ 1
根据上文的理论模型建立结构方程模型:
model <- '#测量模型
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
#回归
dem60 ~ ind60
dem65 ~ ind60 + dem60
#残余相关
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8'
拟合结构方程模型
fit <- sem(model, data = PoliticalDemocracy)
因为R是面向对象编程,所以拟合好的模型要用summary()函数进行结果的提取
summary(fit, standardized = T)#用standardized = TRUE来标准化参数值
从Latent Variables的结果中可以看出p值都小于0.05,所以所选择的显变量能够很好地测量潜变量,在结构方程模型的测量模型中通过将其中一个观测变量的系数固定为1,可以建立一个标准化的测量单位,并使得其他观测变量的系数可以被解释为相对于这个单位的测量单位。如果不指定固定那个系数为1,lavaan包会自动固定每一个测量模型的第一个显变量的参数为1。
从Regressions的结果中可以看出p值都是小于0.05的,说明我们的路径模型假设成立,即1960年的非民主情况对1960年的民主情况产生了正向的影响,在控制了非民主情况的变量情况下1960年的民主情况对1965年的民主情况产生了正向的影响。
从Covariances的结果可以看出y2和y6以及y6和y8存在残余相关。
接下来就到了结构方程模型的评估,结构方程模型的评估指标非常的多,这里给大家一些常用的指标作为参考
结构方程模型的评估
fitMeasures(fit,
c('chisq','df','pvalue','gfi','cfi','rmr','srmr','rmsea'))## chisq df pvalue gfi cfi rmr srmr rmsea
## 38.125 35.000 0.329 0.923 0.995 0.276 0.044 0.035
从结果来看我们的这个结构方程模型的效果是很好的
最后我们用semPlot包来可视化拟合好的结构方程模型(其中线的粗细代表标准化后的系数大小,绿色代表正向关系,虚线代表固定系数为1的显变量)
semPaths(fit, #上面跑出来的数据模型
what = 'std', #图中边的格式,#'path','std','est ','cons '
layout = 'tree2', #图的格式, tree circle spring tree2 circle2
fade = F, #褪色,按照相关度褪色
residuals = F ,#残差/方差要不要体现在图中,可T和F
nCharNodes = 0
)
以上就是本文要介绍的结构方程模型的全部内容,当然结构方程模型的内容非常复杂,本文提及的只是结构方程模型的冰山一角,而且lavaan包的功能非常强大不仅能够进行结构方程模型的分析,也能进行验证性因子分析cfa,限于篇幅,就不多赘述,以后有机会再详细介绍ヾ( ̄▽ ̄)ByeBye
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
R数据分析:如何用lavaan包做结构方程模型,实例解析
基于R语言的结构方程:lavaan简明教程 [中文翻译版]
搞不懂结构方程模型?一文学会(附代码)
结构方程模型(SEM)
AMOS | 拯救你的毕业论文
结构方程模型到底是啥?真的过时了吗
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服