본문 바로가기
Python notes/Statistical Analysis

파이썬) 단순선형회귀 분석 결과 해석하기 (+statsmodel OLS Regression Results)

by 성실한 나무 2021. 6. 23.

#1. 단순선형회귀 분석을 위한 데이터 준비

단순선형회귀는 독립변수 1개와 그에 대응하는 종속변수 1개를 가진 데이터프레임 df를 정의하여 분석을 한다.

데이터 프레임을 정의한 후 데이터 프레임 객체인 df에 df.head(10) 함수를 적용하여, 데이터가 잘 정의되었는지 앞 10행의 데이터를 아래와 같이 확인해 본다.

df.head()

 

 

 

 

#2. 단순선형회귀 분석 진행

statsmodels 패키지에 있는 ols 함수를 사용하면 간편하게 단순선형회귀 분석을 진행할 수 있다.

먼저 (Mac의 경우) 터미널에서 pip3 install statsmodels를 사용하여 statsmodels패키지를 설치하고,

from statsmodels.formula.api import ols 를 실행함으로써 ols 함수를 불러온다.

그리고 ols함수의 파라미터들을 아래와 같은 순서로 입력하여 코드를 완성시키면 된다.

ols('종속변수명 ~ 독립변수명', data=데이터프레임명).fit().summary()

반응형

여기서 따옴표를 찍을 때 종속변수명과 독립변수명을 한번에 묶어주는 것을 주의한다.

그러면 하기와 같이 예쁘게 정리된 OLS Regression Results가 출력되는 것을 볼 수 있다.

OLS Regeression Results

 

 

 

 

#3. 분석 결과 해석

위 회귀분석 결과에서 나오는 주요 결과물들의 설명을 아래와 같이 정리해 보았다.

 

   - Dep. Variable: Dependent variable, 즉 종속변수를 의미한다.

   - Model: 모델링 방법을 뜻하고, OLS는  Ordinary Least Squares의 약자이다.

      ** 참고로 OLS란, 최소제곱법, 또는 최소자승법, 최소제곱근사법, 최소자승근사법(method of least squares, least squares approximation)이라고도 하며, 어떤 계의 해방정식을 근사적으로 구하는 방법으로서 근사적으로 구하려는 해와 실제 해의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법이다. [출처: 위키백과]

   - No. Observations: Number of observations, 관찰표본 수, 즉 총 표본 수를 뜻한다. 

   - Df Residuals: DF는 Degree of Freedom으로 자유도를 뜻하는데, DF Residuals는 전체 표본 수에서 측정되는 변수들(종속변수 및 독립변수)의 개수를 빼서 구한다. 이번 회귀분석에서 DF Residuals를 구하자면,  전체 표본 수 50개 - 종속변수1개 - 독립변수1개 = 48로 구할 수 있다.

   - Df Model: 독립변수의 개수이다.

   - R squared: R의 제곱이라는 뜻이고 결정계수를 의미한다. 전체 데이터 중 해당 회귀모델이 설명할 수 있는 데이터의 비율, 회귀식의 설명력을 나타낸다. SSTr/SST이나 상관계수 R을 제곱해서 구할 수 있다. (상세 내용은 본 포스팅 #4.에서 추가설명 한다)

   - F-statistics: F통계량을 뜻한다. F통계량은 MSR/MSE로 구할 수 있다. (상세 내용은 본 포스팅 #5. 에서 추가설명 한다)

   - Prob: F통계량에 해당하는 P-value를 의미한다. P는 Probability의 첫글자이다.

  [회귀계수]: 다음 두 값은 해당 모델의 회귀계수들이다.

   - Intercept coef: Intercept coefficient는 회귀식의 절편 값을 의미한다.

   - speed coef: 독립변수 coefficient는 독립변수 "speed"의 회귀계수를 의미하며, 회귀식에서 기울기를 의미한다. 

     --> 위의 회귀계수들을 활용해 다음과 같이 회귀식을 수기로 작성할 수 있다.

     --> y = 3.9324X -17.5791

      

 

 

 

#4. 결정계수; R squared 값 직접 구해서 비교해보기

   - SSE = Sum of Squares for Errors (or Residuals) 잔차의 제곱합

      SSTr = Sum of Squares for Regression (or Treated) 회귀(예측값) 제곱합

      SST = Sum of Squares Total (SSE + SSTr)

  - 결정계수 = SSTr / SST

SSE, SSTr, SST

 

   - SSE, SSTr, SST를 통해 수기로 계산한 결정계수는, OLS Regression results로 구한 결정계수 0.651과 동일한 값임을 확인하였다.

결정계수 SSTr/SST

 

 

 

 

#5. F통계량 직접 구해서 비교해보기

   - SSE = Sum of Squares for Errors (or Residuals) 잔차의 제곱합

      SSTr = Sum of Squares for Regression (or Treated) 회귀(예측값) 제곱합

      SST = Sum of Squares Total (SSE + SSTr)

  - MSR = Mean of Sauqred Regression = SSTr / df of regression (DF model, 독립변수의 개수)

  - MSE = Mean of Squared Error = SSE / df of error (DF residuals, 독립/종속변수의 개수를 제외한 총 표본수)

  - F통계량 = SSTr의 평균(MSR) / SSE의 평균(MSE)

F통계량, MSR/MSE

   - F통계량도 마찬가지로 OLS Regression results에 나온 값 89.57과 동일한 결과를 확인할 수 있었다.

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글