DataScience
article thumbnail
Published 2022. 12. 12. 14:48
변수 선택 데이터분석/통계기반
728x90

회귀모델에서 독립변수의 증가는 모델의 결정계수를 증가시켜 설명력을 높이는 장점이 있지만 다중 공선성 문제를 일으킬 수 있어서 추정의 신뢰도를 저하시킬 수 있고, 독립변수가 많을 경우 예측성능이 좋지 않을 가능성이 많고 독립성, 등분산성 등의 가정을 만족시키기 어렵기 때문에 독립변수를 줄일 필요가 있다.

전진 선택법(Forward Selection): 절편만 있는 모델에서 기준 통계치를 가장 많이 개선시키는 변수를 차례로 추가

후진 제거법(Backward elimination): 모든 변수가 포함된 모델에서 기준 통계치에 가장 도움이 되지 않는 변수를 하나씩 제거하는 방법

단계선택법(Stepwise selction): 모든 변수가 포함된 모델에서 출발하여 기준 통계치에 가장 도움이 되지 않는 변수를 삭제하거나, 모델에서 빠져 있는 변수 중에서 기준 통계치를 가장 개선시키는 변수를 추가. 이렇게 변수의 추가 또는 삭제를 반복. 또는 절편만 포함된 모델에서 시작해 변수의 추가, 삭제를 반복할 수 도 있다.

실습1.

mlbench 패키지 안의 BostonHousing 데이터 이용

http://math.furman.edu/~dcs/courses/math47/R/library/mlbench/html/BostonHousing.html

종속변수는 medv(집의 중위가격)

1. 전진선택법 (Forward Selection)

실습1-1

============

# 전진선택법

library(mlbench)

data("BostonHousing")


# 회귀

ss <- lm(medv ~ .,data=BostonHousing)

# 전진선택

ss1 <- step(ss, direction = "forward")


formula(ss1)

 

2. 후진제거법 (Backward Elimination)

다중회귀모형에서 적절한 변수 선택을 위하여 후진제거방법

실습1-2

# 후진제거법

=============

library(mlbench)

data("BostonHousing")


# 회귀

ss <- lm(medv ~ .,data=BostonHousing)

# 후진제거

ss2 <- step(ss, direction = "backward")


formula(ss2)

 

실습2

attitude 데이터 이용

rating(등급)에 영향을 미치는 요인을 회귀를 이용해 식별

종속변수 rating에 영향을 미치는 독립변수: complaints, privileges, learning, raises, critical, advance

data(attitude)

head(attitude)


# 회귀분석

model <- lm(rating~. , data=attitude)


# 수행결과

summary(model)

 

p-value가 <0.05 이므로 통계적으로 의미가 있음.

수정결정계수는 0.6628.

변수중 통계적으로 유의한 것은 complaints, learnings

coefficients 평가 의미

*** : 0 ~ 0.001

** : 0.001 ~ 0.01

* : 0.01 ~ 0.05

. : 0.05 ~ 0.1

 

일반적으로 사용하는 후진제거법 사용

#독립변수 제거
reduced <- step(model, direction="backward")
summary(reduced)

step에서 critical 제거 --> raise 제거 --> privileges 제거 --> advance 제거

 

p-value가 < 0.05 이므로 통계적으로 의미가 있음.

수정결정계수: 0.6864

3. 단계선택법(Stepwise Selection)

실습1-3.

# 단계적 선택방법

library(mlbench)
data("BostonHousing")


# 회귀
ss <- lm(medv ~ .,data=BostonHousing)


# 단계적선택
ss3 <- step(ss, direction = "both")
formula(ss3)

 

13개의 독립변수로 시작 (AIC값: 1,589.64) --> age변수 제거(AIC값: 1587.65) --> indus변수 제거(AIC값: 1,586.75) --> 최종 회귀식

AIC 공식

https://chukycheese.github.io/statistics/aic/

profile

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!