R에서 다중 선형 회귀를 수행하는 방법


이 가이드에서는 다음을 포함하여 R에서 다중 선형 회귀를 수행하는 방법의 예를 보여줍니다.

  • 모델을 피팅하기 전에 데이터 검사
  • 모델 조정
  • 모델 가정 확인
  • 모델 출력 해석
  • 모델 적합도 평가
  • 모델을 사용하여 예측하기

갑시다!

시설

이 예에서는 32가지 자동차의 다양한 속성에 대한 정보가 포함된 내장 R 데이터 세트 mtcars를 사용합니다.

 #view first six lines of mtcars
head(mtcars)

# mpg cyl disp hp drat wt qsec vs am gear carb
#Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
#Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
#Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
#Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
#Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
#Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

이 예에서는 mpg를 응답 변수로 사용하고 disp , hpdrat를 예측 변수로 사용하는 다중 선형 회귀 모델을 구축합니다.

 #create new data frame that contains only the variables we would like to use to
data <- mtcars[, c("mpg", "disp", "hp", "drat")]

#view first six rows of new data frame
head(data)

# mpg disp hp drat
#Mazda RX4 21.0 160 110 3.90
#Mazda RX4 Wag 21.0 160 110 3.90
#Datsun 710 22.8 108 93 3.85
#Hornet 4 Drive 21.4 258 110 3.08
#Hornet Sportabout 18.7 360 175 3.15
#Valiant 18.1 225 105 2.76

데이터 검토

모델을 피팅하기 전에 데이터를 보고 더 잘 이해할 수 있으며 다중 선형 회귀가 이 데이터에 적합한 모델이 될 수 있는지 시각적으로 평가할 수도 있습니다.

특히, 예측 변수가 응답 변수와 선형 연관성을 가지고 있는지 확인해야 하며, 이는 다중 선형 회귀 모델이 적합할 수 있음을 나타냅니다.

이를 위해 pair() 함수를 사용하여 가능한 각 변수 쌍의 산점도를 만들 수 있습니다.

 pairs(data, pch = 18, col = "steelblue")

이 쌍 그래프에서 다음을 볼 수 있습니다.

  • mpg가용성은 강한 음의 선형 상관관계를 갖는 것으로 보입니다.
  • mpghp는 강한 양의 선형 상관관계를 갖는 것으로 보입니다.
  • mpgdrat는 약간의 음의 선형 상관관계를 보이는 것으로 보입니다.

GGally 라이브러리의 ggpairs() 함수를 사용하여 각 변수 쌍에 대한 실제 선형 상관 계수를 포함하는 유사한 플롯을 만들 수도 있습니다.

 #install and load the GGally library
install.packages("GGally")
library(GGally)

#generate the pairs plot
ggpairs(data)

각 예측 변수는 응답 변수 mpg 와 눈에 띄는 선형 상관 관계를 갖는 것으로 나타나므로 선형 회귀 모델을 데이터에 맞춰 보겠습니다.

모델 조정

R에서 다중 선형 회귀 모델을 피팅하기 위한 기본 구문은 다음과 같습니다.

 lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)

데이터를 사용하여 다음 코드를 사용하여 모델을 맞출 수 있습니다.

 model <- lm(mpg ~ disp + hp + drat, data = data)

모델 가정 확인

모델 결과 검증을 진행하기 전에 먼저 모델 가정이 충족되는지 확인해야 합니다. 즉, 다음 사항을 확인해야 합니다.

1. 모델 잔차의 분포는 대략 정규 분포여야 합니다.

간단한 잔차 히스토그램을 만들어 이 가정이 충족되는지 확인할 수 있습니다.

 hist(residuals(model), col = "steelblue")

분포가 약간 오른쪽으로 치우쳐 있기 는 하지만 크게 우려할 만큼 이상하지는 않습니다.

2. 잔차의 분산은 모든 관측치에 대해 일관되어야 합니다.

이러한 선호 조건을 등분산성(homoscedasticity)이라고 합니다. 이 가정을 위반하는 것을 이분산성 (heteroscedasticity) 이라고 합니다.

이 가정이 충족되는지 확인하기 위해 조정/잔존 가치 그래프를 만들 수 있습니다.

 #create fitted value vs residual plot
plot(fitted(model), residuals(model))

#add horizontal line at 0
abline(h = 0, lty = 2)

이상적으로는 잔차가 각 적합치에 동일하게 분산되기를 원합니다. 그래프를 보면 적합치가 클수록 분산이 약간 커지는 경향이 있지만 이러한 추세는 너무 우려할 만큼 극단적이지는 않습니다.

모델 출력 해석

모델 가정이 충분히 충족되는지 확인한 후에는 summary() 함수를 사용하여 모델 출력을 검사할 수 있습니다.

 summary(model)

#Call:
#lm(formula = mpg ~ disp + hp + drat, data = data)
#
#Residuals:
# Min 1Q Median 3Q Max 
#-5.1225 -1.8454 -0.4456 1.1342 6.4958 
#
#Coefficients:
#Estimate Std. Error t value Pr(>|t|)   
#(Intercept) 19.344293 6.370882 3.036 0.00513 **
#disp -0.019232 0.009371 -2.052 0.04960 * 
#hp -0.031229 0.013345 -2.340 0.02663 * 
#drat 2.714975 1.487366 1.825 0.07863 . 
#---
#Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 3.008 on 28 degrees of freedom
#Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 
#F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09

결과에서 우리는 다음을 볼 수 있습니다:

  • 모델의 전체 F-통계량은 32.15 이고 해당 p-값은 3.28e-09 입니다. 이는 전체 모델이 통계적으로 유의하다는 것을 나타냅니다. 즉, 회귀 모델은 전체적으로 유용합니다.
  • disp 는 0.10 유의 수준에서 통계적으로 유의합니다. 특히, 모델 결과의 계수는 마력연료 소비가 일정하게 유지된다는 가정 하에 가용성이 1단위 증가하면 mpg 에서 평균 -0.019단위 감소와 연관되어 있음을 나타냅니다. .
  • hp 는 0.10 유의수준에서 통계적으로 유의합니다. 특히, 모델 결과의 계수는 dispdrat가 일정하게 유지된다고 가정할 때 마력이 1단위 증가하면 mpg 에서 평균 -0.031단위 감소와 연관되어 있음을 나타냅니다.
  • drat 는 0.10 유의 수준에서 통계적으로 유의합니다. 특히, 모델 결과의 계수는 유속과 마력 이 일정하게 유지된다고 가정할 때 휘발유 소비가 1단위 증가하면 평균 2,715단위 mpg 증가와 연관되어 있음을 나타냅니다.

모델 적합도 평가

회귀 모델이 데이터에 얼마나 잘 맞는지 평가하기 위해 몇 가지 측정항목을 살펴볼 수 있습니다.

1. 다중 R-제곱

이는 예측 변수와 반응 변수 간의 선형 관계의 강도를 측정합니다. R 제곱 배수 1은 완벽한 선형 관계를 나타내고, R 제곱 배수 0은 선형 관계가 없음을 나타냅니다.

다중 R은 예측 변수로 설명할 수 있는 반응 변수의 분산 비율인 R 제곱의 제곱근이기도 합니다. 이 예에서 R 제곱 배수는 0.775 입니다. 따라서 R 제곱은 0.775 2 = 0.601 입니다. 이는 mpg 의 분산 중 60.1% 가 모델 예측 변수에 의해 설명될 수 있음을 나타냅니다.

관련 항목: 좋은 R 제곱 값이란 무엇입니까?

2. 잔여 표준 오차

이는 관찰된 값과 회귀선 사이의 평균 거리를 측정합니다. 이 예에서 관찰된 값은 회귀선에서 평균 3.008 단위 만큼 벗어납니다 .

관련된:   회귀의 표준 오류 이해

모델을 사용하여 예측하기

모델 결과를 통해 적합 다중 선형 회귀 방정식은 다음과 같습니다.

모자 mpg = -19.343 – 0.019*disp – 0.031*hp + 2.715*drat

우리는 이 방정식을 사용하여 새로운 관찰 에 대한 mpg가 무엇인지 예측할 수 있습니다. 예를 들어, 다음 속성을 가진 자동차의 예상 mpg 값을 찾을 수 있습니다.

  • 디스플레이 = 220
  • 채널 = 150
  • 초안 = 3
 #define the coefficients from the model output
intercept <- coef(summary(model))["(Intercept)", "Estimate"]
disp <- coef(summary(model))["disp", "Estimate"]
hp <- coef(summary(model))["hp", "Estimate"]
drat <- coef(summary(model))["drat", "Estimate"]

#use the model coefficients to predict the value for mpg
intercept + disp*220 + hp*150 + drat*3

#[1] 18.57373

disp = 220, hp = 150, drat = 3인 자동차의 경우 모델은 자동차의 연비가 18.57373mpg 될 것으로 예측합니다.

이 튜토리얼에서 사용된 전체 R 코드는 여기에서 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 유형의 회귀 모델을 맞추는 방법을 설명합니다.

R에서 2차 회귀를 수행하는 방법
R에서 다항식 회귀를 수행하는 방법
R에서 지수 회귀를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다