lmer加入交互项后出现未定义变量估计值的原因咨询
多水平回归中因子交互项的额外变量来源解析
问题背景
你在使用mice完成多水平插补并通过mitml合并后,运行多水平回归时遇到输出中出现原数据不存在的变量的问题。具体代码及输出如下:
运行代码
Int1 <- with(data, lmer(math ~ meanmath*cc + (1|classID)))
模型输出
(Intercept) 0.34 meanmath 0.22 cc1 -0.43 cc2 -0.69 cc3 -0.66 meanmath*cc1 -0.16 meanmath*cc2 0.12 meanmath*cc3 0.23
已知data$cc是包含4个水平("1","2","3","4")的因子类型变量,其余变量均为连续型,且单个插补数据运行结果一致、所有插补数据变量完全相同。
原因解析
这些额外变量是R处理因子类型自变量时自动生成的虚拟编码(dummy variables),属于模型拟合的默认行为,具体逻辑如下:
- 当因子变量
cc被纳入回归模型时,R会自动将其转换为虚拟变量。由于cc有4个水平,R默认选取最后一个水平(此处为"4")作为参考水平,然后为剩下的3个水平分别生成一个虚拟变量(即cc1、cc2、cc3)。这些虚拟变量用于标记样本是否属于对应水平(属于则取值1,否则为0)。 - 公式中的
meanmath*cc是meanmath + cc + meanmath:cc的简写,代表同时纳入主效应与交互效应。因此模型会自动生成meanmath与每个cc虚拟变量的交互项(meanmath*cc1、meanmath*cc2、meanmath*cc3),用于衡量meanmath对math的影响在cc不同水平下的差异。
这些变量并非数据中实际存在的列,而是R为拟合因子变量效应在模型内部自动构造的编码变量,完全符合统计建模的规范。
内容的提问来源于stack exchange,提问作者Svenja
相关产品推荐
相关产品推荐

