본문 바로가기
IT이야기/R 언어

R언어 - 회귀분석

by 행복찾아3만리 2021. 8. 21.
반응형

R언어를 활용하여 데이터 분석에 가장 기본인 회귀 분석 대해 정리 했습니다.

#회귀분석
library("MASS")
data("Cars93")
car_lm<-lm(Price~EngineSize, data = Cars93)
summary(car_lm)

#2X3형태로 그래프를 배치하기 위해 화면 조정
par(mfrow=c(2,3))

#선형회귀모델 평갈할 수 있는 그래프 생성
plot(car_lm, which=c(1:6))
#Residuals vs Fitted : x축은 회귀모형을 통해 예측된 y값이며, y축은 잔차를 나타낸다.
#                      선형회귀 모형은 오차가 정규분포를 따른다는 정규성을 가정하므로, 
#                      이 그래프에서 오차의 분포는 기울기가 0인 직선의 형태를 가지는 것이 이상적이다.
#Normal Q-Q : 표준화된 잔차의 확률도이다. 정규성 가정을 만족한다면 그래프의 점들은 45도 각도의 직선을 이루는 형태를 띄어야 한다.
#Scale-Location : x축은 회귀모형을 통해 예측된 y값이며, y축은 표준화 잔차를 나타낸다. 
#                 첫 번째 그래프와 마찬가지로 기울기가 0인 직선의 형태가 관측되는 것이 이상적이다.
#Cook's distance : x축은 관측값을 순서대로 나열한 것이며, y축은 해당 지점의 쿡의 거리를 나타낸다.
#                  쿡의 거리는 한 관측치가 회귀모형에 미치는 영향을 나타내는 측도이며, 일반적으로 1이상일 경우 매우 큰 영향을 주는 관측값으로 간주한다.
#Residuals vs Leverage : x축은 레버리지, y축은 표준화 잔차값을 나타낸다. 레버리지란 관측치가 다른 관측치 집단으로 부터 떨어진 정도를 나타내며 설명변수가 얼마나 극단에 치우쳐 있는지를 보여준다.
#                        그래프의 상단과 하단에는 쿡의 거리가 빨간색 선으로 표현되어 있다. 쿡의 거리가 0.5 이상인 빨간 점선의 밖에 있는 점은 예측치를 크게 벗어난 관측치이다.
#Cook's dist vs Leverage : 해당 그래프의 x축은 레버리지, y축은 쿡의 거리를 나타낸다. 레버리지와 쿡의 거리는 비례 관계에 있다.

#회귀분석 예측
set.seed(1)
#5개 랜덤으로 뽑기
idx<-sample(1:nrow(Cars93),5)
#test사용 데이터
test<-Cars93[idx,]

#점추정 : interval을 none으로 지정하여 예측하면 점추정을 수행해 단일값이 산출됨
predict.lm(car_lm, test, interval = 'none')
#회귀계수의 불확실성을 감안한 구간추정
predict.lm(car_lm, test, interval = 'confidence')
#회귀계수의 불확실성과 오차항을 감안한 구간추정
predict.lm(car_lm, test, interval = 'prediction')#오차까지 감안했기 때문에 interval을 confidence로 설정했을때보다 더 넒은 구간으로 예측한다.


#범주형 변수 처리(자동으로됨)
summary(lm(Petal.Length~Petal.Width+Sepal.Length+Sepal.Width+Species,iris)) #Species가 자동으로 범주형으로 바뀜

#변수 선택방법
lm_result<-lm(Price~EngineSize+Horsepower+RPM+Length+Width,Cars93)
step(lm_result, direction = "backward")#"both", "backward", "forward"

 

여기까지 R언어를 활용한 회귀 분석이였습니다.

반응형

댓글