分享

R数据分析:随机截距交叉滞后RI-CLPM与传统交叉滞后CLPM

 CodewarCodewar 2021-08-10
有同学问随机截距交叉滞后和传统交叉滞后的区别,随便记录一下,希望给到大家启发。
拟合随机截距交叉滞后模型RI-CLPM的时候我们需要将变量的观察分数分为3个部分:第一部分为总体均数grand means,就是每个变量在同一时间所有观测的均数;第二部分是因素间的稳定性stable between components,体现为变量的随机截距,就是说不同的个体在显变量的得分上有一个随机扰动,第三部分是因素内的波动性fluctuating within components,就是针对每个个体的每次测量和期望的得分的差异。
设定随机截距的操作就是在模型设定的时候额外设定一个重复测量的潜变量,然后将所有测量的载荷设定为1。
具体地看下面的例子,下图是一个研究睡眠问题和焦虑的随机截距交叉滞后模型,数据测了5波,其中Sit代表个体i在t时间的睡眠问题,Ait代表个体i在t时间的焦虑:
以上图为依据给大家讲讲随机截距交叉滞后的3个部分,首先总体均数就是说我观测的所有样本在某个时间点测得的这个变量的总体水平,比如睡眠的总体均数我就可以用μt表示,焦虑的总体均数就可以用πt表示,t就取1到5,当然了这个总体均数可以随着时间变化,作为一个验证性的方法我也可以选择验证不变性,都行,看你的理论考虑。
第二个部分就是因素间的稳定性,在上面的图中用B打头,这个主要是体现时间不变性条件下的得分与总体均数之间的差异性(同一时间点每个人之间的不同),用随机截距体现,就是个体差异。
第三部分是因素内的波动性,是用W表示的,表示一个个体观测的分数和基于随机截距和总体均数所期望出来的分数之间的差异(纵向波动)。
上面一段中的'因素’这个词是我本人的翻译,不一定精准,英文是-unit或者component,就是如果你是随访的人,那么就是between person,或within-person,大家理解就好。
有了这三个部分后,我们具体的每一次观测的睡眠问题和焦虑水平就可以写出来方程:
跟普通回归很像哦。应该不难理解吧。就是说各个时间具体变量的观测值等于,总体均值,加一个个体差异和纵向波动误差,意思就是我在随机截距交叉滞后中既考虑between- difference有考虑within- difference,很多论文都有这些术语哦。随机截距交叉滞后这个特点也是其区别于交叉滞后的最大特点。
普通的交叉滞后是不考虑将变异如此分解的,只拟合总体均值的自回归和交叉滞后效应,如图:
这就是两者的区别。
再看RI-CLPM图的结构部分,我们都是有自回归效应的,表示个体自带的“惯性”,自回归是正的,就说明睡眠问题差的人随访时倾向有更差的睡眠,焦虑的人随访中倾向更焦虑。
我们还有交叉滞后效应,就是图中的斜线,这个表示单个效应“溢出”影响到了另外的变量,比如正向的睡眠问题到焦虑的滞后效应就是说睡眠问题的提高会导致下一阶段焦虑水平的提高。焦虑和睡眠的交叉滞后效应也是相同解释的。
模型中还应该有每个因素间和因素内的共变关系,表现在图中就是6个双向箭头啦,既有因素间的也有因素内的,对因素间的共变我们在做法上设定随机截距之间拟合共变就可以。
还有,如果在实际的模型拟合中如果随机截距的方差不显著地偏离0,我们也可以考虑去掉随机截距,直接做交叉滞后就行。这个时候就意味着你的个体变异是不显著的,直接用总体均值拟合模型就行(传统交叉滞后)。

给模型一些限制条件后继续验证数据


当我们的研究是对特定的理论假设的验证的时候,我们可以设定模型相应的限制条件,然后做模型间的比较(卡方),验证我们的假设是否合理:
This can be done by comparing the fit of a (nested) model with constraints to the fit of the more general model using a chi-square difference test (Δχ2)
这儿给大家介绍两种常见的可以在随机截距交叉滞后模型中加的限制条件:
一个是交叉滞后系数的时间不变性,就是我们可以将所有的滞后系数固定为一个数,然后估计模型,将它和所有滞后系数自由估计的模型做比较,就可以得出来是不是滞后影响是发展波动的。比如我研究睡眠和焦虑,发现固定交叉滞后系数后模型拟合显著好,则说明睡眠和焦虑的关系在纵向来看是稳定的,反之则是波动的。这个叫做交叉滞后系数的时间不变性(一定是在时间间隔相同的几波数据中才能用)。
第二个限制是看变量总体均数的时间不变性,就是我看看是不是睡眠和焦虑在几波测量中都是纵向稳定的,这个时候我们限制的就是总体均值,如果我们发现固定了睡眠和焦虑的总体均值后模型拟合更好,就说明我们的个案在随访时间中睡眠情况和焦虑情况纵向是不变的,反之则是变化的
具体的选择是完全看你的理论,经验,最后才看数据拟合情况。包括所有的验证性分析方法都是如此。这又使我想起了大佬的话:所有的统计模型都是错误的,只不过有一些都点用处而已,不要迷信统计


RI-CLPM实例操练


在R中做随机截距交叉滞后我们需要设定4个部分:
一是因素间部分,也就是变量的随机截距,在这部分的设定中我们一般认为各个波次数据在截距上面的载荷都是1,可以用1*来设定。
二是因素内部分,也就是因素变量随时间的波动,用=~来设定。
三是交叉滞后效应。
四是共变关系。
具体地,比如我要研究睡眠和焦虑的交叉滞后,我同时考虑个体内和个体间变异,我就可以用随机截距交叉滞后模型,假设我的数据长这样,x是睡眠,y是焦虑,随访5次,都需要转换成宽数据,数据形式如下:
我就可以写出如下代码:
RICLPM <- ' # 随机截距RIx =~ 1*x1 + 1*x2 + 1*x3 + 1*x4 + 1*x5RIy =~ 1*y1 + 1*y2 + 1*y3 + 1*y4 + 1*y5
# 个体内的变量设定wx1 =~ 1*x1wx2 =~ 1*x2wx3 =~ 1*x3 wx4 =~ 1*x4wx5 =~ 1*x5wy1 =~ 1*y1wy2 =~ 1*y2wy3 =~ 1*y3wy4 =~ 1*y4wy5 =~ 1*y5
# 个体内交叉滞后设定wx2 + wy2 ~ wx1 + wy1wx3 + wy3 ~ wx2 + wy2wx4 + wy4 ~ wx3 + wy3wx5 + wy5 ~ wx4 + wy4
# 个体内共变设定wx1 ~~ wy1 wx2 ~~ wy2wx3 ~~ wy3wx4 ~~ wy4wx5 ~~ wy5
# 随机截距的方差和共变RIx ~~ RIxRIy ~~ RIyRIx ~~ RIy#这个系数是需要报告的
# 个体内变量的方差wx1 ~~ wx1 wy1 ~~ wy1 wx2 ~~ wx2 wy2 ~~ wy2 wx3 ~~ wx3 wy3 ~~ wy3 wx4 ~~ wx4 wy4 ~~ wy4 wx5 ~~ wx5wy5 ~~ wy5'
RICLPM.fit <- lavaan(RICLPM, data = dat, missing = 'ML', meanstructure = T, int.ov.free = T)summary(RICLPM.fit, standardized = T)

运行代码得到结果,结果输出和普通的结构方差无异,挺长的,这儿只给大家展示部分:
下图中最后一行是随机截距间的共变,这个是说明因素间差异的,就是论文中的between difference,也是随机截距交叉滞后的精髓,是需要报告的。
比如我们的结果显示我两个随机截距都是显著地偏离0的(见下图),这个就说明这个共变是有意义的,就说明:我的研究对象间,他们的睡眠和焦虑都是有显著的个体差异的,所以我加随机截距是正确的,同时,我们还看到两个随机截距之间的共变关系是显著的正向的,就是说睡眠问题越大的对象,他们的焦虑问题也倾向越严重。
Moreover, we find a significant positive covariance between the random intercepts, suggesting that individuals who have more sleep problems, in general, are also more anxious in general.
同样地,如果你的数据跑出来后发现随机截距的方差就是0,那么就说明,睡眠和焦虑的个体间扰动是没有的,你的所有对象的睡眠和焦虑都是随总体均数的。这个时候你直接做普通交叉滞后就好。
其余系数的解释和普通交叉滞后一样,这儿就不给大家一一写了。


什么时候选随机截距交叉滞后


最后再给大家说明一个问题,啥时候用随机截距呢?我怎么知道我的数据要加呢?
首先你要掌握RI-CLPM和CLPM的区别,然后结合你的研究目的,比如有一篇文章想要探讨社交焦虑和父母教养的因果方向的同时,还想看看between- and within-person中这种associations有没有差异,作者就使用了RI-CLPM,通过对between-person随机截距共变的解读和within-person自回归和交叉滞后系数的解读,作者就成功地回答了自己的科学问题。
所以如果在你的研究中,你除了关系变量的因果方向,你还关心个体间的变异,就尝试使用RI-CLPM吧。


小结

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多