mplus数据分析(增长模型潜增长模型与增长混合模型再解释)
混合模型,增长混合模型这些问题咨询的同学还是比较多的,今天再次尝试写写它们的区别,希望对大家进一步理解两种做轨迹的方法有帮助。
首先,无论是LCGA还是GMM,它们都是潜增长模型的框框里面的东西:
Latent growth modeling approaches, such as latent class growth analysis (LCGA) and growth mixture modeling (GMM), have been increasingly recognized for their usefulness for identifying homogeneous subpopulations within the larger heterogeneous population and for the identification of meaningful groups or classes of individuals我们一开始做增长模型或者增长曲线模型的时候,初始的目的就是看轨迹,最简单的想法就是看看我的研究人群的某个变量的轨迹随着时间是如何发展的,这是目的1--------不考虑异质性,认为所有的人都有同样的轨迹,协变量对所有人的作用都是一样的。
然后更进一步,人们发现,其实人群中就算是同一个变量(特质)是存在着不同的轨迹的,如果我们单单认为一个轨迹能说明问题,其实是将问题过分地简单化了,是不对的-------这个时候考虑轨迹的潜类别和才是更加好的方法------考虑轨迹的潜类别就涉及到两个方法了一个就是GMM另一个就是LCGA。
增长混合模型GMM 下图左边是全体个案的增长轨迹,传统的增长模型试图去描述整个群体的增长情况,认为所有个体的增长情况都可以用一个总的平均增长趋势去描述(左图中的实线)。但是我们看整个人群中的其中一个亚组人群(右图),其实这个亚组的增长趋势是和人群总体大不相同的,人群的总体趋势是在上升,此亚组则是在下降,这也是从一个侧面说明考虑轨迹的潜类别的重要意义,我就是希望通过这么一套方法识别出整体轨迹发展的异质性,实现分类和干预的精准化:
其实下面的左图可以理解为多水平模型(随机截距+随机斜率),中间的实线就是拟合出来的时间的固定效应:
The conventional growth model can be described as a multilevel, randomeffects model (Raudenbush & Bryk, 2002). According to this framework, intercept and slope vary across individuals and this heterogeneity is captured by random effects
文章图片
而GMM是在干什么呢?
GMM, on the other hand, relaxes this assumption and allows for differences in growth parameters across unobserved subpopulations.GMM认为轨迹,也就是变量随着时间变化的情况是存在亚组的,而且这些亚组的斜率和截距其实不一样了,这些亚组怎么来呢,是用潜变量表示的,就是潜轨迹类别,叫做latent trajectory classes:
This is accomplished using latent trajectory classes (i.e., categorical latent variables), which allow for different groups of individual growth trajectories to vary around different means (with the same or different forms)就是你这样理解:多水平模型和潜类别分析一结合就有了增长混合模型(这句话我似乎之前在文章中写过,感兴趣的同学再去翻翻之前的文章):就是将多水平模型的随机斜率弄出来潜类别。
每个潜轨迹类别都可以有其自己的轨迹参数,然后相应轨迹类别的人群在相应轨迹的斜率均值上下随机扰动,形成增长混合模型。
潜类别增长模型LCGA 刚刚写了增长混合模型,大家注意标红的文字,增长混合模型是允许个体围绕亚组轨迹均值扰动的,这个是混合的意思,而LCGA也是一种GMM的特殊情况:
Latent class growth analysis (LCGA) is a special type of GMM, whereby the variance and covariance estimates for the growth factors within each class are assumed to be fixed to zero就是如果我认为轨迹有亚组,但是亚组的轨迹参数没有变异,那么此时就是潜类别增长模型,其与增长混合模型的区别就在于增长混合模型考虑了轨迹参数的随机效应而潜类别增长模型没有。就是在LCGA的每个亚组中,所有个体都应该是同质的。
mplus实操 在mplus中做LCGA和GMM都很简单,刚刚写了LCGA其实是GMM的特例,所以代码中都会有很多相似之处。
比如我现在有一个4次随访的数据,t1是基线,我现在想做一个LCGA,我就可以写出如下代码:
Model: i s |t1@0t2@1t3@2 t4@3;
如果考虑曲线增长我可以写出如下代码:
i s q|t1@0t2@1t3@2 t4@3;
上面的代码都是默认随着时间变化,时间的loading是0,1,2,3,当然这些你也可以选择自由估计,只需要去掉@就可以了。
我们做LCGA后得到的轨迹是这样的:
文章图片
上面的代码想要改成增长混合模型只需要将i-s@0去掉,然后加上%c#1%命令就可以了,如下:
文章图片
In this example, the syntax i-s@0 fixes all within-class variances to zero, consistent with the LCGA approach. Removing this line will set the variances of I and S as equal across all classes and estimate the variances of the growth parameters意思就是首先,你告诉mplus,不需要将亚组内的截距和斜率都固定为0,然后告诉它,每个亚组的I和S都可以自由估计,也就是说我们在拟合GMM模型,这个模型花费的时间相应地会比LCGA长一点。
同样的数据,同样的潜类别轨迹数量我们再跑一遍GMM得到的轨迹图形是这样的:
文章图片
【mplus数据分析(增长模型潜增长模型与增长混合模型再解释)】
可以看到GMM和LCGA拟合的结果其实还是有差异的。
当模型拟合完成后我们可以通过mplus的图形菜单得到每一个轨迹类别的估计均值变化情况,以及该轨迹类别下个体的增长情况,具体菜单为:Graph → View Graphs → Estimated Means and Observed Individual Values:
文章图片
当然了,在做LCGA模型和GMM模型的时候也是可以加协变量的。就是看在某些协变量存在的条件下某个变量的轨迹是如何变化的,叫做conditional latent class model with covariates。可以通过下面的代码实现:
文章图片
所以从这个意义上讲很多中文论文中做的:先做轨迹再探讨轨迹的影响因素,这类的文章从逻辑上是站不住脚的。更好的研究设计应该是先探讨轨迹再将轨迹作为自变量去进行后续的研究。
另外再写写如何判断最优的轨迹类别数量,反正大家记住,所有的拟合优度指标都是为你的研究问题服务的,它们只起指导作用并不能最终决定到底多少个轨迹类别,决定轨迹类别数量一定是你的理论合理性,模型的可解释性,简洁性
Keeping this in mind, fit indices and tests of model fit should not be the final word in deciding on the number of classes.并且很多时候各种拟合优度指标会出现矛盾的情况,这个时候要优先看BLRT检验和BIC。
小结 今天给大家又理了理LCGA和GMM的东西,希望对大家进一步理解两种做轨迹的方法有帮助。感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。
推荐阅读
- 数据分析|Python 疫情数据的可视化与分析(二)
- 图解大数据 | 大数据分析挖掘-Spark初步
- R语言向量自回归VAR的迭代多元预测估计 GDP 增长率时间序列
- 用python做实验数据分析_Python小实验——利用Python进行NBA比赛数据分析
- 中间件|2021年中国软件产业发展现状分析(软件业务收入达94994亿元,同比增长16.43%[图])
- python导入数据画直方图加正态曲线_Python数据分析入门日记Day20(数据绘图库Matplotlib:直方图...)
- python|python数据分析apply(),map(),applymap()用法归纳
- 数据分析工具Pandas
- python数据分析apply()|python数据分析apply(),map(),applymap()用法
- 美团校招php笔试题,【美团点评】2020校招数据分析方向笔试题