R에서 ols 회귀를 수행하는 방법(예제 포함)
OLS(Ordinary Least Square) 회귀는 하나 이상의 예측 변수와 반응 변수 간의 관계를 가장 잘 설명하는 선을 찾을 수 있는 방법입니다.
이 방법을 사용하면 다음 방정식을 찾을 수 있습니다.
ŷ = b0 + b1x
금:
- ŷ : 예상된 반응값
- b 0 : 회귀선의 원점
- b 1 : 회귀선의 기울기
이 방정식은 예측변수와 반응변수 사이의 관계를 이해하는 데 도움이 될 수 있으며, 예측변수의 값이 주어졌을 때 반응변수의 값을 예측하는 데 사용될 수 있습니다.
다음 단계별 예제에서는 R에서 OLS 회귀를 수행하는 방법을 보여줍니다.
1단계: 데이터 생성
이 예에서는 학생 15명에 대해 다음 두 변수가 포함된 데이터세트를 만듭니다.
- 총 학습 시간
- 시험 결과
시간을 예측 변수로 사용하고 시험 점수를 응답 변수로 사용하여 OLS 회귀를 수행합니다.
다음 코드는 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
2단계: 데이터 시각화
OLS 회귀를 수행하기 전에 시간과 시험 점수 간의 관계를 시각화하는 산점도를 만들어 보겠습니다.
library (ggplot2) #create scatterplot ggplot(df, aes(x=hours, y=score)) + geom_point(size= 2 )
선형 회귀 분석의 네 가지 가정 중 하나는 예측 변수와 반응 변수 사이에 선형 관계가 있다는 것입니다.
그래프를 보면 관계가 선형으로 나타나는 것을 볼 수 있습니다. 시간이 증가함에 따라 점수도 선형적으로 증가하는 경향이 있습니다.
그런 다음 상자 그림을 만들어 시험 결과 분포를 시각화하고 이상값을 확인할 수 있습니다.
참고 : R은 관측치가 세 번째 사분위수 위 사분위수 범위의 1.5배이거나 첫 번째 사분위수 아래 사분위수 범위의 1.5배인 경우 관측치를 이상값으로 정의합니다.
관측치가 이상치인 경우 상자 그림에 작은 원이 나타납니다.
library (ggplot2) #create scatterplot ggplot(df, aes(y=score)) + geom_boxplot()
상자 그림에는 작은 원이 없습니다. 이는 데이터세트에 이상값이 없음을 의미합니다.
3단계: OLS 회귀 수행
다음으로 R의 lm() 함수를 사용하여 시간을 예측 변수로 사용하고 점수를 응답 변수로 사용하여 OLS 회귀를 수행할 수 있습니다.
#fit simple linear regression model model <- lm(score~hours, data=df) #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)
잔차는 0 주위에 무작위로 흩어져 있는 것처럼 보이고 눈에 띄는 패턴을 나타내지 않으므로 이 가정이 충족됩니다.
정규성 가정은 회귀 모델의 잔차가 대략적으로 정규 분포를 따른다는 것입니다.
이 가정이 충족되는지 확인하기 위해 QQ 플롯을 만들 수 있습니다. 플롯 포인트가 45도 각도를 이루는 대략적인 직선을 따라 놓여 있으면 데이터는 정규 분포를 따릅니다.
#create QQ plot for residuals qqnorm(res) #add a straight diagonal line to the plot qqline(res)
잔차는 45도 선에서 약간 벗어나 있지만 심각한 우려를 불러일으킬 정도는 아닙니다. 정규성 가정이 충족된다고 가정할 수 있다.
잔차는 정규분포이고 등분산적이므로 OLS 회귀모형의 가정이 충족됨을 확인했습니다.
따라서 우리 모델의 출력은 신뢰할 수 있습니다.
참고 : 하나 이상의 가정이 충족되지 않으면 데이터 변환을 시도할 수 있습니다.
추가 리소스
다음 튜토리얼에서는 R에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.
R에서 다중 선형 회귀를 수행하는 방법
R에서 지수 회귀를 수행하는 방법
R에서 가중 최소 제곱 회귀를 수행하는 방법