在 R 中解释回归中的错误消息

Interpreting error message in regression in R

我正在尝试通过原点进行回归。

lm(Petal.Width ~ Petal.Length -1, iris)

然后我尝试简单地从 Petal.WidthPetal.Length 中减去各自的平均值,使它们的平均值为零。

lm(Petal.Width-mean(Petal.Width) ~ Petal.Length-mean(Petal.Length) -1, iris)

这给了我以下错误信息:

Error in model.frame.default(formula = Petal.Width - mean(Petal.Width) ~  : 
                           variable lengths differ (found for 'mean(Petal.Length)')

现在我知道我必须使用 I() 函数才能使代码正常工作。

    lm(I(Petal.Width-mean(Petal.Width)) ~ I(Petal.Length-mean(Petal.Length)) -1, iris)

问题:但是为什么报错信息是"variable lengths differ"?这本身并不能真正帮助我弄清楚发生了什么,因为可变长度是相同的。

由于 +- 在公式中没有它们通常的含义,因此 Petal.Lengthmean(Petal.Length) 被解释为两个单独的变量。此处,Petal.Length 的长度为 150,而 mean(Petal.Length) 的长度为 1(均值将其压缩为单个值)。因此,您会收到有关不同可变长度的消息。

如果真要深究的话,错误其实来自model.frame(),具体来说

model.frame.default(Petal.Width-mean(Petal.Width) ~ Petal.Length-mean(Petal.Length), iris[-1])