OLS Regression Results

kangjuju·2023년 5월 10일
0

회귀분석

목록 보기
3/11
  • ols 라이브러리에서 OLS Regression Results 보고서를 분석해보자.

  • 독립변수(x,feature) : 적절성,

  • 종속변수(y,label) : 만족도

import pandas as pd
df = pd.read_csv('../testdata/drinking_water.csv')
print(df.head())
#상관관계분석: 적절성과 만족도는 관계가 깊다
print(df.corr()) 
import statsmodels.formula.api as smf
#종속변수 ~ 독립변수
model = smf.ols(formula='만족도 ~ 적절성',data=df).fit()
print(model.summary())

첫번째 표

분석결과설명
no.observations"Number of observations"으로 총 표본 수
DF Residuals잔차의 자유도, 전체 표본 수에서 측정되는 변수들(종속변수 및 독립변수)의 개수를 뺀것. 즉, DF Residuals = 표본수 - 종속변수 개수 - 독립변수 개수
DF Model독립변수의 개수
R-squared결정계수, 전체 데이터 중 해당 회귀모델이 설명할 수 있는 데이터의 비율, 회귀식의 설명력을 나타낸다. 성능을 나타냄(1에 가까울수록 성능이 좋음) 참고 : https://ysyblog.tistory.com/168
Adj. R-squared모델에 도움이 되는 데이터에 따라 조정된 결정계수
F-statisticsF 통계량으로 도출된 회귀식이 적절한지 볼 수 있음, 0과 가까울 수록 적절한 것 (T값을 거듭제곱)
Prob(F-statistics)[pvalue] : F를 이용하여 산출되는 수치로, 회귀식이 유의미한지 판단. (0.05이하일 경우 변수 끼리 매우 관련있다고 판단) 참고 : https://ysyblog.tistory.com/174
AIC표본의 개수와 모델의 복잡성을 기반으로 모델을 평가하며, 수치가 낮을 수록 좋음
BICAIC와 유사하나 패널티를 부여하여 AIC보다 모델 평가 성능이 더 좋으며, 수치가 낮을 수록 좋음
  • F-statistics 과 Prob은 반비례한다.
  • R-squared
    • 독립변수가 1개일땐 이를 사용하고,
      2개 이상일 경우엔 수정된 R-squared를 사용한다.
    • 상관계수 R을 제곱하면 이 값이 산출된다. 또는 (1-SSR/SST)
    • 독립변수가 종속변수의 분산을 얼마나 설명하는지에 대한 설명력(58%)

두번째 표

분석결과설명
coef(Coefficient)회귀계수. [0.025 0.975] 95% 신뢰구간 안에 계수가 존재한다는 것을 확인할 수 있다.
std err계수 추정치의 표준오차(standard error), 값이 작을 수록 좋음
tt-test, 각 변수에 대한 t value(표준오차/기울기). 독립변수와 종속변수 사이의 상관관계, 값이 클 수록 상관도가 큼
p-value(P > t)모델이 유의한지에 대한 value , 독립변수들의 유의 확률, 0.05보다 작아야 유의미함. 위 모델의 변수들의 p-value를 살펴보면 INDUS, AGE가 0.05보다 크므로 통계적으로 유의하지 않다. 참고 : https://ysyblog.tistory.com/165
[0.025 0.975]회귀 계수의 신뢰구간 95%

세번째 표

분석결과설명
Omnibus디아고스티노 검정(D'Angostino's Test), 비대칭도와 첨도를 결합한 정규성 테스트이며 값이 클 수록 정규분포를 따름.
Prob(Omnibus)디아고스티노 검정이 유의한지 판단 (0.05이하일 경우 유의하다고 판단)
Skew(왜도)평균 주위의 잔차들의 대칭하는지를 보는 것이며, 0에 가까울수록 대칭이다. (음수일수록 오른쪽, 양수일수록 왼쪽으로 치우쳐짐)
Kurtosis(첨도)잔차들의 분포 모양이며, 3에 가까울 수록 정규분포이다. (음수이면 평평한 형태, 양수는 뾰족한 형태)
Durbin - Watson더빈왓슨 정규성 검정이며, 잔차의 독립성 여부를 판단. (1.5 ~ 2.5 사이일때 잔차는 독립적이라고 판단하며 0이나 4에 가까울 수록 잔차들은 자기상관을 가지고 있다고 판단) 참고 : https://ysyblog.tistory.com/120
Jarque - Bera (JB)자크베라 정규성 검정, 값이 클 수록 정규분포의 데이터를 사용했다는 것.
Cond. No다중공선성 검정. 독립변수간 상관관계가 있는지 보는 것이며, 10이상이면 다중공선성이 있다고 판단.참고 : https://ysyblog.tistory.com/122
Prob(JB)오차의 정규성

예제 참고

  • 시각화,예측

print('회귀계수 : ',model.params) #0.778
print('결정계수 : ',model.rsquared) #0.5880
print('pvalue: ',model.pvalues) #1.45e-09

#결과 예측
print('예측값 : ',model.predict()[:5])
print('실제값 : ',df.만족도[:5].values)

#시각화
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font',family='malgun gothic')
plt.scatter(df.적절성,df.만족도)
slope,intercept = np.polyfit(df.적절성,df.만족도,1)
plt.plot(df.적절성,df.적절성 * slope + intercept)
plt.show()

# 새로운 데이터 결과 예측
new_df = pd.DataFrame({'적절성':[4,3,1,0,6]})
new_pred = model.predict(new_df)
print(new_pred)

0개의 댓글