Python 데이터 분석

Python 데이터분석 기초 49 - 단회귀분석(선형회귀분석) OLS summary(요약결과) 보는 방법

코딩탕탕 2022. 11. 15. 13:02

 

 

# 단순선형회귀 모델
# 기본적인 결정론적 선형회귀방법 : 독립변수에 대해 대응하는 종속변수와 유사한 예측값을 출력하는 함수 f(x)(= wx + b)를 찾는 작업이다.

import pandas as pd

df = pd.read_csv('../testdata/drinking_water.csv')
print(df.head(3))
print(df.corr()) # 상관관계 출력

import statsmodels.formula.api as smf

# 적절성이 만족도에 영향을 준다라는 가정하에 모델 생성
model = smf.ols(formula = '만족도 ~ 적절성', data = df).fit() # 종속변수 ~ 독립변수, fit()함수는 학습하는 합수
print(model.summary()) # 생성된 모델의 요약결과를 반환. 능력치 확인
# p-value = Prob (F-statistic): 2.24e-52
# 기울기 = coef : 0.7393
# 표준오차 = std err : 0.038 (모집단에서 표본집단을 추출, 표본평균들의 표준편차)
# 기울기 절편을 구하려면 최소제곱법 이용(패턴이 같으면 최소제곱법은 밀도에 상관없이 동일한 수식을 제공한다.)
# 기울기와 절편은 -> 최소제곱법을 이용해서 구한다. 밀도와 상관없이 패턴이 같다면 같은 추세선이 나타나게 된다.
# 하지만 밀도가 높으면 표준오차가 작다(분산의 설명력이 높다) ->  R-squared (결정계수, 설명력) 이 높다.
# P>|t| : 0.05보다 작으면 독립변수로서 의미가 있다. 
# R-squared : 0.588 (결정계수, 설명력) x가 종속변수 y의 분산을 설명하는 비율(0~1), 종속변수의 전체 분산으로 설명된 분산(종속변수가 독립변수의 영향을 받은 설명력)을 나눈 값
# Adj. R-squared : 0.586 (다중회귀분석에서는 이것을 이용)
# F값이나 T값이 커지면 p-value는 작아진다. (반비례 관계)

# Omnibus는 무의미성에 대해 수치를 표시한 것이다.
# Durbin-Watson는 변수들 간의 자기상관을 표시
# Prob(JB) : 0.000335 , 숫자가 0에 가까울수록 정규분포에 가깝다.
# Skew : -0.328, 왜도 
# Kurtosis : 4.012, 첨도

print('회귀계수 :', model.params)
print('결정계수 :', model.rsquared)
print('유의확률 :', model.pvalues)
print('예측값 :', model.predict()[:5])
print('실제값 :', df.만족도[:5].values)

print()
new_df = pd.DataFrame({'적절성':[4,3,2,1]})
new_pred = model.predict(new_df)
print('예측 결과 :', new_pred.values)




<console>
   친밀도  적절성  만족도
0    3    4    3
1    3    3    2
2    4    4    4
          친밀도       적절성       만족도
친밀도  1.000000  0.499209  0.467145
적절성  0.499209  1.000000  0.766853
만족도  0.467145  0.766853  1.000000
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                    만족도   R-squared:                       0.588
Model:                            OLS   Adj. R-squared:                  0.586
Method:                 Least Squares   F-statistic:                     374.0
Date:                Tue, 15 Nov 2022   Prob (F-statistic):           2.24e-52
Time:                        13:00:37   Log-Likelihood:                -207.44
No. Observations:                 264   AIC:                             418.9
Df Residuals:                     262   BIC:                             426.0
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept      0.7789      0.124      6.273      0.000       0.534       1.023
적절성            0.7393      0.038     19.340      0.000       0.664       0.815
==============================================================================
Omnibus:                       11.674   Durbin-Watson:                   2.185
Prob(Omnibus):                  0.003   Jarque-Bera (JB):               16.003
Skew:                          -0.328   Prob(JB):                     0.000335
Kurtosis:                       4.012   Cond. No.                         13.4
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
회귀계수 : Intercept    0.778858
적절성          0.739276
dtype: float64
결정계수 : 0.5880630629464404
유의확률 : Intercept    1.454388e-09
적절성          2.235345e-52
dtype: float64
예측값 : [3.73596305 2.99668687 3.73596305 2.25741069 2.25741069]
실제값 : [3 2 4 2 2]

예측 결과 : [3.73596305 2.99668687 2.25741069 1.51813451]

1. p-value = Prob (F-statistic): 2.24e-52
2. 기울기 = coef : 0.7393
3. 표준오차 = std err : 0.038 (모집단에서 표본집단을 추출, 표본평균들의 표준편차)
4. 기울기 절편을 구하려면 최소제곱법 이용(패턴이 같으면 최소제곱법은 밀도에 상관없이 동일한 수식을 제공한다.)
    기울기와 절편은 -> 최소제곱법을 이용해서 구한다. 밀도와 상관없이 패턴이 같다면 같은 추세선이 나타나게 된다. 
    하지만 밀도가 높으면 표준오차가 작다(분산의 설명력이 높다) ->  R-squared (결정계수, 설명력) 이 높다.
5. R-squared : 0.588 (결정계수, 설명력) x가 종속변수 y의 분산을 설명하는 비율(0~1), 종속변수의 전체 분산으로 설명된      분종속변수가 독립변수의 영향을 받은 설명력)을 나눈 값
6. Adj. R-squared : 0.586 (다중회귀분석에서는 이것을 이용)
7. F값이나 T값이 커지면 p-value는 작아진다. (반비례 관계)

8. T값은 평균집단 1 - 평균집단2 / 표준오차이다. 기울기가 있으므로 그것을 이용하여 집단 1, 집단 2로 나눌 수 있다. 그것      으로 T값을 구한다.

    T-값은 표본 데이터 변동에 비례한 차이의 크기를 측정한다. 다르게 표현하면 T는 계산된 차이를 표준 오차 단위로 나          타낸 것으로, T의 크기가 클수록 귀무 가설에 대한 증거가 크다 즉, 유의한 차이가 있다는 증거가 더 명확한 것.

 

9. Omnibus는 무의미성에 대해 수치를 표시한 것이다.
10. Durbin-Watson는 변수들 간의 자기상관을 표시
11. Prob(JB) : 0.000335 , 숫자가 0에 가까울수록 정규분포에 가깝다.
12. Skew : -0.328, 왜도 
13. Kurtosis : 4.012, 첨도

14. # P>|t| : 0.05보다 작으면 독립변수로서 의미가 있다. 

 

.0t값

 

 

출처 :&nbsp;https://igija.tistory.com/256