정확하게 알고 있듯이 첫 번째 경우에는 "원시"다항식을 사용하고 두 번째 경우에는 직교 다항식을 사용하기 때문입니다. 따라서 나중의 lm
호출이 다음과 같이 바뀌면 : 와 fit3<-lm(y~ poly(x,degree=2, raw = TRUE) -1)
에서 동일한 결과를 얻을 수 있습니다. 이유 왜 우리가이 경우에 동일한 결과를 얻을 수는 "사소한"입니다; 우리는 우리가 장착 한 것과 정확히 동일한 모델에 적합합니다 .fit
fit3
fit<-lm(y~.-1,data=x_exp)
두 모델의 모델 행렬이 동일한 지 쉽게 확인할 수 있습니다 all.equal( model.matrix(fit), model.matrix(fit3) , check.attributes= FALSE) # TRUE
.
더 흥미로운 것은 인터셉트를 사용할 때 왜 동일한 플롯을 얻는 지입니다. 가장 먼저 알아야 할 것은 인터셉트가있는 모델을 피팅 할 때
기존 플롯에 다음 피팅을 간단히 추가하면 쉽게 알 수 있습니다.
fit_b<-lm(y~. ,data=x_exp)
yp=predict(fit_b,xp_exp)
lines(xp,yp, col='green', lwd = 2)
fit2_b<-lm(y~ poly(x,degree=2, raw = FALSE) )
yp=predict(fit2_b,data.frame(x=xp))
lines(xp,yp,col='blue')
OK ... 절편을 포함하는 피팅이 같은 반면 절편이없는 피팅이 다른 이유는 무엇입니까? 캐치가 다시 직교성 조건에 있습니다.
의 경우에 fit_b
사용되는 모델 행렬 그램 매트릭스, 비 직교 요소를 포함 crossprod( model.matrix(fit_b) )
대각선 멀리이고; fit2_b
요소 의 경우 직교 형입니다 ( crossprod( model.matrix(fit2_b) )
실제로 대각선입니다).
따라서 fit
인터셉트를 포함하도록 확장 할 때 Gram 매트릭스fit_b
의 비 대각선 항목을 변경 했으므로 결과적으로 전체적으로 (곡률, 인터셉트 등) 전체적으로 달라집니다. 에 의해 제공되는 적합 . 의 경우 에 우리가 절편을 포함하도록 확장 할 때 비록 우리는 이미 우리가 가진 열 직교 열을 추가, 직교성은 도 0의 상수 다항식에 대해 . 이것은 단순히 인터셉트에 의해 적합 선을 수직으로 이동시키는 결과입니다. 이것이 도표가 다른 이유입니다. XTXfit
fit2
fit2_b
흥미로운 질문 은 fit_b
과 fit2_b
같은 이유입니다 . 모든 모델 행렬의 값fit_b
과 면가 fit2_b
가 동일하지 않습니다 . 여기에서 우리는 궁극적 것을 기억해야 하고 동일한 정보를 가지고있다. 는 단지 선형적인 조합 이므로 본질적으로 결과가 동일합니다. 피팅 된 계수에서 관찰 된 차이 는 그것들을 직교하게하기 위해 값들의 선형 재조합을 반영한다 . (G. Grothendieck 도 여기 에 다른 예가 있습니다.)fit_b
fit2_b
fit2_b
fit_b
fit_b
=
하고<-
일관되지 않은 할당입니다. 나는 이것을 정말로하지 않을 것입니다. 정확히 혼란 스럽지는 않지만 코드에 많은 시각적 노이즈를 추가하여 아무런 이점이 없습니다. 당신은 당신의 개인 코드에 사용하기 위해 하나 또는 다른 하나에 정착하고 그것을 고수해야합니다.