为什么对于人工多项式展开和使用R poly
函数会得到不同的预测?
set.seed(0)
x <- rnorm(10)
y <- runif(10)
plot(x,y,ylim=c(-0.5,1.5))
grid()
# xp is a grid variable for ploting
xp <- seq(-3,3,by=0.01)
x_exp <- data.frame(f1=x,f2=x^2)
fit <- lm(y~.-1,data=x_exp)
xp_exp <- data.frame(f1=xp,f2=xp^2)
yp <- predict(fit,xp_exp)
lines(xp,yp)
# using poly function
fit2 <- lm(y~ poly(x,degree=2) -1)
yp <- predict(fit2,data.frame(x=xp))
lines(xp,yp,col=2)
我的尝试:
截距似乎是一个问题,当我将模型与截距拟合时,即
-1
在模型中不存在时formula
,这两行是相同的。但是,为什么没有截距,这两行是不同的?另一个“解决方案”是使用
raw
多项式展开而不是正交多项式。如果将代码更改为fit2 = lm(y~ poly(x,degree=2, raw=T) -1)
,将使两行相同。但为什么?
<-
减少打字麻烦:alt+-
。
=
和<-
分配不一致。我真的不会这样做,这并没有完全使人困惑,但是它给您的代码增加了很多视觉干扰,毫无益处。您应该选择一种或另一种用于您的个人代码,并坚持使用。