반응형
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 = 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 valueprint(result.tvalues) # 회귀 계수 검정 t 통계량print(result.conf_int()) # 95% 회귀 계수 추정치 신뢰구간print(result.mse_resid) ## MSEprint(result.fittedvalues) ## 적합값 y_hat in-sample prediction (= results.predict(X))print(result.resid) ## 잔차 y-y_hat
'데이터분석 > 회귀분석' 카테고리의 다른 글
다중선형회귀모형과 해석하기 (0) | 2024.09.19 |
---|---|
scikit-learn 패키지를 활용한 단순회귀모형과 중회귀모형 (0) | 2024.08.30 |