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

liftword2个月前 (02-25)技术文章20

一篇文章写清楚一个问题,关注我,自学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做路径分析,附数据库实例操练

相关文章

readlink -f :显示文件全路径_显示文件完整路径

在 CentOS(及其他 Linux 系统)中,readlink 是一个用于解析符号链接(Symbolic Links)路径的命令。它可以帮助你获取符号链接指向的实际文件或目录的绝对路径,尤其在处理多...

20 天学 Python 文件操作:Day 7 文件路径与目录操作

在文件操作中,路径和目录是不可避免的重要部分。掌握路径的处理和目录操作可以大大提高文件管理效率。今天,我们将学习如何使用 Python 操作文件路径和目录。1. 什么是文件路径?文件路径是操作系统定位...

推荐个超实用的Python标准库pathlib,玩转路径操作

pathlib学习 Python 时,尤其是在进行文件操作和数据处理时,经常会处理路径问题。最常用和常见的是 os.path 模块,它将路径当做字符串进行处理,如果使用不当可能导致难以察觉的错误,而且...

20 天学 Python 文件操作:Day 18 文件路径与操作系统兼容性

在开发跨平台应用程序时,文件路径和操作系统的兼容性是必须要处理的问题。今天我们将学习如何使用 Python 处理文件路径并确保代码在不同操作系统下运行正常。1. 文件路径的基本概念不同操作系统的文件路...

DeepSeek Python脚本定时任务设置:三大主流方案全面解析

在Python脚本定时任务设置中,根据不同的操作系统和需求场景,可采用以下三种主流方案:一、Windows系统方案(任务计划程序)1. 创建任务路径通过【控制面板】→【管理工具】→【任务计划程序】→【...

Python高手进阶:深入os.path模块高效处理路径问题

Python的os.path模块是os模块中关于路径操作部分的子模块,它提供了大量用于处理文件和目录路径的函数,特别适用于跨平台的文件系统操作。无论是在Windows、Linux还是macOS上,os...