- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
混合模型,增长混合模型这些问题咨询的同学还是比较多的,今天再次尝试写写它们的区别,希望对大家进一步理解两种做轨迹的方法有帮助。
首先,无论是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。
下图左边是全体个案的增长轨迹,传统的增长模型试图去描述整个群体的增长情况,认为所有个体的增长情况都可以用一个总的平均增长趋势去描述(左图中的实线)。但是我们看整个人群中的其中一个亚组人群(右图),其实这个亚组的增长趋势是和人群总体大不相同的,人群的总体趋势是在上升,此亚组则是在下降,这也是从一个侧面说明考虑轨迹的潜类别的重要意义,我就是希望通过这么一套方法识别出整体轨迹发展的异质性,实现分类和干预的精准化:
其实下面的左图可以理解为多水平模型(随机截距+随机斜率),中间的实线就是拟合出来的时间的固定效应:
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也是一种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中做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的东西,希望对大家进一步理解两种做轨迹的方法有帮助。感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。
增长,则让
当我输入内容时,如何移动 p 段落下方的所有元素,即 contenteditable。 这是我的代码: body, html { margin: 0; padding: 0; backgr
我要解决的问题: 我有一个包含 div 的外部 div。 content 内部和外部 div 之间的边距应始终相同。 当内部 div 增长/收缩时,外部 div
这document Ulrich Drepper 称为“图书馆设计、实现和维护的良好实践”(第 5 页底部): [...] the type definition should always crea
有什么方法可以获取 QPainterPath 并将其展开,就像 Photoshop 中的“选择”>“增长...”(或“展开...”)命令一样? 我想获取从 QGraphicsItem::shape 返
假设,为了问题的目的,我们有一个内存池,最初分配了 n 个 block 。但是,当达到容量时,池想要增长并变成原来大小的两倍 (2n)。 现在可以使用 C 中的 realloc 完成此调整大小操作,但
假设,为了问题的目的,我们有一个内存池,最初分配了 n 个 block 。但是,当达到容量时,池想要增长并变成原来大小的两倍 (2n)。 现在可以使用 C 中的 realloc 完成此调整大小操作,但
我正在研究 boost 库的共享内存部分,为更大的项目做准备。我需要一个共享内存段,在初始化时我不一定知道它的大小,所以我的计划是增加这个段。 我的初始实现有一个存储在共享内存中的 boost::in
这个问题在这里已经有了答案: How to disable equal height columns in Flexbox? (4 个答案) What are the differences bet
我有一个包含子表的表。我不希望子表影响表格的宽度——在溢出的情况下,我希望两者独立滚动。此外,由于子表是基于切换显示的,所以我不希望主表行根据子表是否可见而跳转 Here's代码笔。 我想我可以用 t
我有一个带栏的页面设计,它可以有一个、两个或三个栏。这些列的大小应相同。 为此我使用了 flexbox,它很好,允许我添加/删除我的列并让浏览器处理列宽的大小调整。 现在,当列中的文本大于列的宽度时,
要求: 我需要根据数据增长一个任意大的数组。 我可以猜测大小(大约 100-200),但不能保证数组每次都能适合 一旦它增长到最终大小,我需要对其执行数值计算,因此我更愿意最终得到一个二维 numpy
我有一个 3x256 规则的规则集。每个规则映射到一个 3x3 的值网格,这些值本身就是规则。 规则示例: 0 -> [[0,0,0],[0,1,0],[0,0,0]] 1 -> [[1,1,1],
我有 3 个 div,如果我给前两个 div flex: 0.5,如果我给了 flex-wrap: wrap,最后一个 div 应该移动到下一行>。如果我错了,请指正。 以下是我的 html/css:
在文档和 Bootstrap v4 问题中 (here) ,我看不到任何支持 flex-grow 的计划,例如语法如下: I use all the space lef
要求: 我需要从数据中增加一个任意大的数组。 我可以猜测大小(大约 100-200),但不能保证每次都适合数组 一旦它增长到最终大小,我需要对其执行数值计算,因此我希望最终得到一个二维 numpy 数
我知道(并在互联网上阅读-包括此资源)。增加内存的逻辑是:如果len数组小于1024-golang将array乘以2,否则将len乘以1.25(并且我们在源代码中看到了这个问题https://gith
当输入长文本时,WPF TextBox 控件会增长。 这个问题已经在 Stackoverflow 中提出了 我也引用了一些答案,但我仍然没有找到有效的正确答案。 Here提到了同样的问题,但没有针对此
我在使用 Vaadin HorizonalLayout 时遇到问题 - 我希望左侧组件填充大部分水平空间,如 Fiddle 所示 但是,当我运行 Vaadin 应用程序时,这两个组件会平分屏幕。
关于这个fiddle , 当我点击 a href在这种情况下这是一个图像,我希望图像从 div 开始增长/过渡以通过过渡/缩放填充整个页面它被放置在其中。如果这不可能,我想用 div 的背景颜色填充页
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this q
我是一名优秀的程序员,十分优秀!