데이터분석/회귀분석

회귀분석의 원리와 단순선형회귀모형

상선약수64 2024. 8. 26. 16:48
반응형

1. 회귀분석(regression)은 데이터 간의 선형 인과관계를 분석하고 예측하는 데 사용되는 기법입니다. 설명변수와 반응변수의 관계를 구체적인 함수로 나타내고, 설명변수의 값으로부터 반응변수의 값을 예측하는 일련의 과정입니다.

상관관계와 회귀식

 

  • 회귀분석과 관련된 용어
    • 반응변수(response variable) : 주된 관심사항으로 예측하려는 연속형 변수
    • 설명변수(explanatory variable ) : 반응변수를 예측하는데 사용되는 변수
    • 회귀모형(regression model) : 설명변수와 반응변수의 관계를 나타내는 직성식
    • 회귀계수(regression coefficient) : 설명변수와 반응변수의 관계정도를 나타내는 수치로서 회귀모형의 절편 및 기울기

 

2. 단순회귀모형

  • 모형 

 

  • 단순회귀모형의 간단한 예를 살펴보면, 광고료와 매출액입니다. 이때 반응변수와 설명변수를 무엇으로 둘지 고민해 보세요. 반응변수는 매출액, 설명변수는 광고료를 두고 추정 회귀식을 구하시면 됩니다.
광고료 매출액
30 120
20 60
50 140
40 100
10 70

 

  • 회귀계수 추정법은 크게 최소제곱법(least squares method : LS method), 최대가능도법(maximum likelihood method : ML method), 적률추정법(method of mements : MM)이 있습니다. 일반적으로 최소제곱법을 사용하며, ML과 MM은 기본 내용의 범위를 벗어나므로 제외하겠습니다.
    • 최소제곱법(Least Squares Method : LS method)는 모형에서 오차의 제곱합을 최소로 하는 회귀계수의 값을 구하는 방법입니다.

  • 추정회귀식과 회귀계수에 대한 해석

       회귀계수 베타1은 설명변수 x에 대한 기울기를 나타내며, 이는 x가 1 단위 증가할 때 y가 변화하는 양을 나타냅니다.

 

 

  • 회귀모형 검토 
    • 분산분석

회귀모형의 분산분석

           - SST : 총제곱합(total sum of squares)

           - SSR : 회귀제곱합(regression sum of squares)은 회귀식에 의해 설명되는 변동량 또는 편차제곱합입니다.

           - SSE : 오차제곱합(error sum of squares) 

         

  •     회귀계수의 유의성 검정

            회귀계수의 유의성 검정은 t값으로 진행됩니다.

 

  •     적합도

           결정계수는 총편차의 제곱합에서 회귀제곱합이 차지하는 비율로 회귀직선의 기여율입니다. 결정계수의 값이 1에 가까울수록 산점도의 점들이 직선 주위에 밀집하여 오차의 추정치는 적어집니다.

3. 모형의 가정

  • 잔차에 대한 가정

 

  • 잔차의 독립성 검정은 Durbin-Watson(DW)값을 이용하는데 2에 가까우면 독립적이라 볼 수 있습니다.

DW의 공식

    - DW = 0 : 양의 자기상관

    - DW = 2 : 독립

    - DW = 4 : 음의 자기 상관

 

 

4. 단순선형회귀 모형 실습

(1) 데이터 입력 

  • 데이터는 광고비와 매출액에 대한 자료입니다. 설명변수는 광고비이고 반응변수는 매출액에 대한 단순회귀모형에 대한 실습내용입니다. x와 y는 리스트 자료구조로 입력하였습니다.
x = [30, 20, 50, 40, 10]  #광고비
y = [120, 60, 140, 100, 70] #매출액

 

(2) 산점도 작성

  • 두 변수 간의 관련성을 확인하기 위한 그림입니다. matplotlib.pyplot 라이브러리를 import 하여 산점도를 작성하였고, 그 결과는 광고비와 매출액에 대한 산점도 그림과 같고, 광고비가 증가하면 매출액이 증가하는 관계를 확인할 수 있습니다.
import matplotlib.pyplot as plt
plt.scatter(x, y)
plt.xlabel('advertising cost')
plt.ylabel('sales')
plt.show()

광고비와 매출액에 대한 산점도

 

(3) 단순선형회귀모형 결과

  • 회귀모형을 추정하고 검정하기 위해서 statsmodels.api 라이브러리를 사용합니다. 그 외 최소제곱법(LS) 외 sklearn.linear_model 또는 tensorflow를 이용할 수 있습니다. 여기서는 statsmodels 라이브러리를 사용하였고, summary() 메서드를 사용하면 회귀모형에 대한 전반적인 결과를 확인할 수 있습니다.
import statsmodels.api as sm
x = sm.add_constant(x)
model = sm.OLS(y, x)
result = model.fit()
print(result.summary())

 

회귀모형의 결과

 

(4) 추정된 회귀식과 검정

  • (3)의 회귀모형의 결과는 그림과 같고, 주요한 내용은 붉은색으로 표시해 두었습니다. 회귀식의 적합성은 결정계수로 확인할 수 있고 여기서 결정계수(R-squared)는 0.723이고 검정을 위해 F-statistic(7.839), 유의확률 0.0679입니다. 일반적으로 유의 수준은 0.05로 많이 보기 때문에 유의수준 0.05보다 작으면 회귀모형이 유의하다고 볼 수 있습니다. 여기서는 유의확률이 0.0679이므로 회귀모형이 유의하다고 볼 수 없지만 유의 수준이 0.1로 두었다면 회귀모형이 유의합니다. 
  • 추정된 회귀식은 매출액 = 44.0 + 1.8 광고비이고, 회귀계수를 검정하기 위해서는 t값과 유의확률을 보시면 됩니다.
  • 그리고 오차에 대한 독립성은 DW(Durbin-Watson) 2.823입니다.

(5) 예측

  • 회귀모형을 이용하여 미래를 예측할 수 있습니다. 광고비 35, 45에 대한 매출액 예측결과입니다. 35의 광고비를 투자하였을 경우 매출액은 107이고, 45를 투자하였다면 125의 매출액을 발생할 것으로 예상합니다.
x_new = [35, 45]
x_new = sm.add_constant(x_new)
y_new = result.predict(x_new)
print(y_new)

 

예측결과

 

(6) 산점도와 회귀식

  • 산점도와 추정된 회귀식을 그림으로 표시하였습니다. 
# 데이터 x는 광고비, y는 매출액, 광고비와 매출액에 대한 회귀모형 
x = [30, 20, 50, 40, 10]
y = [120, 60, 140, 100, 70]
import matplotlib.pyplot as plt
import statsmodels.api as sm
plt.scatter(x, y)
x = sm.add_constant(x)
model = sm.OLS(y, x)
result = model.fit()
plt.plot(x, result.predict(x), color='red')
plt.xlabel('advertising cost')
plt.ylabel('sales')
plt.title('y = {}*x + {}'.format(result.params[1], result.params[0]))
plt.show()

 

 

  • statsmodels모델에서는 많은 통계치를 제고하고 있고, 이중 주요한 내용을 출력한 것 입니다. 
    print(result.params) # 회귀 계수
    print(result.rsquared) # 결정 계수
    print(result.rsquared_adj) # 수정된 결정 계수
    print(result.pvalues) # 회귀 계수 검정 p value
    print(result.tvalues) # 회귀 계수 검정 t 통계량
    print(result.conf_int()) # 95% 회귀 계수 추정치 신뢰구간
    print(result.mse_resid) ## MSE
    print(result.fittedvalues) ## 적합값 y_hat in-sample prediction (= results.predict(X))
    print(result.resid) ## 잔차 y-y_hat