查看原文
其他

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

生信小白鱼 鲤小白 小白鱼的生统笔记 2022-05-08
R包lavaan的路径分析
前文已经简介了使用lavaan包执行验证性因子分析(CFA)的过程,CFA可视为结构方程模型(SEM)的一种建模方法,CFA在SEM中也称为测量模型。
本篇继续展示lavaan包的另一种SEM建模方法,路径分析(Path Analysis)。
关于SEM的基本概念描述,可参考前文

 

数据集


使用R自带的mtcars数据集作演示SEM的路径分析过程。

首先可以使用相关图探索数据中变量之间的关系。

#mtcars 中的变量间相关性
library(GGally)

ggcorr(mtcars[-c(5,7,9)], nbreaks = NULL, label = TRUE, low = 'red3', high = 'green3',
label_round = 2, name = 'Correlation Scale', label_alpha = TRUE, hjust = 0.75) +
ggtitle(label = 'Correlation Plot') +
theme(plot.titl = element_text(hjust = 0.6))


由于SEM是模型验证的方法,因此需要考虑一个初始模型结构。

对于该示例数据集,根据变量间的相关性关系,假定了如下的变量间因果关系的模型(单向路径结构,前者决定后者,反方向作用无效)。


该假定的模型中,所涉及的变量均为已知的观测变量。如果使用SEM验证该模型,即可使用路径分析来实现。

注:实际情况中,SEM中变量间的因果关系,取决于研究设计,或者已知的自然或社会现象。本文作为示例演示,还请忽略本示例模型是否是有实际意义的;其次,忽略数据集是否满足多元正态性。


lavaan的路径分析

 

将上述假定的变量间因果关系结构输入,进行SEM建模,验证变量间的因果关系是否是有效的。

lavaan中,SEM通过sem()函数实现。

##结构方程模型(SEM)
#假定变量结构
model <- '
# Blue Relationship
mpg ~ hp + cyl + disp + carb + am + wt

# Green Relationship
hp ~ cyl + disp + carb
'

#执行 SEM,详情 ?sem
#这里 model 中不存在潜在变量,仅为观测变量,则该模型即为一种常规的路径分析
library(lavaan)

path <- sem(model = model, data = mtcars, se = 'bootstrap', bootstrap = 100)
summary(path, standardized = TRUE, fit.measures = TRUE, rsquare = TRUE)

概要中主要包含了拟合度指标和统计检验结果,可据此对模型快速评估。

模型拟合检验统计量(即卡方统计量,Chi-square)的p值若显著,则表明模型有待提升。

CFI和TFI是拟合度的指标,大于0.9的值是“良好”模型拟合的标准,越接近1越好。

AIC和BIC是比较模型的标准,值越低表明模型拟合度越好。通常在存在多个备选模型的情况下使用,既要考虑较小的AIC或BIC值,又要尽可能选择简约模型。

RMSEA的p值若显著,则表明模型有待提升。

由于路径分析是回归模型的扩展,变量间关系通过回归确定,Regressions统计了模型中各变量的回归权值(参数估计值,绝对值越大表明变量间关系越大),p值反映了变量重要程度的显著性。

R平方是反映系数拟合度的描述性统计量。


因为本示例的模型并非一个真实的试验研究,变量间的因果关系也只是根据相关性随意地假定的,所以上述SEM显示模型“非常糟糕”:模型拟合优度比较差,且很多变量间的关系不显著,这在意料之中。

而且,这也从侧面反映了一个常见问题:相关性并不意味着因果关系。

真实试验研究数据的结构建模中,如果目的明确,变量间的归属也合理,原则上模型不会很差。

 

此外,模型的拟合度评估还可通过fitmeasures()函数给出。如以下通过卡方统计量、RMSEA、CFI、AIC值等指标对模型拟合度评估。

#模型拟合度,详情 ?fitmeasures
fitmeasures(path, c('chisq', 'rmsea', 'cfi', 'aic'))

 

尽管该模型不合适,但一些函数还得展示它们的使用,请允许我继续。

路径图展示图,我们可根据参数估计值的大小,并结合路径的显著性(查看summary(path)),评估关键的变量结构。

#展示变量间因果关系的路径图,详情 ?semPaths
#例如,连线中的数值用于反映标准化的回归系数(标准化的参数估计值)
library(semPlot)

semPaths(path, what = 'std', layout = 'tree', residuals = FALSE, edge.label.cex = 1)

 

同lavaan的验证性因子分析中的方法,如果期望调整模型中的路径结构,也可使用MI值评估。

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


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

不过这种“建议”只是基于某种数学上的统计指标给定,不可盲目接受,还需仔细考虑它们的存在意义是否是合适的,实际情况中一定要谨慎对待。就拿本文中的示例来说,很多变量间关系都是“强行定义”的,故结果中这些关系大都是直接拒绝的(p>0.05),即便模型侥幸通过了,它们的实际意义可能也很难解释。

 

参考资料


http://naes.unr.edu/shoemaker/teaching/NRES-746/SEM.html

 


链接

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

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

探索性因子分析(EFA)及其在R中实现

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

多元因子分析(MFA)及其在R中实现

R包cocorresp的协对应分析(CoCA)

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

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

R包vegan的主响应曲线(PRC)

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

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

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



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

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