手動多項式展開と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
にない場合、2つの線は同じになります。しかし、なぜ切片なしで2つの線が異なるのですか?別の「修正」は
raw
、直交多項式の代わりに多項式展開を使用することです。コードをに変更するfit2 = lm(y~ poly(x,degree=2, raw=T) -1)
と、2行が同じになります。しかし、なぜ?
<-
入力の手間を軽減するためのランダムなフォローアップのヒント:alt+-
。
=
と<-
割り当てに一貫性がないことです。私は本当にこれをしません、それは正確に混乱するわけではありませんが、それはあなたのコードに多くの視覚的なノイズを追加し、利益はありません。あなたは自分の個人コードで使用するためにどちらか一方に落ち着いて、それに固執するべきです。