1. 회귀분석(★)
단순회귀모형 식
-
단순회귀모형
-
회귀모형 대한 가정
-
선형성 - 독립변수의 변화에 따라 종속변수도 변화하는 선형(Linear)인 모형
-
독립성 - 잔차와 독립변수의 값이 서로 독립
-
등분산성 - 오차항들의 분포는 동일한 분산
-
비상관성 - 잔차들끼리 상관이 없음
-
정상성 - 잔차항이 정규분포를 이뤄야함
-
회귀분석 모형에서 확인해야 할 사항
-
모형이 통계적으로 유의미한가? -> F분포값과 유의확률(p-value)로 확인
-
회귀계수들이 유의미한가? -> 회귀계수의 t값과 유의확률(p-value)로 확인
-
모형이 얼마나 설명력을 갖는가? -> 결정 계수를 확인
-
모형이 데이터를 잘 적합하고 있는가? -> 잔차통계량을 확인하고 회귀진단 실행
-
모델 진단 그래프
-
Residuals vs Fitted : y축은 잔차. 선형 회귀에서 오차는 평균이 0 이고 분산이 일정한 정규분포를 가정 -> y값은 기울기가 0 인 직선이 이상적
-
Normal Q-Q : 잔차가 정규분포를 잘 따르고 있는지를 확인하는 그래프(잔차들이 선상에 있어야 이상적)
-
Scale-Location : y축은 표준화 잔차. 기울기 0이 이상적, 0에서 멀리 떨어진 값 : 이상치일 가능성 높음
-
Cook's Distance : 1값이 넘어가면 관측치를 영향점으로 판별
-
다중공선성
-
최적 회귀방정식의 선택 : 설명변수의 선택
-
설명 변수를 선택하는 방법
-
모든 가능한 조합의 회귀분석
-
단계별 변수선택
-
단계별 선택
-
후진 제거법
-
전진 선택법
-
step() 함수로 수행
> x1<-c(7,1,11,11,7,11,3,1,2,21,1,11,10)
> x2<-c(26,29,56,31,52,55,71,31,54,47,40,66,68)
> x3<-c(6,15,8,8,6,9,17,22,18,4,23,9,8)
> x4<-c(60,52,20,47,33,22,6,44,22,26,34,12,12)
> y<-c(78.5,74.3,104.3,87.6,95.9,109.2,102.7,72.5,93.1,115.9,83.8,113.3,109.4)
> df<-data.frame(x1,x2,x3,x4,y)
####변수 설정####
> head(df)
x1 x2 x3 x4 y
1 7 26 6 60 78.5
2 1 29 15 52 74.3
3 11 56 8 20 104.3
4 11 31 8 47 87.6
5 7 52 6 33 95.9
6 11 55 9 22 109.2
#### 후진제거법 ####
> a<-lm(y~x1+x2+x3+x4,data=df)
> a
Call:
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Coefficients:
(Intercept) x1 x2 x3 x4
62.4054 1.5511 0.5102 0.1019 -0.1441
> summary(a)
Call:
lm(formula = y ~ x1 + x2 + x3 + x4, data = df)
Residuals:
Min 1Q Median 3Q Max
-3.1750 -1.6709 0.2508 1.3783 3.9254
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 62.4054 70.0710 0.891 0.3991
x1 1.5511 0.7448 2.083 0.0708 .
x2 0.5102 0.7238 0.705 0.5009
x3 0.1019 0.7547 0.135 0.8959
x4 -0.1441 0.7091 -0.203 0.8441
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.446 on 8 degrees of freedom
Multiple R-squared: 0.9824, Adjusted R-squared: 0.9736
F-statistic: 111.5 on 4 and 8 DF, p-value: 4.756e-07
## Pr(>|t|) (유의확률(P-value))가 가장 높은 x3 제거
> a<-lm(y~x1+x2+x4,data=df)
> a
Call:
lm(formula = y ~ x1 + x2 + x4, data = df)
Coefficients:
(Intercept) x1 x2 x4
71.6483 1.4519 0.4161 -0.2365
> summary(a)
Call:
lm(formula = y ~ x1 + x2 + x4, data = df)
Residuals:
Min 1Q Median 3Q Max
-3.0919 -1.8016 0.2562 1.2818 3.8982
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 71.6483 14.1424 5.066 0.000675 ***
x1 1.4519 0.1170 12.410 5.78e-07 ***
x2 0.4161 0.1856 2.242 0.051687 .
x4 -0.2365 0.1733 -1.365 0.205395
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.309 on 9 degrees of freedom
Multiple R-squared: 0.9823, Adjusted R-squared: 0.9764
F-statistic: 166.8 on 3 and 9 DF, p-value: 3.323e-08
## 유의확률이 가장 높은 x4 제거
> a<-lm(y~x1+x2,data=df)
> summary(a)
Call:
lm(formula = y ~ x1 + x2, data = df)
Residuals:
Min 1Q Median 3Q Max
-2.893 -1.574 -1.302 1.363 4.048
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 52.57735 2.28617 23.00 5.46e-10 ***
x1 1.46831 0.12130 12.11 2.69e-07 ***
x2 0.66225 0.04585 14.44 5.03e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 2.406 on 10 degrees of freedom
Multiple R-squared: 0.9787, Adjusted R-squared: 0.9744
F-statistic: 229.5 on 2 and 10 DF, p-value: 4.407e-09
####전진 선택법####
> step(lm(y~1,df),scope=list(lower=~1,upper=~x1+x2+x3+x4),direction="forward")
Start: AIC=71.44
y ~ 1
Df Sum of Sq RSS AIC
+ x4 1 1831.90 883.87 58.852
+ x2 1 1809.43 906.34 59.178
+ x1 1 1450.08 1265.69 63.519
+ x3 1 776.36 1939.40 69.067
<none> 2715.76 71.444
Step: AIC=58.85
y ~ x4
Df Sum of Sq RSS AIC
+ x1 1 809.10 74.76 28.742
+ x3 1 708.13 175.74 39.853
<none> 883.87 58.852
+ x2 1 14.99 868.88 60.629
Step: AIC=28.74
y ~ x4 + x1
Df Sum of Sq RSS AIC
+ x2 1 26.789 47.973 24.974
+ x3 1 23.926 50.836 25.728
<none> 74.762 28.742
Step: AIC=24.97
y ~ x4 + x1 + x2
Df Sum of Sq RSS AIC
<none> 47.973 24.974
+ x3 1 0.10909 47.864 26.944
Call:
lm(formula = y ~ x4 + x1 + x2, data = df)
Coefficients:
(Intercept) x4 x1 x2
71.6483 -0.2365 1.4519 0.4161