-
Python 데이터분석 기초 49 - 단회귀분석(선형회귀분석) OLS summary(요약결과) 보는 방법Python 데이터 분석 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값 출처 : https://igija.tistory.com/256 'Python 데이터 분석' 카테고리의 다른 글
Python 데이터분석 기초 50 - 귀납적 추론, 연역적 추론, 단순선형회귀 예제(mtcars), 키보드로 값 받기 (0) 2022.11.15 단회귀분석(선형회귀분석) OLS 예제(iris dataset으로 모델 생성) (0) 2022.11.15 Python 데이터분석 기초 48 - 회귀분석 문제 1 - linregress 사용 (0) 2022.11.15 Python 데이터분석 기초 47 - 회귀분석(선형회귀분석) 방법[linregress] (0) 2022.11.15 Python 데이터분석 기초 46 - 회귀분석(선형회귀분석) 방법[make_regression, LinearRegression, ols] (1) 2022.11.10