2012-12-15 6 views
4

차수 2 (직교) 다항식을 사용하여 선형 회귀 모델을 적합하게하고 응답을 예측한다고 가정합니다.다항식 회귀 넌센스 예측

m2=lm(y~poly(x,2)[,1]+poly(x,2)[,2]) 
prd.2=predict(m2,newdata=data.frame(x=105:110)) 
다음은 첫 번째 모델 (M1) 이제

x=1:100 
y=-2+3*x-5*x^2+rnorm(100) 
m1=lm(y~poly(x,2)) 
prd.1=predict(m1,newdata=data.frame(x=105:110)) 

에 대한 코드의가 대신 (x는, 2) $가, 내가 좋아하는 그 열을 사용합니다 $ 폴리를 사용하여 동일한 모델을 시도 할 수 있습니다

m1과 m2의 요약을 살펴 보겠습니다.

> summary(m1) 

Call: 
lm(formula = y ~ poly(x, 2)) 

Residuals: 
    Min  1Q Median  3Q  Max 
-2.50347 -0.48752 -0.07085 0.53624 2.96516 

Coefficients: 
       Estimate Std. Error t value Pr(>|t|)  
(Intercept) -1.677e+04 9.912e-02 -169168 <2e-16 *** 
poly(x, 2)1 -1.449e+05 9.912e-01 -146195 <2e-16 *** 
poly(x, 2)2 -3.726e+04 9.912e-01 -37588 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.9912 on 97 degrees of freedom 
Multiple R-squared:  1,  Adjusted R-squared:  1 
F-statistic: 1.139e+10 on 2 and 97 DF, p-value: < 2.2e-16 

> summary(m2) 

Call: 
lm(formula = y ~ poly(x, 2)[, 1] + poly(x, 2)[, 2]) 

Residuals: 
    Min  1Q Median  3Q  Max 
-2.50347 -0.48752 -0.07085 0.53624 2.96516 

Coefficients: 
        Estimate Std. Error t value Pr(>|t|)  
(Intercept)  -1.677e+04 9.912e-02 -169168 <2e-16 *** 
poly(x, 2)[, 1] -1.449e+05 9.912e-01 -146195 <2e-16 *** 
poly(x, 2)[, 2] -3.726e+04 9.912e-01 -37588 <2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.9912 on 97 degrees of freedom 
Multiple R-squared:  1,  Adjusted R-squared:  1 
F-statistic: 1.139e+10 on 2 and 97 DF, p-value: < 2.2e-16 

그래서 m1과 m2는 기본적으로 동일합니다. prd.2이 prd.1 크게 다른 이유 : 이제 예측의 prd.1 및 prd.2

> prd.1 
     1   2   3   4   5   6 
-54811.60 -55863.58 -56925.56 -57997.54 -59079.52 -60171.50 

> prd.2 
     1   2   3   4   5   6 
    49505.92 39256.72 16812.28 -17827.42 -64662.35 -123692.53 

Q1 살펴 보자?

Q2 : 모델 m2를 사용하여 어떻게 prd.1을 얻을 수 있습니까?

+1

하지 대답하지만, 충분히 높은 값을 나를 괴롭히는 ... –

+1

전혀 문제가되지 않습니다. 우리는 $ y = -2 + 3 * x-5 * x^2 + x^5 + rnorm (100,15) $와 R-squared와 같은 것으로 $ y $를 95 %로 변경할 수 있습니다. 예측. –

+0

첫 번째 모델의 결과는 어딘가에 상태가 나쁜 매트릭스처럼 보입니다. 예측은 단순히 첫 번째 모델에 의해 추정 된 난센스 계수를 따릅니다. –

답변

8

m1이 올바른 방법입니다. 이 외삽 새로운 데이터에 대해 동일한 기초 기능을 사용하도록 m2

m2에서 예측을 수행하려면 ... 고통의 전 세계에 진입, 모델, 그것은 기저 함수의 직교 세트에 장착 된 알 필요가있다 값. 비교 : poly(1:10,2)[,2]poly(1:12,2)[,2] - 처음 10 개의 값이 동일하지 않습니다. 모델에 poly(x,2)을 명시 적으로 적용하면 predict은 모든 것을 이해하고 올바른 작업을 수행합니다.

예상되는 위치가 처음에 모델을 만드는 데 사용 된 기본 기능 집합을 사용하여 변형되었는지 확인해야합니다. 당신은이에 대한 predict.poly을 사용할 수 있습니다 (I 내 설명 변수 x1x2 전화에 유의 그렇게 쉬운까지 이름이 일치하는 것을) : 항상 R 제곱 (0.99 일)의

px = poly(x,2) 
x1 = px[,1] 
x2 = px[,2] 

m3 = lm(y~x1+x2) 

newx = 90:110 
pnew = predict(px,newx) # px is the previous poly object, so this calls predict.poly 

prd.3 = predict(m3, newdata=data.frame(x1=pnew[,1],x2=pnew[,2])) 
+0

답장을 보내 주셔서 감사합니다. 그게 내 질문에 완전히 대답 해. 제가 제 2의 질문을 던지는 이유는 이것입니다 : 우리가 m4 = lm (y ~ poly (x, 5))와 같이 차수 5의 다항식에 적합하다고 가정하십시오. 다음에 피팅 한 후에 우리는 두 개의 항을 삭제함으로써 새로운 모델 (m5)에 맞추기를 원합니다. 즉 차수 2와 4의 다항식입니다.그리고 마지막으로이 최종 모델 (m5)을 사용하여 예측을하십시오. 난 그냥 m4를 사용하여 이것을 할 수 없었다. 그러나 이것은 언급 한 것처럼 인수와 모델 m3을 사용하여 수행 할 수 있습니다. – Stat