我正在使用像这样的rlm模型。
fit=rlm(log(y) ~ x + z)
Z是包含所有1
的列表。我收到错误Error in rlm.default(x, y, weights, method = method, wt.method = wt.method, : 'x' is singular: singular fits are not implemented in 'rlm'
是否等同于使用fit=rlm(log(y) ~ x + 1)
?
答案 0 :(得分:2)
是的,它等同于使用rlm(log(y) ~ x + 1)
,实际上最好只使用rlm(log(y) ~ x)
,因为截距或常数项(仅包含1')是包含在默认情况下。
通过撰写+ 1
,您只需提醒" rlm
你想要在回归中使用常数项,而写+ z
看起来更像是你想要添加一些变量(并且你可能不知道它只包含1' s) ,但同时具有默认拦截和只包含1的z
导致问题 - perfect collinearity,因此会出错。
强烈建议您在回归中始终使用截距,但如果您真的想要消除它,可以使用log(y) ~ x - 1
来完成。现在实际上log(y) ~ x - 1 + z
工作正常,因为没有两个相同的变量。