程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

R数据分析:结构方程模型画图以及模型比较,实例操练

hfteth 2025-02-04 14:10:20 技术文章 16 ℃

一篇文章写清楚一个问题,关注我,自学python!

本来打算写一个python做结构方程模型系列的,发现python并不能生成路径图,于是决定先学习R吧,毕竟我时间有限,之后还是会更新python,也会加上R,感兴趣的朋友可以关注一波。今天给大家写结构方程的模型的比较,顺带写写路径图的画法。

结构方程模型拟合指标

可用于反映模型拟合优度的指标有很多,总体上可以分为3类:绝对指数、相对指数和简约指数,为了更明晰的展示,给大家放一个表吧:


结构方程建模R语言实操

这篇文章建模部分我会写的很简单,因为上篇文章有写,有兴趣的同学移步上篇文章。

今天我们建立以下2个图所示的模型,然后比较2个模型的拟合情况,从而决定最终选择哪一个模型!



我们注意到两个模型的变量都是一样的,不同理论下有不同的关系构成,到底哪一个是正确的呢,让数据来说话吧

  • 导入数据
library(lavaan)
library(semPlot)

data=lav_matrix_lower2full(c(1.00,
                             .53,	1.00,	
                             .15,	.18,	1.00,		
                             .52,	.29,	-.05,	1.00,	
                             .30,	.34,	.23,	.09,	1.00))
colnames(data) = 
  rownames(data) = 
  c("morale", "illness", "neuro", "relationship", "SES") 

以上代码实现了R包的载入和数据的建立并命名

  • 建立模型
#model 1
model1 = 'illness ~ morale
relationship ~ morale
morale ~ SES + neuro
'

#model 2
model2 = 'SES ~ illness + neuro
morale ~ SES + illness
relationship ~ morale + neuro
'

以上代码完成了两个模型的建立,大家可以看图验证。

  • 拟合模型并画路径图
model1.fit = sem(model1, 
                 sample.cov=data, 
                 sample.nobs=469)
semPaths(model1.fit, 
         whatLabels="par", 
         layout="spring")

model2.fit = sem(model2, 
                 sample.cov=data, 
                 sample.nobs=469)
semPaths(model2.fit, 
         whatLabels="par", 
         layout="spring")

以上代码实现了2个模型的拟合以及路径图的绘制,绘出的图如下:




  • 拟合参数比较
fitmeasures(model1.fit)
fitmeasures(model2.fit)

以上代码可以得出每个模型的拟合参数,让大家瞅一瞅,输出的参数非常全:

拟合参数的比较过程

通过运行fitmeasures方法,我们可以得到各种拟合参数,如下表所示我们将常用的2个模型的拟合参数列出来以做对比(只列出了部分):

解释一下我了解到的以上的拟合指数的比较:绝对指数(如GFI,SRMR,RMSEA)衡量了所考虑的理论模型与样本数据的拟合程度! 它只基于理论模型本身不与别的模型比较,首先是卡方值越小越好,RMSEA小于0.05 表示模型拟合得好,在0.05-0.08之间表示模型基本可以接受,RMSEA也是越小越好;CFI,NFI,TLI越大越好,AIC,ECVI越小越好,所以按数据说话的话,这两个模型便是模型2更好一些。

小结

今天给大家写了R语言的结构方程建模实现以及模型比较,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的,加油。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

python机器学习:机器学习模型评价-交叉验证与留一验证

python数据分析:如何用python做路径分析,附数据库实例操练

Tags:

最近发表
标签列表