R에서 단순 선형 회귀를 수행하는 방법(단계별)


단순 선형 회귀는 단일 설명 변수 와 단일 응답 변수 간의 관계를 이해하는 데 사용할 수 있는 기술입니다.

간단히 말해서, 이 기술은 데이터에 가장 잘 맞는 선을 찾고 다음 형식을 취합니다.

ŷ = b0 + b1x

금:

  • ŷ : 예상된 반응값
  • b 0 : 회귀선의 원점
  • b 1 : 회귀선의 기울기

이 방정식은 설명 변수와 응답 변수 사이의 관계를 이해하는 데 도움이 될 수 있으며 (통계적으로 유의하다고 가정하면) 설명 변수의 값이 주어진 경우 응답 변수의 값을 예측하는 데 사용할 수 있습니다.

이 튜토리얼에서는 R에서 간단한 선형 회귀를 수행하는 방법에 대한 단계별 설명을 제공합니다.

1단계: 데이터 로드

이 예에서는 15명의 학생에 대해 다음 두 가지 변수가 포함된 가짜 데이터 세트를 만듭니다.

  • 특정 시험을 위해 공부한 총 시간
  • 시험 결과

우리는 시간을 설명 변수로, 검사 결과를 반응 변수로 사용하여 단순 선형 회귀 모델을 맞추려고 시도할 것입니다.

다음 코드는 R에서 이 가짜 데이터 세트를 생성하는 방법을 보여줍니다.

 #create dataset
df <- data.frame(hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14),
                 score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89))

#view first six rows of dataset
head(df)

  hours score
1 1 64
2 2 66
3 4 76
4 5 73
5 5 74
6 6 81

#attach dataset to make it more convenient to work with
attach(df)

2단계: 데이터 시각화

단순 선형 회귀 모델을 피팅하기 전에 먼저 데이터를 시각화하여 이해해야 합니다.

첫째, 시간점수 사이의 관계가 대략 선형인지 확인하려고 합니다. 이는 단순 선형 회귀의 대규모 기본 가정 이기 때문입니다. 두 변수 간의 관계를 시각화하기 위해 간단한 산점도를 만들 수 있습니다.

 scatter.smooth(hours, score, main=' Hours studied vs. Exam Score ')

R의 단순 선형 회귀에 대한 산점도

그래프를 보면 관계가 선형으로 나타나는 것을 볼 수 있습니다. 시간이 증가함에 따라 점수 도 선형적으로 증가하는 경향이 있습니다.

그런 다음 상자 그림을 만들어 시험 결과 분포를 시각화하고 이상값을 확인할 수 있습니다. 기본적으로 R은 관측치가 세 번째 사분위수(Q3) 위 사분위수 범위의 1.5배이거나 첫 번째 사분위수(Q1) 아래 사분위수 범위의 1.5배인 경우 관측치를 이상값으로 정의합니다.

관측치가 이상치인 경우 상자 그림에 작은 원이 나타납니다.

 boxplot(score) 

R의 단순 선형 회귀에 대한 상자 그림

상자 그림에는 작은 원이 없습니다. 이는 데이터세트에 이상값이 없음을 의미합니다.

3단계: 단순 선형 회귀 수행

변수 간의 관계가 선형이고 이상값이 없음을 확인한 후에는 시간을 설명 변수로 사용하고 점수를 응답 변수로 사용하여 간단한 선형 회귀 모델을 적합화할 수 있습니다.

 #fit simple linear regression model
model <- lm(score~hours)

#view model summary
summary(model)

Call:
lm(formula = score ~ hours)

Residuals:
   Min 1Q Median 3Q Max 
-5,140 -3,219 -1,193 2,816 5,772 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 65,334 2,106 31,023 1.41e-13 ***
hours 1.982 0.248 7.995 2.25e-06 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.641 on 13 degrees of freedom
Multiple R-squared: 0.831, Adjusted R-squared: 0.818 
F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06

모델 요약에서 적합 회귀 방정식은 다음과 같습니다.

점수 = 65.334 + 1.982*(시간)

이는 공부한 시간이 추가될 때마다 평균 시험 점수가 1,982 점 증가한다는 것을 의미합니다. 그리고 원래 값 65,334 는 0시간 공부하는 학생의 평균 예상 시험 점수를 알려줍니다.

또한 이 방정식을 사용하여 학생이 공부하는 시간을 기준으로 예상 시험 점수를 찾을 수도 있습니다. 예를 들어, 10시간 동안 공부한 학생은 시험 점수 85.15 를 달성해야 합니다.

점수 = 65.334 + 1.982*(10) = 85.15

모델 요약의 나머지 부분을 해석하는 방법은 다음과 같습니다.

  • Pr(>|t|): 모델 계수와 연관된 p-값입니다. 시간 에 대한 p-값(2.25e-06)이 0.05보다 훨씬 작으므로 시간점수 사이에 통계적으로 유의미한 연관성이 있다고 말할 수 있습니다.
  • 다중 R-제곱: 이 숫자는 시험 점수의 변동 비율이 공부한 시간으로 설명될 수 있음을 나타냅니다. 일반적으로 회귀 모델의 R-제곱 값이 클수록 설명 변수가 응답 변수의 값을 더 잘 예측할 수 있습니다. 이 경우 점수 변동의 83.1%가 공부 시간으로 설명될 수 있습니다.
  • 잔여 표준 오차: 관찰된 값과 회귀선 사이의 평균 거리입니다. 이 값이 낮을수록 회귀선이 관찰된 데이터와 더 많이 일치할 수 있습니다. 이 경우 시험에서 관찰된 평균 점수는 회귀선에서 예측한 점수와 3,641 점만큼 벗어납니다.
  • F-통계량 및 p-값: F-통계량( 63.91 )과 해당 p-값( 2.253e-06 )은 회귀 모델의 전반적인 중요성, 즉 모델의 설명 변수가 변동을 설명하는 데 유용한지 여부를 알려줍니다. . 응답 변수에서. 이 예의 p-값은 0.05 미만이므로 모델이 통계적으로 유의미하며 시간은 점수 변화를 설명하는 데 유용한 것으로 간주됩니다.

4단계: 잔차 도표 생성

단순 선형 회귀 모델을 데이터에 맞춘 후 마지막 단계는 잔차 플롯을 만드는 것입니다.

선형 회귀 분석의 주요 가정 중 하나는 회귀 모델의 잔차가 대략 정규 분포를 따르고 설명 변수의 각 수준에서 등분산적 이라는 것입니다. 이러한 가정이 충족되지 않으면 회귀 모델의 결과가 오해의 소지가 있거나 신뢰할 수 없을 수 있습니다.

이러한 가정이 충족되는지 확인하기 위해 다음과 같은 잔차 그림을 만들 수 있습니다.

잔차 대 적합치 도표: 이 도표는 등분산성을 확인하는 데 유용합니다. x축은 적합치를 표시하고 y축은 잔차를 표시합니다. 잔차가 0 값을 중심으로 그래프 전체에 무작위로 균일하게 분포되어 있는 것처럼 보이는 한 등분산성이 위반되지 않는다고 가정할 수 있습니다.

 #define residuals
res <- resid(model)

#produce residual vs. fitted plot
plot(fitted(model), res)

#add a horizontal line at 0 
abline(0,0)

단순 선형 회귀를 위한 R의 잔차 플롯

잔차는 0 주위에 무작위로 흩어져 있는 것처럼 보이고 눈에 띄는 패턴을 나타내지 않으므로 이 가정이 충족됩니다.

QQ 플롯: 이 플롯은 잔차가 정규 분포를 따르는지 여부를 결정하는 데 유용합니다. 플롯의 데이터 값이 대략 45도 각도의 직선을 따르는 경우 데이터는 정규 분포를 따릅니다.

 #create QQ plot for residuals
qqnorm(res)

#add a straight diagonal line to the plot
qqline(res) 

R의 일반 QQ 플롯

잔차는 45도 선에서 약간 벗어나 있지만 심각한 우려를 불러일으킬 정도는 아닙니다. 정규성 가정이 충족된다고 가정할 수 있다.

잔차는 정규분포 및 등분산성을 나타내므로 단순선형회귀모형의 가정이 만족됨을 확인하였다. 따라서 우리 모델의 출력은 신뢰할 수 있습니다.

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

의견을 추가하다

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