📌 다항회귀분석(Polynomial regression analysis)
> library(car)
> str(Prestige)
'data.frame': 102 obs. of 6 variables:
$ education: num 13.1 12.3 12.8 11.4 14.6 ...
$ income : int 12351 25879 9271 8865 8403 11030 8258 14163 11377 11023 ...
$ women : num 11.16 4.02 15.7 9.11 11.68 ...
$ prestige : num 68.8 69.1 63.4 56.8 73.5 77.6 72.6 78.1 73.1 68.8 ...
$ census : int 1113 1130 1171 1175 2111 2113 2133 2141 2143 2153 ...
$ type : Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 2 2 ...
📌 교육기관과 소득 간의 관계 분석
단순회귀분석
> Prestige.lm <- lm(income ~ education, data=Prestige)
> summary(Prestige.lm)
Call:
lm(formula = income ~ education, data = Prestige)
Residuals:
Min 1Q Median 3Q Max
-5493.2 -2433.8 -41.9 1491.5 17713.1
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2853.6 1407.0 -2.028 0.0452 *
education 898.8 127.0 7.075 2.08e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3483 on 100 degrees of freedom
Multiple R-squared: 0.3336, Adjusted R-squared: 0.3269
F-statistic: 50.06 on 1 and 100 DF, p-value: 2.079e-10
회귀식 : income = -2853.6 + 898.8 * education
교육기간이 1년 증가할 때 마다 소득은 898.8 달러씩 증가한다.
> windows(width=12, height=8)
> plot(Prestige$income ~ Prestige$education,
+ col="cornflowerblue", pch=19,
+ xlab="Education (years)", ylab="Income (dollars)",
+ main="Education and Income")
산점도 관측값들을 보면 교육기관이 짧을 때와 길 때 소득에 미치는 영향이 다르다. 교육기관이 길 때는 짧을 때에 비해 한 단위 증가에 따른 소득의 증가폭이 더 크다. 직선이 교육기관과 소득 간의 관계를 잘 표현하는지는 더 생각해볼 필요가 있다.
📌 교육기관이 짧은 집단과 긴 집단으로 나누어 회귀분석
> lm(income ~ education, data=Prestige,
+ subset=(education > mean(Prestige$education))) # 긴 집단
Call:
lm(formula = income ~ education, data = Prestige, subset = (education >
mean(Prestige$education)))
Coefficients:
(Intercept) education
-10299 1455
> lm(income ~ education, data=Prestige,
+ subset=(education <= mean(Prestige$education))) # 짧은 집단
Call:
lm(formula = income ~ education, data = Prestige, subset = (education <=
mean(Prestige$education)))
Coefficients:
(Intercept) education
2546.6 281.8
긴 집단 : 독립변수 회귀계수 1455
짧은 집단 : 독립변수 회귀계수 281.8
두 집단에 있어서 회귀선의 기울이가 다르다는 것은 단일 직선의 회귀선 보다는 굴절을 갖는 곡선에 의해서 더 잘 설명될지도 모른다.
> scatterplot(income ~ education, data=Prestige,
+ pch=19, col="orangered", cex=1.2,
+ regLine=list(method=lm, lty=2, lwd=3, col="royalblue"),
+ smooth=list(soother=loessLine, spread=FALSE,
+ lty.smooth=1, lwd.smooth=3, col.smooth="green3"),
+ xlab="Education (years)", ylab="Income (dollars)",
+ main="Education and Income")
- regLine : 직선
- method=lm : 선형 회귀선
- smooth : 곡선 추세선
- soother=loessLine : 현제 데이터의 구간별 가장 적합한 추세선
곡선 loess 추세선이 개별 데이터를 더 잘 나타낸다. 따라서 2차항 회귀모델이 더 적합하다.
다항회귀분석
📝 포뮬러 심볼
> summary(prestige.poly)
Call:
lm(formula = income ~ education + I(education^2), data = Prestige)
Residuals:
Min 1Q Median 3Q Max
-5951.4 -2091.1 -358.2 1762.4 18574.2
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 12918.23 5762.27 2.242 0.02720 *
education -2102.90 1072.73 -1.960 0.05277 .
I(education^2) 134.18 47.64 2.817 0.00586 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3369 on 99 degrees of freedom
Multiple R-squared: 0.383, Adjusted R-squared: 0.3706
F-statistic: 30.73 on 2 and 99 DF, p-value: 4.146e-11
- p-value = 4.146e-11이므로 다항회귀 모델의 회귀식은 통계적으로 유의하다.
- RSE = 3369
- R-squared = 0.383
📌 단순회귀 결과와 비교
> Prestige.lm <- lm(income ~ education, data=Prestige)
> summary(Prestige.lm)
Call:
lm(formula = income ~ education, data = Prestige)
Residuals:
Min 1Q Median 3Q Max
-5493.2 -2433.8 -41.9 1491.5 17713.1
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2853.6 1407.0 -2.028 0.0452 *
education 898.8 127.0 7.075 2.08e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3483 on 100 degrees of freedom
Multiple R-squared: 0.3336, Adjusted R-squared: 0.3269
F-statistic: 50.06 on 1 and 100 DF, p-value: 2.079e-10
- p-value = 2.079e-10이므로 단순회귀 모델의 회귀식은 통계적으로 유의하다.
- RSE = 3483
- R-squared = 0.3336
RSE 값은 작을수록 좋고, R-squared 값은 클수록 좋다.
따라서 다항회귀 모델이 단순회귀 모델에 비해서 더 우수하다.
⭐ 다중공선성 ⭐
- I(education^2)의 p-value = 0.00586 통계적으로 유의하다.
- education의 p-value = 0.05277 통계적으로 유의하지 않다.
두 독립변수 간의 통계적 유의성이 다르게 나타난 이유는 ❓
두 독립변수 간의 강한 상관관계가 이유일 수도 있다. => ⭐다중공선성⭐
다항회귀분석은 다중공선성이 나타날 확률이 크다.
왜 ❓
2차항은 원래의 독립변수를 바탕으로 계산되기 때문에 상관관계가 크다. 다만 회귀식은 통계적으로 유의하기 때문에 예측이 주 목적이라면, 문제가 되지 않는다.
📌 faithful 데이터 셋으로 다항 회귀 분석
> str(faithful)
'data.frame': 272 obs. of 2 variables:
$ eruptions: num 3.6 1.8 3.33 2.28 4.53 ...
$ waiting : num 79 54 74 62 85 55 88 85 51 85 ...
> # 분출 대기시간과 분출 지속시간 간의 관계
> scatterplot(eruptions ~ waiting, data=faithful,
+ pch=19, col="deepskyblue", cex=1.2,
+ regLine=list(method=lm, lty=2, lwd=3, col="blueviolet"),
+ smooth=list(soother=loessLine, spread=FALSE,
+ lty.smooth=1, lwd.smooth=3, col.smooth="coral"),
+ xlab="waiting (minutes)", ylab="Eruptions (minutes)",
+ main="Waiting Time Between Eruptions and the Duration of the Eruptions")
2개의 굴절이 나타나기 때문에 3차 다항식 회귀 모델을 해야 한다.
> faithful.ploy <- lm(eruptions ~ waiting + I(waiting^2) + I(waiting^3), data=faithful)
> summary(faithful.ploy)
Call:
lm(formula = eruptions ~ waiting + I(waiting^2) + I(waiting^3),
data = faithful)
Residuals:
Min 1Q Median 3Q Max
-1.20224 -0.21761 -0.02508 0.27463 1.28682
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.063e+01 3.722e+00 8.229 8.27e-15 ***
waiting -1.438e+00 1.672e-01 -8.601 6.74e-16 ***
I(waiting^2) 2.290e-02 2.450e-03 9.346 < 2e-16 ***
I(waiting^3) -1.128e-04 1.176e-05 -9.593 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4238 on 268 degrees of freedom
Multiple R-squared: 0.8637, Adjusted R-squared: 0.8622
F-statistic: 566 on 3 and 268 DF, p-value: < 2.2e-16
- p-value = < 2.2e-16 이므로 다항 회귀모델의 회귀식은 통계적으로 유의하다.
- RSE = 0.4238
- R-squared = 0.8637
📌 단순회귀분석과 비교
faithful.lm <- lm(eruptions ~ waiting, data=faithful)
> summary(faithful.lm)
Call:
lm(formula = eruptions ~ waiting, data = faithful)
Residuals:
Min 1Q Median 3Q Max
-1.29917 -0.37689 0.03508 0.34909 1.19329
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.874016 0.160143 -11.70 <2e-16 ***
waiting 0.075628 0.002219 34.09 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4965 on 270 degrees of freedom
Multiple R-squared: 0.8115, Adjusted R-squared: 0.8108
F-statistic: 1162 on 1 and 270 DF, p-value: < 2.2e-16
- p-value = < 2.2e-16
- RSE = 0.4965
- R-squared = 0.8115
따라서 다항 회귀 모델의 성능이 조금 더 뛰어나다.