我正在使用这样的 rlm 模型。
fit=rlm(log(y) ~ x + z)
Z 是一个包含所有 1
的列表。我收到错误 Error in rlm.default(x, y, Weights, method = method, wt.method = wt.method, : 'x' is 单数: 单数拟合未在 'rlm' 中实现
是否相当于使用fit=rlm(log(y) ~ x + 1)
代替?
最佳答案
是的,它相当于使用rlm(log(y) ~ x + 1)
,实际上最好只使用rlm(log(y) ~ x)
因为默认情况下包含截距或常数项(即仅包含 1 的变量)。
通过编写+ 1
,您只是“提醒”rlm
您需要回归中的常数项,而编写+ z
看起来更就像您想要添加一些变量(您可能不知道它只包含 1),但是同时具有默认截距和仅包含 1 的 z
会导致问题 - perfect collinearity ,因此这会产生错误。
强烈建议在回归中始终保留截距,但如果您确实想消除它,可以使用 log(y) ~ x - 1
来完成。现在实际上 log(y) ~ x - 1 + z
工作正常,因为不存在两个相同的变量。
关于R:使用具有重复数的列表的稳健线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35505139/