R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍
看似小小的中介,废了我好多脑细胞,这个东西真的不简单,从7月份有人问我,我多重中介,到现在的纵向数据中介,从一般的回归做法,到结构方程框架下的路径分析法,到反事实框架做法,从中介变量和因变量到是连续变量到中介变量和因变量是分类变量,很浩渺的系统知识,今天开始一点一点给大家写。
今天就和大家一起探讨纵向数据的中介效应检验,一般来讲考虑因果关系的时间先后顺序,纵向数据才是探讨中介的理想数据形式:
In practice, it is strongly recommended to establish mediation with longitudinal data
但是问题也存在,就是说同一波次的中介变量和因变量可能成为纵向中介路径上的混杂,自己会影响自己,自己又会受到中介变量和自变量的影响,这些中介和暴露又会受到前一波数据的影响,怎么说得清呢?况且做了中介我们还需要对每个路径上的效应进行分解,感觉好难哦。
今天就写写这个。
随机效应交叉滞后中介模型引出
首先明白一点,做中介用纵向数据才好,其次明白,交叉滞后是纵向面板数据的常用分析方法:
the CLPM allows time for causes to have their effects, supports stronger inference about the direction of causation in comparison to models using cross-sectional data, and reduces the probable parameter bias that arises when using cross-sectional data.
再记住,纵向数据的中介分析的做法之一就是使用交叉滞后。
但是传统交叉滞后不考虑个体扰动,只拟合全部个体的均值,所以在特定人群中估计系数可能不准(理解方法参考混合模型),因为存在上面的问题,所以一般我们会做一个允许个体扰动的情形下纵向数据的中介模型------multilevel model (MLM):
multilevel model (MLM), which is proposed on the basis of the fact that longitudinal data are clustered in nature: The repeated measures are nested within individuals
通过多水平模型我们允许个体扰动,使得模型更符合数据层次,但是开篇就指出,在纵向数据中我们需要控制掉前一波数据的影响,和同波次数据的相互影响,所以我们把多水平模型和交叉滞后一结合,形成带随机效应的交叉滞后就可以啦。
传统交叉滞后中介模型
开篇一张图:
在做纵向中介的我们的数据最少是3波,期望检验的中介路径是x1到m2到y3,当然如果你比较猛,或者你们组比较猛,你还可以多整几波数据探讨中介效应的时间效应,本文不做展开。
treatment, mediator and outcome variables should be measured at three separated and ordered time points.
有同学问两波数据行不行?这个需要你自己考虑怎么来说服审稿人,比如你中介变量是时间不变的,那么你只要将自变量和因变量放在不同波次就行,我觉得也完全OK。
总之你自己自圆其说就完全没问题,本来是纵向设计,好多人完全拎出来横断面做中介人家也能发文章:
Another 10 (14%) ignored or abused the longitudinal structure of their own data by focusing on only a single wave,averaging across waves, or treating later variables as predictors of earlier variables when testing for mediation.
如果你是3波数据,中介出来的结构路径图就是开篇的第一张图。要报告的系数就是中介路径上的a,b,c,分别代表两个间接效应和一个直接效应。需要注意的是对间接作用的检验是检验ab的乘积,并非单单只看一条路径,这个是很多同学不太明白的地方。
The indirect effect is denoted by ab because it is often quantified by the product of two effects: the effect of X on M (a effect) and the effect of M on Y controlling for X
传统交叉滞后中介模型的做法实例
我的数据长这样哈,这个数据是我们自己模拟出来的,只是为了给大家说明数据形式,其中3波次的自变量x,3波次的中介变量m,和3波次的结局y,还有两个协变量z,只考虑人群均值而不考虑个体扰动,我们做一个交叉滞后中介模型,探讨在纵向设计中m是否中介了xy的关系:
首先,我们加载相应的包并进行模型设定,代码如下:
CLPM <- '
# 路径系数
x2 ~ x1
m2 ~ a*x1
m2 ~ m1
y2 ~ b*m1
x3 + m3~ x2
m3+y3 ~ m2
y3~c*x1
y2~y1
y3~y2
x1+m1+y1~z1
x1+m1+y1~z2
# 相关
x1 ~~ y1 # Covariance
x1 ~~ m1
m1 ~~ y1
# 方差
x1 ~~ x1
m1 ~~ m1# Variances
y1 ~~ y1
x2 ~~ x2
m2 ~~ m2# Residual variances
y2 ~~ y2
x3 ~~ x3
m3 ~~ m3
y3 ~~ y3
# 间接作用 (a*b)
ab := a*b
# 总效应
total := c + (a*b)
'
可以看到为了方便报告和中介效应分解,我还设定了系数标签,abc,和新的间接效应ab和总效应tatal,运行上面的代码,总结后即可输出模型结果:
基本的模型优度如下,可以看到模型拟合是很差劲的,不过数据都是模拟出来的嘛,大家主要看方法就行:
各个回归系数如下(没有截图完整的)可以看到我们关心的系数abc都有标注:
当然还有间接效应和总效应的检验结果:
有了上面这些结果你就可以报告这就是一个部分中介模型了
另外再给大家分享一个出图的方法,之前我做结构方程一直用的semPlot出图,图不好个性化定制,乱糟糟的,最近发现tidySEM才是真的好用,比如就我上面的模型,写代码如下:
graph_sem(model = CLPM.fit)
lay <- get_layout("x1", "x2", "x3","m1","m2","m3","y1","y2",
"y3",rows = 3)
graph_sem(model = CLPM.fit,layout = lay)
就可以出一个整整齐齐的图,见下图,简直跟发表的文献中一模一样哦,真好,强烈推荐给大家,之后有空出一期tidySEM的详细教程,快快点关注哈:
随机效应交叉滞后中介模型
关于交叉滞后和随机效应(截距和斜率)交叉滞后的区别之前文章有给大家写,如果要考虑个体间的变异或扰动,我们就需要给模型加上随机效应,此时就是随机效应交叉滞后中介模型。
为啥要考虑随机效应呢?因为本来个体残差异质性都是可能存在的嘛,如果我们做模型的时候不考虑,简单的认为人都是一样的水平,其实和你在嵌套数据中用了回归是一回事的,此时你的统计推断可能不准,注意是可能不准,如果你的人群确实都是一个样,那也就无所谓,你有这个意识就行,可能不准带来的后果就是也许你用交叉滞后回归没做出来阳性结果,然后你把变异分解的更好后用随机效应交叉滞后就出来阳性结果了。
random effects will cause heteroscedasticity in the residuals. Failure to take into account this heteroscedasticity can bias the standard error estimates, leading to misleading statistical inferences.
那么具体的随机效应交叉滞后中介模型如何做呢,其实就是在随机效应交叉滞后加上和上面一样的中介设定就行了,随机效应交叉滞后的代码在之前的文章中,这儿就不给大家写例子啦。
小结
今天给大家写了纵向数据的中介做法-----交叉滞后中介模型,这个模型考虑个体随机扰动就是随机效应交叉滞后中介模型,希望对大家有所启发。
感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先收藏,再点赞分享。
也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,另欢迎私信。
R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍的更多相关文章
- R数据分析:潜类别轨迹模型LCTM的做法,实例解析
最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...
- R语言读写数据
R语言读写数据 一般做模型的时候,从外部的excel中读入数据,我现在常用的比较多的是read_csv(file) 读入之前先把excel数据转化成.csv格式 同样的把结果输出来的时候用的是writ ...
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
- R语言中的横向数据合并merge及纵向数据合并rbind的使用
R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...
- R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操
今天要给大家分享的统计方法是马尔可夫多态模型,思路来源是下面这篇文章: Ward DD, Wallace LMK, Rockwood K Cumulative health deficits, APO ...
- R数据分析:二分类因变量的混合效应,多水平logistics模型介绍
今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...
- R数据分析:如何简洁高效地展示统计结果
之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...
- R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法
之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...
- R数据分析:用R建立预测模型
预测模型在各个领域都越来越火,今天的分享和之前的临床预测模型背景上有些不同,但方法思路上都是一样的,多了解各个领域的方法应用,视野才不会被局限. 今天试图再用一个实例给到大家一个统一的预测模型的做法框 ...
随机推荐
- 为什么下一个十年的主战场在 Serverless?
作者 | 不瞋 阿里云 Serverless 负责人 "唯有超越,才能让我们走下去." 这是不瞋在阿里的第十年.从 2010 年加入阿里云,不瞋参与了阿里云飞天分布式系统的研发,历 ...
- 使用Mybatis的一些基本配置及Mybatis与数据库交互测试验证
1.简介 什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...
- 题解 [APIO2013]道路费用
link Description 幸福国度可以用 N 个城镇(用 1 到 N 编号)构成的集合来描述,这些城镇 最开始由 M 条双向道路(用 1 到 M 编号)连接.城镇 1 是中央城镇.保证一个 人 ...
- CF992E Nastya and King-Shamans(线段树二分+思维)
这是一道卡常好题 从160s卡到36s qwq 由于题目设计到原数组的单点修改,那么就对应着前缀和数组上的区间加. 很显然能想到用线段树来维护这么个东西. 那么该如果求题目要求的位置呢 我们来看这个题 ...
- 2020.10.10--pta阶梯赛练习2补题
7-3.N个数求和 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100).随后 ...
- fastjson及其反序列化分析--TemplatesImpl
fastjson及其反序列化分析 源码取自 https://www.github.com/ZH3FENG/PoCs-fastjson1241 参考 (23条消息) Json详解以及fastjson使用 ...
- 搭载Dubbo+Zookeeper踩了这么多坑,我终于决定写下这篇!
大家好,我是melo,一名大二上软件工程在读生,经历了一年的摸滚,现在已经在工作室里边准备开发后台项目啦. 这篇文章我们不谈数据结构了,来谈谈入门分布式踩过的坑.感觉到了分布式这一层,由于技术更新迭代 ...
- 【UE4 C++】解析与构建 XML 数据,XmlParser 与 tinyxml
XmlParser 简单读取 XmlParser 为引擎自带模块 XML 文件 <?xml version="1.0" encoding="UTF-8"? ...
- LeetCode:动态规划
动态规划 动态规划永远的神 这部分主要是学习了 labuladong 公众号中对于动态规划的讲解 刷了些 leetcode 题,在此做一些记录,不然没几天就忘光光了 题目 这部分内容直接上题目了,解题 ...
- 计算机中的contex理解
原文链接 https://www.xuebuyuan.com/2016635.html 1.其实简单的说就是跟当前主题有关的所有内容. 2.如说到程序的上下文,就是当前这段程序之上和之下的程序段.因 ...