我正在尝试通过原点进行回归。
lm(Petal.Width ~ Petal.Length -1, iris)
然后我尝试从各自的方法中简单地从Petal.Width
和Petal.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)
问题但是为什么错误消息说"变量长度不同"?由于变量长度相同,这本身并没有真正帮助我弄清楚发生了什么。
答案 0 :(得分:1)
由于+
和-
在公式中没有通常的含义,Petal.Length
和mean(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])