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

时间:2015-11-08 21:41:45

标签: r regression

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

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)

问题但是为什么错误消息说"变量长度不同"?由于变量长度相同,这本身并没有真正帮助我弄清楚发生了什么。

1 个答案:

答案 0 :(得分:1)

由于+-在公式中没有通常的含义,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])