文献解读:纵向数据的测量不变性和交叉滞后模型(一)

今天本来想看看交叉滞后怎么做,然后给粉丝写写教程,查资料的过程中发现了一篇很好的文献,记录下来分享给大家。

这篇文献主要是讲如何用R的lavaan包做交叉滞后模型的。

文献一开始首先介绍Measurement invariance

Measurement invariance测量不变性

在心理学的很多情形下,我们都不能直接测量我们想要的构象,比如饮酒动机,这些不能直接测量的变量叫做潜变量,叫做因子,叫做构象,叫做维度。

下次你看到上面的红字你都可以把它们理解为一个东西,那么构象这个东西就得靠多个问卷条目进行反应。

这个时候问题来了,你的问卷条目是不是很好地反应了你要测量的构象呢?

总得有个指标吧,或者有个方法检验吧。

这个指标就叫做效度,方法就可以用Confirmatory factor analysis (CFA),验证性因子分析。

Confirmatory factor analysis (CFA) is a statistical technique that allows us to test whether clusters of items in our measure are indeed reflective of the latent construct to which we have assigned them

还有,很多时候,我们会进行纵向设计,或者追踪随访,我们会把我们的测量工具发放很多遍,比如追踪学生,一年级追踪到初三,每年都让学生们填写某个问卷等等。

这个时候新问题又来了

你要记住我们的测量工具是要测量构象的,通过追踪随访我们也是想要了解构象的随时间变化的情况,而构象又是通过条目反应的,新的问题就是随着时间的变化,这些条目还能不能准确的反应构象呢?或者说随着时间的变化学生对条目的理解会不会变呢?

To make logical claims about how latent variables change across time, we must first establish that our instruments are measuring the construct consistently over time

这就引出了Measurement invariance测量不变性的概念:

Measurement invariance (MI) is upheld in a study when “participants across all [time periods] interpret the individual questions, as well as the underlying latent factor, in the same way"

就是说每个人随时间变化他对条目以及条目的隐含构象的理解都是一样的。直白一点说,就是一年级的时候我问卷得5分,二年级的时候同一个问卷得6分,这1分的差异确实是构象本身的变化,而不是学生对条目理解的变化引起的。

如果在随访中测量不变性不能保证的话,我们就很难去比较构象随时间变化的差异了。

这个测量不变性在纵向设计中很重要,作者举了个例子,有研究发现从1990s到2010s学生的自恋水平有所上升,Wetzel这个人就去检查了一下这个纵向测量的测量不变性,然后他就发现了:

facets of leadership and vanity were not invariant, suggesting that students’ interpretations of questions pertaining to these aspects were changing over time

自恋量表的leadership and vanity这两个维度测量不变性是不成立的,也就是随着时间的推移学生们对这两个维度条目的理解不同了,也就是说去年测的和今年测的不是一个东西。

然后Wetzel把这个测量不变性的问题解决了之后,发现学生的自恋从1990s到2010s其实是越来越低的。

这个也就提示我们,分析纵向数据时有必要考虑测量不变性问题。

Checking for MI is thus an important practice prior to interpreting longitudinal results.

测量不变性的测量

听起来有点怪哈,就是如何测量纵向数据的测量不变性,用的方法也是验证性因子分析,原理就是用一系列的验证性因子分析,通过逐步加强模型的限制来看我们纵向数据的测量不变性水平。

这个时候,我们关心的指标主要有3个

一个是因子载荷,二是截距,三是残差方差

  1. factor loadings, which show how representative each item is of its latent factor;

  2. intercepts, which relate to the mean levels of each item; and

  3. residual variances, which represent the other unexplained influences predicting item responses besides latent variables

通过这3个指标我们就可以把测量不变性分为4个水平:

首先是构形不变性configural invariance

configural invariance, allows factor loadings, item intercepts, and residual variances to vary across waves

只要求因子(潜在变量)和项(观测变量)间的基本结构关系相同,而不对任何参数设定限制

就是说不同时间的测量中同一个问卷的因子结构应该是不变的。

第二是单位等值(Metric invariance)弱等值(Weak Invariance):

constrains factor loadings to equality across waves. This establishes that items do not become more (or less) representative of the latent construct at different measurement occasions

这个水平要求测量因子与条目之间的关系——因子负荷(factor loading)是相等的。等因子负荷意味着观测项和潜在因子之间在不同时间具有着相同的意义,即不同时间的被试对同一个构念(construct)的理解是一致的。

第三尺度等值(Scalar invariance)强等值(Strong Invariance)

scalar invarianceconstrains not only factor loadings, but also item intercepts to equality across waves

这个水平要求因子载荷和条目截距在不同时间的测量相同,意味着不同时间被试对测量内容的系统倾向性一致。

如果尺度等值不符就意味着随着时间的推移,个体对条目的理解会变。尺度等值不符的情况下,你得到的随着时间变化的构象变化有可能并不是真正的构象变了,而是随着时间推移个体对条目的理解变了,条目均值变了。

第四严格等值( Strict Invariance)也叫残差等值

residual invariance constrains factor loadings, item intercepts, and residual variances to equality across waves

这个水平要求因子载荷,条目均值和构象的误差随着时间的推移也不变,意味着外部影响测量的变量随着时间都没有发生变化,很严格。

写完测量不变性滞后,再写交叉滞后模型

交叉滞后面板模型

利用纵向数据还可以研究变量间关系的方向性,比如使用交叉滞后模型cross-lagged panel models (CLPM)。

举个例子,有人在横断面研究中发现感知社会支持和学习成绩有关系,这个时候我很好奇,到底是社会支持影响了学习成绩还是学习成绩影响了社会支持,这个时候我们用交叉滞后模型就可以发现其实是学习成绩造成了感知社会支持的提高。

交叉滞后模型就是干上面这个事的。

因为交叉滞后模型用的一定是纵向数据,所以它的测量不变性问题一定要考虑

实例操作

还是给大家写个实际例子

在这个例子中我们的构象有2:

  • perfectionistic self-presentation (PSP)
  • state social anxiety (SSA)

分别是完美主义和社交焦虑,对于这两个构象我们从第7天一直测量到第11天,共5天,于是我们就形成了一个面板数据,而且,我们的PSP有3个条目,SSA有7个条目。

我们今天要做的就是检验我们的测量的测量不变性并做一个交叉滞后模型

检验测量不变性

做交叉滞后首先就得检验测量不变性,之前已经给大家写了测量不变性的几个水平,我们现在要做的就是检验我们的数据的测量不变性到底符合哪一个水平。

首先从最宽松的构形不变性configural invariance开始检验:

configural.v1 <-
'
# PSP 因子载荷
PSP.7 =~ NA*psp1.7 + psp2.7 + psp3.7
PSP.8 =~ NA*psp1.8 + psp2.8 + psp3.8
PSP.9 =~ NA*psp1.9 + psp2.9 + psp3.9
PSP.10 =~ NA*psp1.10 + psp2.10 + psp3.10
PSP.11 =~ NA*psp1.11 + psp2.11 + psp3.11
# PSP 方差固定为1
PSP.7 ~~ 1*PSP.7
PSP.8 ~~ 1*PSP.8
PSP.9 ~~ 1*PSP.9
PSP.10 ~~ 1*PSP.10
PSP.11 ~~ 1*PSP.11
# SSA 因子载荷
SSA.7 =~ NA*ssa1.7 + ssa2.7 + ssa3.7 + ssa4.7 + ssa5.7 + ssa6.7 + ssa7.7
SSA.8 =~ NA*ssa1.8 + ssa2.8 + ssa3.8 + ssa4.8 + ssa5.8 + ssa6.8 + ssa7.8
SSA.9 =~ NA*ssa1.9 + ssa2.9 + ssa3.9 + ssa4.9 + ssa5.9 + ssa6.9 + ssa7.9
SSA.10 =~ NA*ssa1.10 + ssa2.10 + ssa3.10 + ssa4.10 + ssa5.10 + ssa6.10 +
ssa7.10
SSA.11 =~ NA*ssa1.11 + ssa2.11 + ssa3.11 + ssa4.11 + ssa5.11 + ssa6.11 +
ssa7.11
# SSA 固定方差为 1
SSA.7 ~~ 1*SSA.7
SSA.8 ~~ 1*SSA.8
SSA.9 ~~ 1*SSA.9
SSA.10 ~~ 1*SSA.10
SSA.11 ~~ 1*SSA.11
'

同时我们还需要将残差方差进行设置:

errorstructure <- 'psp1.7 ~~ psp1cov*psp1.8
psp1.7 ~~ psp1cov*psp1.9
psp1.7 ~~ psp1cov*psp1.10
psp1.7 ~~ psp1cov*psp1.11
psp1.8 ~~ psp1cov*psp1.9
psp1.8 ~~ psp1cov*psp1.10
psp1.8 ~~ psp1cov*psp1.11
psp1.9 ~~ psp1cov*psp1.10
psp1.9 ~~ psp1cov*psp1.11
psp1.10 ~~ psp1cov*psp1.11

psp2.7 ~~ psp2cov*psp2.8
psp2.7 ~~ psp2cov*psp2.9
psp2.7 ~~ psp2cov*psp2.10
psp2.7 ~~ psp2cov*psp2.11
psp2.8 ~~ psp2cov*psp2.9
psp2.8 ~~ psp2cov*psp2.10
psp2.8 ~~ psp2cov*psp2.11
psp2.9 ~~ psp2cov*psp2.10
psp2.9 ~~ psp2cov*psp2.11
psp2.10 ~~ psp2cov*psp2.11

psp3.7 ~~ psp3cov*psp3.8
psp3.7 ~~ psp3cov*psp3.9
psp3.7 ~~ psp3cov*psp3.10
psp3.7 ~~ psp3cov*psp3.11
psp3.8 ~~ psp3cov*psp3.9
psp3.8 ~~ psp3cov*psp3.10
psp3.8 ~~ psp3cov*psp3.11
psp3.9 ~~ psp3cov*psp3.10
psp3.9 ~~ psp3cov*psp3.11
psp3.10 ~~ psp3cov*psp3.11

ssa1.7 ~~ ssa1cov*ssa1.8
ssa1.7 ~~ ssa1cov*ssa1.9
ssa1.7 ~~ ssa1cov*ssa1.10
ssa1.7 ~~ ssa1cov*ssa1.11
ssa1.8 ~~ ssa1cov*ssa1.9
ssa1.8 ~~ ssa1cov*ssa1.10
ssa1.8 ~~ ssa1cov*ssa1.11
ssa1.9 ~~ ssa1cov*ssa1.10
ssa1.9 ~~ ssa1cov*ssa1.11
ssa1.10 ~~ ssa1cov*ssa1.11

ssa2.7 ~~ ssa2cov*ssa2.8
ssa2.7 ~~ ssa2cov*ssa2.9
ssa2.7 ~~ ssa2cov*ssa2.10
ssa2.7 ~~ ssa2cov*ssa2.11
ssa2.8 ~~ ssa2cov*ssa2.9
ssa2.8 ~~ ssa2cov*ssa2.10
ssa2.8 ~~ ssa2cov*ssa2.11
ssa2.9 ~~ ssa2cov*ssa2.10
ssa2.9 ~~ ssa2cov*ssa2.11
ssa2.10 ~~ ssa2cov*ssa2.11

ssa3.7 ~~ ssa3cov*ssa3.8
ssa3.7 ~~ ssa3cov*ssa3.9
ssa3.7 ~~ ssa3cov*ssa3.10
ssa3.7 ~~ ssa3cov*ssa3.11
ssa3.8 ~~ ssa3cov*ssa3.9
ssa3.8 ~~ ssa3cov*ssa3.10
ssa3.8 ~~ ssa3cov*ssa3.11
ssa3.9 ~~ ssa3cov*ssa3.10
ssa3.9 ~~ ssa3cov*ssa3.11
ssa3.10 ~~ ssa3cov*ssa3.11

ssa4.7 ~~ ssa4cov*ssa4.8
ssa4.7 ~~ ssa4cov*ssa4.9
ssa4.7 ~~ ssa4cov*ssa4.10
ssa4.7 ~~ ssa4cov*ssa4.11
ssa4.8 ~~ ssa4cov*ssa4.9
ssa4.8 ~~ ssa4cov*ssa4.10
ssa4.8 ~~ ssa4cov*ssa4.11
ssa4.9 ~~ ssa4cov*ssa4.10
ssa4.9 ~~ ssa4cov*ssa4.11
ssa4.10 ~~ ssa4cov*ssa4.11

ssa5.7 ~~ ssa5cov*ssa5.8
ssa5.7 ~~ ssa5cov*ssa5.9
ssa5.7 ~~ ssa5cov*ssa5.10
ssa5.7 ~~ ssa5cov*ssa5.11
ssa5.8 ~~ ssa5cov*ssa5.9
ssa5.8 ~~ ssa5cov*ssa5.10
ssa5.8 ~~ ssa5cov*ssa5.11
ssa5.9 ~~ ssa5cov*ssa5.10
ssa5.9 ~~ ssa5cov*ssa5.11
ssa5.10 ~~ ssa5cov*ssa5.11

ssa6.7 ~~ ssa6cov*ssa6.8
ssa6.7 ~~ ssa6cov*ssa6.9
ssa6.7 ~~ ssa6cov*ssa6.10
ssa6.7 ~~ ssa6cov*ssa6.11
ssa6.8 ~~ ssa6cov*ssa6.9
ssa6.8 ~~ ssa6cov*ssa6.10
ssa6.8 ~~ ssa6cov*ssa6.11
ssa6.9 ~~ ssa6cov*ssa6.10
ssa6.9 ~~ ssa6cov*ssa6.11
ssa6.10 ~~ ssa6cov*ssa6.11

ssa7.7 ~~ ssa7cov*ssa7.8
ssa7.7 ~~ ssa7cov*ssa7.9
ssa7.7 ~~ ssa7cov*ssa7.10
ssa7.7 ~~ ssa7cov*ssa7.11
ssa7.8 ~~ ssa7cov*ssa7.9
ssa7.8 ~~ ssa7cov*ssa7.10
ssa7.8 ~~ ssa7cov*ssa7.11
ssa7.9 ~~ ssa7cov*ssa7.10
ssa7.9 ~~ ssa7cov*ssa7.11
ssa7.10 ~~ ssa7cov*ssa7.11'


设定好模型后我们就可以跑我们的验证性因子分析了:

configural.model <- paste(configural.v1, errorstructure, sep = ' ', collapse
= NULL)
configural.fit <- cfa(configural.model,
data = model.test.dat,
estimator = "MLR",
se = "robust",
missing = "ML",
std.lv = TRUE)


纵览上面的模型设定,我们的模型中factor loadings, item intercepts, and residual variances都是可以自由估计的,所以如果上面的模型拟合不错,我们就可以认为我们的数据达到了最低水平的测量不变性,即**构形不变性configural invariance。**

运行上面的代码,输出结果如下:

![文献解读:纵向数据的测量不变性和交叉滞后模型(一)](https://upload-images.jianshu.io/upload_images/25664580-00ea6059a3a17aa6?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

结果很棒,说明我们的数据构型不变性确实是达到了,我们才仅仅做完了第一步,还有很多步骤呢,文章太长了,期待下一篇吧。

# 小结

本来准备给大家写交叉滞后模型的,没办法太长了,今天给大家写了纵向数据的测量不变性,而且还没写完,就这样吧,下一篇文章接着写。

感谢大家耐心看完,自己的文章都写的很细,代码都在原文中,希望大家都可以自己做一做,请关注后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先收藏,再点赞转发。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容