前言:
当前朋友们对“python常用模型”大体比较重视,兄弟们都需要知道一些“python常用模型”的相关内容。那么小编在网摘上搜集了一些关于“python常用模型””的相关内容,希望大家能喜欢,大家一起来学习一下吧!一篇文章写清楚一个问题,关注我,自学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 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个模型的拟合以及路径图的绘制,绘出的图如下:
拟合参数比较
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常用模型