三层面板数据分析:plm()与lmer()的适用性探讨
三层面板数据分析:plm vs lmer选择疑问解答
问题背景
我计划对三层面板数据开展分析,数据结构为波次(Wave)嵌套于个体(Individual),个体嵌套于国家(country)。现有疑问:
- 因属于面板数据,plm包的
plm()是否更适用?但它无法较好适配三层数据;- 若切换至支持三层模型的
lmer(),该函数是否未考虑同一个体重复访谈带来的误差项相关性?
分析与解答
1. plm包确实不适合你的三层嵌套数据
plm是专门处理传统两层面板(比如「个体-时间」)的工具,对三层嵌套结构的支持基本为零:
- 你写的plm代码里,索引顺序
c("Wave","Individual","country")完全搞反了嵌套逻辑,哪怕改成正确的「国家→个体→波次」顺序,plm也没法建模三层随机效应,只能粗暴地把某一层当成固定效应吸收掉,根本拆解不了不同层级的变异。 - 用
model='within'的话,最多只能控制个体或国家的固定特征,完全体现不出你的数据里「国家套个体、个体套波次」的层级关系,等于浪费了数据结构信息。
2. lmer才是适配三层结构的正确选择,且能处理重复访谈的误差相关性
lme4包的lmer()天生就是为多层嵌套模型设计的,完全能搞定你的数据结构,而且自动处理了个体重复访谈的误差相关:
- 你之前的lmer代码有小问题,正确的嵌套公式应该明确层级关系,推荐这么写:
这里# 正确的三层嵌套随机截距模型:国家→个体→波次 model1 <- lmer(formula = y ~ 1 + x + (1|country/Individual), data = data_long, REML = TRUE)(1|country/Individual)等价于(1|country) + (1|country:Individual),既建模了不同国家之间的差异,也建模了同一国家内不同个体的差异。而个体的多次波次访谈,因为共享同一个体的随机截距,模型自然就考虑了这些重复观测之间的误差相关性,不用额外操作。 - 如果波次本身存在跨个体的共性变异(比如某一波次的整体环境影响),还可以再加个波次的随机效应:
# 包含波次随机效应的扩展模型 model2 <- lmer(formula = y ~ 1 + x + (1|country/Individual) + (1|Wave), data = data_long, REML = TRUE)
3. 额外小建议
- 跑完模型后用
summary(model1)看一下各层级的方差成分,就能确认模型有没有正确捕捉到国家、个体层面的变异; - 如果你的研究重点是固定效应估计(比如必须控制国家和个体的固定特征),也可以在lmer里加入固定效应项,但多层模型的优势就是能拆解不同层级的变异,建议优先考虑随机效应模型;
- 拿不准固定还是随机效应的话,用
anova()对比两个模型就能得到统计检验结果。
内容的提问来源于stack exchange,提问作者Sophie
相关产品推荐
相关产品推荐

