查看原文
其他

R包lavaan的结构方程建模-潜变量结构模型

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-05-08
R包lavaan的潜变量结构模型
前文已经分别简介了使用lavaan包执行验证性因子分析(CFA)、路径分析的过程,它们均为结构方程模型(SEM)的不同建模方法。本篇继续展示潜变量结构模型(Latent Variable Structural Mode)。
潜变量结构模型可视为路径分析的扩展,在路径分析中,所考虑的变量都是已知的观测变量,与此相比,潜变量结构模型涉及了潜在变量。识别数据集中潜在变量的方法有很多,其中一种常见方法是因子分析,因此潜变量结构模型的一种常见形式即是验证性因子分析路径分析的组合,验证性因子分析验证潜在因子(潜在变量),之后将潜在变量代入路径分析,假设并测试它们之间的关系。
关于SEM的基本概念描述,可参考前文
接下来就以这种验证性因子分析和路径分析的组合形式为例,展示Rlavaan的潜变量结构模型的构建过程。

 

数据集


lavaan包的内置数据集PoliticalDemocracy,记录了发展中国家政治民主和工业化的多种指标,共涉及75个对象(国家)和11个变量(政治民主或工业化指标)。

library(lavaan)
 
#数据集,详情 ?PoliticalDemocracy
dat <- PoliticalDemocracy
head(dat)


对于11个变量,分别为:

y1,1960年新闻自由的专家评级;

y2,1960年政治反对派自由;

y3,1960年选举的公正性;

y4,1960年当选立法机关的效力;

y5,1965年新闻自由的专家评级;

y6,1965年的政治反对自由;

y7,1965年选举的公正性;

y8,1965年当选立法机关的效力;

x1,1960年人均国民生产总值(GNP);

x2,1960年人均能源能耗;

x3,1960年工业劳动人口的百分比。

 

这些变量之间具有如下的结构关系:

y1、y2、y3、y4代表了1960年的政治民主指标(dem60 ~ y1 + y2 + y3 + y4);

y5、y6、y7、y8代表了1965年的政治民主指标(dem65 ~ y5 + y6 + y7 + y8);

x1、x2、x3代表了1960年的工业化指标(ind60 ~ x1 + x2 + x3)。

那么可知,dem60、dem65和ind60即代表了数据集的潜在变量,反映了这些发展中国家的政治民主和工业化发展程度。不可否认,一个国家的政治民主发展水平和工业化发展水平之间存在密不可分的关系,因此我们可以推断,潜在变量之间还存在这样的结构关系:

dem60 ~ ind60;

dem65 ~ ind60 + dem60

综合考虑(潜)变量和(潜)变量之间的因果关系,整个数据集可以建立如下模型:


那么,我们的推断是否合理呢?此时潜变量结构方程模型是个不错的方法。

注:作为示例演示,以下操作忽略数据集是否满足多元正态性。

 

lavaan的验证性因子分析评估潜在变量


首先就是需要确定数据集中的潜在变量是否合适,我们使用验证性因子分析来实现验证过程。

##验证性因子分析(CFA)
#假定潜变量
cfa_model <- '
#latent variables
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
 
#note that lavaan automatically includes latent covariances
#but we can add here anyway to be explicit
ind60 ~~ dem60
ind60 ~~ dem65
dem60 ~~ dem65
'
 
#执行 CFA,详情 ?cfa
cfa_fit <- cfa(model = cfa_model, data = dat)
summary(cfa_fit)
 
#模型拟合度,详情 ?fitmeasures
fitmeasures(cfa_fit, c('chisq', 'rmsea', 'cfi', 'aic'))


通过在验证性因子分析中,预指定的潜在变量(潜在因子)和观测变量间的关系,并比较预测矩阵和观测矩阵的差异量化模型拟合度。几种常见的评估拟合度的指标显示,CFI值反映出模型拟合良好,但RMSEA值表明模型拟合度一般。如果期望改进模型(寻找更合适的潜在变量和观测变量间关系),可参考前文验证性因子分析中的方法(该文也有对CFI、RMSEA值等概念的描述,对于AIC的理解可参考该文)。

这里作为示例,暂且认为潜在变量是合适的,即原始定义的模型是合理的。然后下一步进行潜变量结构方程建模。

  

lavaan的结构方程建模


我们将本篇一开始时假定的代表政治民主和工业化变量间因果关系结构输入,进行SEM建模。

  

SEM建模与模型评估


lavaan中,结构方程模型通过sem()函数实现。

##结构方程模型(SEM)
#假定变量结构
sem_model <- '
#latent variables
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
 
#regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60
 
#residual covariances
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
'
 
#执行 SEM,详情 ?sem
#这里同时包含了观测变量以及潜在变量的建模,即一个潜变量结构方程建模
#如果 model 中不存在潜在变量,仅为观测变量,则该模型即为一种普通的路径分析模型
sem_fit <- sem(model = sem_model, data = dat, se = 'bootstrap', bootstrap = 100)
summary(sem_fit, standardized = TRUE, fit.measures = TRUE, rsquare = TRUE)
 
#模型拟合度,详情 ?fitmeasures
fitmeasures(sem_fit, c('chisq', 'rmsea', 'cfi', 'aic'))
 
#路径图展示模型中的因果关系,详情 ?semPaths
#例如,连线中的数值用于反映标准化的回归系数(标准化的参数估计值)
library(semPlot)
 
semPaths(sem_fit, what = 'est', layout = 'tree', residuals = FALSE, 
        edge.label.cex = 1, edge.color = 'red')

summary()所得概要主体部分的理解,已在前文路径分析中作了简单描述。

根据模型拟合检验统计量(卡方统计量,Chi-square)、RMSEA等的p值(p>0.05)可知,模型拟合优度的提升空间几乎很低了,模型中的有效路径基本识别完全。


且模型拟合优度评估显示,所构建的SEM是很可观的。


(潜)变量间的路径关系也都很显著,表明政治民主发展水平确实受工业化发展水平的推动。


路径图展示图,我们可根据参数估计值的大小,并结合路径的显著性(查看summary(sem_fit)中的概要,包括参数估计值,以及显著性p值),评估关键的变量关系。对于示例数据,就可获知哪种工业化或政治民主指标对于国家发展是更重要的。


  

SEM模型改进


lavaan中的一般方法,如果期望调整该潜变量结构模型中的路径结构,使用MI值评估(前文验证性因子分析路径分析也是如此操作)。

#通过 MI 值评估是否需要考虑一些遗漏的变量间关系
mf <- modificationindices(sem_fit)
mf <- mf[order(mf$mi, decreasing = TRUE), ]
head(mf)


lhs、op、rhs指示了建议添加的(潜)变量路径。MI值越高,代表这种路径的添加更有利于改善现有模型。(添加时,将这种关系在SEM计算的第一步,加入至假定变量结构公式中)

#例如将 ind60 与 y4 的关系考虑至模型中
sem_model2 <- '
#latent variables
ind60 =~ x1 + x2 + x3 + y4 #在原式中继续添加即可
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8

#regressions
dem60 ~ ind60
dem65 ~ ind60 + dem60

#residual covariances
y1 ~~ y5
y2 ~~ y4 + y6
y3 ~~ y7
y4 ~~ y8
y6 ~~ y8
'

#执行 SEM
sem_fit2 <- sem(model = sem_model2, data = dat, se = 'bootstrap', bootstrap = 100)
summary(sem_fit2)

#拟合度评估
fitmeasures(sem_fit2)

不过切记这种“建议”只是基于某种数学上的统计指标给定,不可盲目接受,还需仔细考虑它们的存在意义是否是合适的。就上述示例而言,对于ind60(1960年的工业化指标)与y4(1960年当选立法机关的效力)的关系,真的是种合理的推断吗?此时应当谨慎对待。

  

参考资料


http://lavaan.ugent.be

https://benwhalley.github.io/just-enough-r/cfa.html

  


链接

R包lavaan的结构方程建模-路径分析

结构方程模型(SEM)和分段结构方程模型简介

R包lavaan的验证性因子分析(CFA)

简单总结一下常见的基于距离的差异检验方法

R包ade4的RLQ分析和第四角分析

协惯量分析(CoIA)及其在R中的实现

RDA、db-RDA(CAP)及CCA的变差分解

R包vegan的典范对应分析(CCA)

R包vegan的基于距离的冗余分析(db-RDA)

R包vegan的冗余分析(RDA)

R包vegan的非度量多维标度(NMDS)分析

处理同时含有定量和分类变量的数据集的PCA方法



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存