龙空技术网

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

Codewar 702

前言:

当前朋友们对“python常用模型”大体比较重视,兄弟们都需要知道一些“python常用模型”的相关内容。那么小编在网摘上搜集了一些关于“python常用模型””的相关内容,希望大家能喜欢,大家一起来学习一下吧!

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

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

结构方程模型拟合指标

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

常用的拟合指标

结构方程建模R语言实操

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

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

模型a

模型b

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

导入数据

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 1model1 = 'illness ~ moralerelationship ~ moralemorale ~ SES + neuro'#model 2model2 = 'SES ~ illness + neuromorale ~ SES + illnessrelationship ~ 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个模型的拟合以及路径图的绘制,绘出的图如下:

此为自动绘制的模型1的路径图

自动绘制的模型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做路径分析,附数据库实例操练

标签: #python常用模型