为什么我对手动多项式展开和使用 Rpoly
函数得到不同的预测?
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)
, 将使 2 行相同。但为什么?