如何解决当我们使用多个分类预测变量删除截距时,lm() 的行为如何
我有两个二元预测变量(name
和 Treat
)。我从整个模型 (value ~ name*Treat-1
) 中删除了截距。
因此,我希望 lm()
不会将我的任何二元预测变量中的任何类别作为参考类别。
对于预测变量 name
,我的期望与输出匹配(即,没有 name
的类别作为参考类别)。
但是对于我的第二个二元预测器(即 Treat
),它的一个类别(即 "Treat-0.5"
)再次被作为参考类别。
我想知道当我们使用多个分类预测变量删除拦截时 lm()
的行为如何?
dat <- read.csv('https://raw.githubusercontent.com/hkil/m/master/mv.l.csv')
dat$Treat <- factor(dat$Treat)
lm(value ~ name*Treat-1,data = dat)
coef(summary(m))
Estimate Std. Error t value Pr(>|t|)
nameY1 45.69318724 0.5132694 89.02378209 0.000000e+00
nameY2 45.97807164 0.5132694 89.57882078 0.000000e+00
Treat0.5 8.72325383 0.7258726 12.01760985 6.540707e-32
nameY2:Treat0.5 -0.09756526 1.0265389 -0.09504293 9.242927e-01
我希望输出是:
Estimate Std. Error t value Pr(>|t|)
nameY1 45.69318724 0.5132694 89.02378209 0.000000e+00
nameY2 45.97807164 0.5132694 89.57882078 0.000000e+00
nameY1:Treat0.5 8.72325383 0.7258726 12.01760985 6.540707e-32
nameY2:Treat-0.5 8.625689 xxxxxxxxx xxxxxxxxxxx xxxxxxxxxxxx
解决方法
执行线性回归:
lm()
函数使用模型矩阵 X 的 QR 分解,该矩阵由 model.matrix()
创建(请参阅 help page for lm)。要得到一个解,它要求矩阵是满秩的,基本没有冗余的预测器列。
因此,即使您用 -1
表示没有截距,model.matrix()
也需要确保模型矩阵是满秩的,以便 QR 分解可以工作。我们可以将您的示例简化为:
value ~ name + Treat
假设我们有 name == Y1、name == Y2、Treat == 0.5、Treat == -0.5 的预测变量:
dummy_matrix = cbind(model.matrix(~name-1,data=dat),model.matrix(~Treat-1,data=dat))
head(dummy_matrix)
nameY1 nameY2 Treat-0.5 Treat0.5
1 1 0 1 0
2 0 1 1 0
3 1 0 1 0
4 0 1 1 0
5 1 0 1 0
6 0 1 1 0
要预测 Y1 和 Treat-0.5,它将是 1nameY1 + 0nameY2 + 1Treat-0.5 + 0Treat0.5。最后一个预测变量是多余的,因为预测变量 Treat-0.5 应该是组 Treat-0.5
和 Treat-0.5
的两个均值之间的差值。
如果我们检查排名,它当然比列数少一:
qr(dummy_matrix)$rank
[1] 3
如果你适合它,你会得到最后一列的 NA:
lm(dat$value ~ 0+dummy_matrix)
Call:
lm(formula = dat$value ~ 0 + dummy_matrix)
Coefficients:
dummy_matrixnameY1 dummy_matrixnameY2 dummy_matrixTreat-0.5
54.392 54.628 -8.674
dummy_matrixTreat0.5
NA
因此,如果您有 1 个以上的分类预测器,从第 2 个分类预测器开始,将设置其中一个作为参考,以确保您的模型矩阵是满秩的,并且可以通过 QR 分解来解决。
您还可以查看此post,其中通过示例讨论了什么是对比矩阵。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。