Notice
Recent Posts
Recent Comments
09-29 03:12
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

Byeol Lo

[ADP] 4장 데이터 분석 - 회귀 분석(Regression Analysis) 본문

AI/ADP

[ADP] 4장 데이터 분석 - 회귀 분석(Regression Analysis)

알 수 없는 사용자 2024. 7. 30. 20:10

깊이 있는 내용은 다른 포스트로 대체하면서 넘기며, 지금은 흐름을 따지자.

2024.07.29 - [Math/Applied Statistics] - Simple Linear Regression

 

Simple Linear Regression

많이 부족하니 틀린 부분은 댓글로 지적해 주셨으면 좋겠습니다.  실생활에서 쓰일 수 있는 두 변수 간의 상관관계를 간단히 표현할 수 있는 일차방정식을 생각해 보자. 예를 들어, 붕어빵의

seonghun120614.tistory.com

 

 

R을 이용한 단순선형회귀

set.seed(2)

x = runif(10, 0, 11)
y = 2 + 3*x + rnorm(10, 0, 0.2)

dfrm = data.frame(x, y)
lm(y~x, data=dfrm)
Call:
lm(formula = y ~ x, data = dfrm)

Coefficients:
(Intercept)            x  
      2.213        2.979

 

R을 이용한 다중선형회귀

set.seed(2)

u = runif(10, 0, 11)
v = runif(10, 11, 20)
w = runif(10, 1, 30)

y = 3 + 0.1*u + 2*v - 3*w + rnorm(10, 0, 0.1)
dfrm = data.frame(u, v, w, y)
lm(y~u+v+w, data = dfrm)
Call:
lm(formula = y ~ u + v + w, data = dfrm)

Coefficients:
(Intercept)            u            v            w  
    3.32894      0.09613      1.98409     -3.00434

 

R을 이용한 유의성, 적합성 검정

m <- lm(y~u+v+w, data = dfrm)
summary(m)
Call:
lm(formula = y ~ u + v + w, data = dfrm)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.06635 -0.04480 -0.01438  0.03646  0.09493 

Coefficients:
             Estimate Std. Error  t value Pr(>|t|)    
(Intercept)  3.328942   0.146079    22.79 4.68e-07 ***
u            0.096127   0.008004    12.01 2.02e-05 ***
v            1.984093   0.007632   259.96 2.19e-13 ***
w           -3.004337   0.002705 -1110.63  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.06771 on 6 degrees of freedom
Multiple R-squared:      1,	Adjusted R-squared:      1 
F-statistic: 7.241e+05 on 3 and 6 DF,  p-value: < 2.2e-16

 각 u, v, w 의 p-value가 0.001 보다 작기 때문에(quantile이 양 끝 단에 있기 때문에) 유의미하다고 볼 수 있다. 이 모델의 설명력은 adj R^2, R^2 둘 다 100%에 가까운 설명력을 가지게 되며, 모델의 적합성 검정에서 모델이 통계적으로 유의미함을 볼 수 있다.

 

R을 이용한 다항회귀분석

data(cars)
head(cars)

speed2 = cars$speed^2
cars = cbind(speed2, cars)

lm(formula = dist~speed+speed^2, data = cars)
Call:
lm(formula = dist ~ speed + speed^2, data = cars)

Coefficients:
(Intercept)        speed  
    -17.579        3.932

 

m <- lm(formula = dist~speed+speed2, data = cars)
summary(m)
Call:
lm(formula = dist ~ speed + speed2, data = cars)

Residuals:
    Min      1Q  Median      3Q     Max 
-28.720  -9.184  -3.188   4.628  45.152 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  2.47014   14.81716   0.167    0.868
speed        0.91329    2.03422   0.449    0.656
speed2       0.09996    0.06597   1.515    0.136

Residual standard error: 15.18 on 47 degrees of freedom
Multiple R-squared:  0.6673,	Adjusted R-squared:  0.6532 
F-statistic: 47.14 on 2 and 47 DF,  p-value: 5.852e-12

 추정된 선형모델은 2.47 + 0.91 * speed + 0.1 *speed2 임을 알 수 있다. 하지만 이 speed 만 가지고서는 유의성이 떨어지며, 모델의 설명력 지표 R^2도 0.6 정도에 못미친다. F 검정에서 p-value 또한 기각역 안에 들어가므로 전반적으로 좋은 모델이라고 할 수 없다.

 

최적회귀방정식의 선택

  • 모든 가능한 조합의 회귀분석(All Possible Regression): 가능한 모든 조합의 linear model을 만들어서 그 중 가장 설명력이 좋고 적합도가 뛰어난 모델을 선택하는 것
    • AIC(Akaike Information Criterion) = $-2 \log L(\hat{\theta}) + 2k \quad (k = number of parameters)$
    • BIC(Bayesian Information Criterion) = $-2 \log L(\hat{\theta}) + 2k \log (n)$
  • 단계적 변수선택(Stepwise Variable Selection)
    • 전진선택법: 절편만 있는 상수모형으로부터 시작해 중요하다고 생각하는 설명변수부터 차례로 모형에 추가
    • 후진제거법: 독립변수 후보 모두를 포함한 모형에서 출발해 제곱합의 기준으로 가장 적은 영향을 주는 변수부터 하나씩 제거
    • 단계별방법: 전진선택법에서 변수를 추가할 때 기존 변수의 중요도가 약화되면 해당 변수를 제거하는 것
단계별 변수 선택에서 R은
step(lm(종속변수~독립변수, 데이터세트), scope=list(lower=~1, upper=~독립변수), direction = "forward")
를 통해 전진선택법을 하거나 "backward", "both"를 통해 변수를 적절히 선택가능하다.

 

Comments