You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三层面板数据分析: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:32:37