混合模型,增长混合模型这些问题咨询的同学还是比较多的,今天再次尝试写写它们的区别,希望对大家进一步理解两种做轨迹的方法有帮助。

首先,无论是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@0  t2@1  t3@2 t4@3;

如果考虑曲线增长我可以写出如下代码:

 i s q|t1@0  t2@1  t3@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得到的轨迹图形是这样的:

可以看到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的东西,希望对大家进一步理解两种做轨迹的方法有帮助。感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。

mplus数据分析:增长模型潜增长模型与增长混合模型再解释的更多相关文章

  1. 潜类别模型(Latent Class Modeling)

    1.潜类别模型概述 潜在类别模型(Latent Class Model, LCM; Lazarsfeld & Henry, 1968)或潜在类别分析(Latent Class Analysis ...

  2. SPSS数据分析—二分类Logistic回归模型

    对于分类变量,我们知道通常使用卡方检验,但卡方检验仅能分析因素的作用,无法继续分析其作用大小和方向,并且当因素水平过多时,单元格被划分的越来越细,频数有可能为0,导致结果不准确,最重要的是卡方检验不能 ...

  3. SPSS数据分析—多分类Logistic回归模型

    前面我们说过二分类Logistic回归模型,但分类变量并不只是二分类一种,还有多分类,本次我们介绍当因变量为多分类时的Logistic回归模型. 多分类Logistic回归模型又分为有序多分类Logi ...

  4. 二 Djano模型层之模型字段选项

    字段选项 以下参数是全部字段类型都可用的,而且是可选的 null 如果为True,Django将在数据库中将空值存储为NULL.默认值为False 对于字符串字段,如果设置了null=True意味着& ...

  5. "用户增长"--快速身份认证实现用户增长的技术和产品方案

    "用户增长"--快速身份认证实现用户增长的技术和产品方案 1   引言 作为一个互联网产品,用户量的增长是一个非常重要的衡量指标. 这是一个集合了销售,市场,运营,技术的综合能力. ...

  6. Asp.net管道模型(管线模型)

    Asp.net管道模型(管线模型)   前言 为什么我会起这样的一个标题,其实我原本只想了解asp.net的管道模型而已,但在查看资料的时候遇到不明白的地方又横向地查阅了其他相关的资料,而收获比当初预 ...

  7. linux下多路复用模型之Select模型

    Linux关于并发网络分为Apache模型(Process per Connection (进程连接) ) 和TPC , 还有select模型,以及poll模型(一般是Epoll模型) Select模 ...

  8. Paip.Php Java 异步编程。推模型与拉模型。响应式(Reactive)”编程FutureData总结... 1

    Paip.Php  Java 异步编程.推模型与拉模型.响应式(Reactive)"编程FutureData总结... 1.1.1       异步调用的实现以及角色(:调用者 提货单) F ...

  9. DDD:谈谈数据模型、领域模型、视图模型和命令模型

    背景 一个类型可以充当多个角色,这个角色可以是显式的(实现了某个接口或基类),也可以是隐式的(承担的具体职责和上下文决定),本文就讨论四个角色:数据模型.领域模型.视图模型和命令模型. 四个角色 数据 ...

随机推荐

  1. 利用JGrapht对有向无环图进行广度优先遍历

    环境需求:JDK:1.8 jar:jgrapht-core-1.01.jar package edu; import org.jgrapht.experimental.dag.DirectedAcyc ...

  2. django之定义统一返回数据格式与GET/POST装饰器

    1. 为了返回给网页前端的格式统一,定义一个通用的插件类,返回统一格式数据 # enconding:utf-8 """ 定义一个插件类, ""&quo ...

  3. [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

    [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...

  4. Go 学习路线(2022)

    原文链接: Go 学习路线(2022) Go 语言的发展越来越好了,很多大厂使用 Go 作为主要开发语言,也有很多人开始学习 Go,准备转 Go 开发. 那么,怎么学呢? 我发现,在互联网时代,学习的 ...

  5. SpringBoot 自定义配置

    有时候需要自己定义一些配置,比如SpringBoot没有提供Druid连接池的配置,需要我们自己写配置. 以在springboot中使用Druid为例. 依赖 <dependency> & ...

  6. JVM学习九-(复习)HotSpot 垃圾收集器

    HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器.我们选择的只是对具体应用最合适的收集器. 新生代垃圾收集器 Se ...

  7. HTML元素的隐藏方式

    感谢原文作者:幼儿园中的小小白 原文链接:https://blog.csdn.net/weixin_43846130/article/details/95963426 一.元素的隐藏方式: 1.dis ...

  8. udp的第一个例子

    import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import j ...

  9. 红色小圆点+数字的badge自定义小方法 by Nicky.Tsui

    效果如图. 实现方法比较简单,在view上增加一个label label设置: 1 badgeLabel = [[UILabel alloc]initWithFrame:CGRectMake(CGRe ...

  10. AFNetWorking 文件上传 By-H罗

    一.文件上传(图片,音频,视频,文本等)(不带进度) /** * 文件上传 导入 #import "AFNetworking.h" * @param filePath 上传文件本地 ...