파이썬을 이용하여 가장 기본적인 선형회귀분석을 해보도록 한다.

  1. 다음의 표는 어떤 공장의 월별 생산 금액과 전기 사용량을 나타낸다.
  2.  

    생산 금액(억 원) 

    전기 사용량(백만 kWh) 

    1월

    3.52 

    2.48

    2월 

    2.58 

    2.27 

    3월 

    3.31 

    2.47 

    4월 

    4.07 

    2.77 

    5월 

    4.62 

    2.98 

    6월 

    3.98 

    3.05 

    7월 

    4.29 

    3.18 

    8월 

    4.83 

    3.46 

    9월 

    3.71 

    3.03 

    10월 

    4.61 

    3.25 

    11월 

    3.90 

    2.67 

    12월 

    3.20 

     2.53

  3. 월별 생산 금액을 변수 \(x\)로 하여 벡터로 표시하면 \(\mathbf{x}=[x_1, x_2, \ldots, x_{12}]\), 이 때의 전기 사용량을 \(y\)로 하여 벡터로 나타내면 \(\mathbf{y}=[y_1, y_2, \ldots, y_{12}]\)가 되며, 위의 데이터는 다음과 같이 \(x\) \(y\)로 구성된 쌍으로 표현할 수 있다. $$(\mathbf{x},\mathbf{y})=\{(3.52,2.48), (2.58,2.27), \ldots, (3.20, 2.53)\}$$
  4. 이 때 두 변수간에 어떤 상관관계가 있는지 알아보자. 이 때 두 변수 사이의 상관관계가 존재한다면 통계적으로 모델을 작성할 수 있으며, 1차원의 선형모델로 표현할 수 있다면 다음과 같은 수식형태로 쓸 수 있다. $$y_i = \beta_0 + \beta_1\cdot x_i + \epsilon_i$$
  5. 위의 식에서 \(y_i\)는 종속변수(dependent variable), \(x_i\)를 독립변수(independent variable)라고한다. \(\beta_0\)와 \(\beta_1\)의 값은 데이터 \(\mathbf{x}\)와 \(\mathbf{y}\)벡터로 부터 구할 수 있는데, 잘 알고 있다시피 \(\beta_0\)는 \(Y\)축 절편(intercept), \(\beta_1\)는 기울기(slope)라고 한다. 여기서 \(\epsilon_i\)는 오차항으로 실제 데이터와 선형회귀분석의 결과로 나온 1차함수 값과의 오차를 의미한다.
  6. 파이썬에서는 scipy 모듈의 linregress() 함수를 사용하면 쉽게 선형회귀분석 결과값을 얻을 수 있다.


위의 소스코드를 실행하면 다음과 같다. 매출이 4억 원에 근접했던 달은 4월(4.07억 원)과 6월(3.90억 원)로 전기 사용량은 각각 2.77kWh와 3.05kWh였다. 선형회귀분석의 결과값은 2.902kWh로 실제 4억 원의 전기 사용량은 2.77~3.05kWh 범위 안에 있다. 회귀분석을 통한 예측값은 실제 데이터와 오차가 발생할 수 밖에 없다. 이 오차를 줄이기 위해서 정확한 회귀모델을 구해야만 하는 것이다. 



'Predictive Analytics' 카테고리의 다른 글

단순선형회귀  (0) 2019.09.19
대표적인 예측 분석 사례  (0) 2018.04.20
Predictive Analytics  (0) 2018.04.16
Python 준비  (0) 2017.03.31
Linear Regression Analysis with Python #2  (0) 2017.03.31

+ Recent posts