GLM模型中分类与离散变量交互项显示NA的问题求助
问题原因
你的数据结构导致自变量间存在完全多重共线性:当var1=0时,var2的取值全为0;只有var1=1时,var2才有非零值。这种情况下,var2的主效应和var1:var2的交互效应完全重合(var1=1时,交互项等于var2;var1=0时两者都是0),模型无法区分这两个效应,因此交互项系数被标记为NA。
解决方案
由于没有var1=0且var2≠0的观测,无法估计var2在var1=0组的主效应,因此需要调整模型形式,去掉冗余的自变量:
方法1:仅保留var1主效应与交互项
直接拟合var1和var1*var2的组合,去掉无意义的var2主效应:
a.glm <- glm(y ~ var1 + I(var1*var2), family=poisson, data = a) summary(a.glm)
输出中,I(var1*var2)的系数就是var1=1时var2的效应,符合你对交互作用的预期。
方法2:将var1转为因子,拟合分组斜率
把var1转为分类变量,直接指定var1与var2的交互项(自动去掉冗余的var2主效应):
a$var1 <- as.factor(a$var1) a.glm <- glm(y ~ var1 + var1:var2, family=poisson, data = a) summary(a.glm)
此时var11:var2的系数代表var1=1组中var2每增加1单位对y的影响。
额外说明
如果条件允许,补充var1=0且var2≠0的观测可以从根本上解决共线性问题,让模型能同时估计主效应和交互效应。但如果数据无法补充,上述两种调整后的模型已经能准确反映你关注的“var2仅在var1=1时起作用”的关系。
内容的提问来源于stack exchange,提问作者Kon-kon
相关产品推荐
相关产品推荐

