-
단순선형회귀, 다중선형회귀 예제Python 데이터 분석 2022. 11. 15. 16:55
# 회귀분석 문제 2) # testdata에 저장된 student.csv 파일을 이용하여 세 과목 점수에 대한 회귀분석 모델을 만든다. # 이 회귀문제 모델을 이용하여 아래의 문제를 해결하시오. 수학점수를 종속변수로 하자. # - 국어 점수를 입력하면 수학 점수 예측 # - 국어, 영어 점수를 입력하면 수학 점수 예측 import numpy as np import pandas as pd import matplotlib.pyplot as plt import statsmodels.api plt.rc('font', family = 'malgun gothic') import seaborn as sns import statsmodels.formula.api as smf df = pd.read_csv('../testdata/student.csv') print(df.head(3)) print(df.corr()) # 상관관계 출력 print(np.corrcoef(df.국어,df.수학)[0,1]) # 0.7662626557853176, 양의 상관관계 result1 = smf.ols(formula = '수학 ~ 국어', data = df).fit() # 종속변수 ~ 독립변수, fit()함수는 학습하는 합수 print(result1.summary()) # p-value = 8.16e-05 < 0.05 이므로 유의하다. new_kuk = float(input('국어점수 : ')) new_df = pd.DataFrame({'국어':[new_kuk]}) new_pred = result1.predict(new_df) print('예상 수학 점수 :', new_pred.values) # 다중회귀분석 result2 = smf.ols(formula = '수학 ~ 국어 + 영어', data = df).fit() # 종속변수 ~ 독립변수, fit()함수는 학습하는 합수 print(result2.summary()) # p-value = 0.000105 < 0.05 이므로 유의하다. new_kuk1 = float(input('국어점수 : ')) new_yeon1 = float(input('영어점수 : ')) new_df2 = pd.DataFrame({'국어':[new_kuk1],'영어':[new_yeon1]}) new_pred2 = result2.predict(new_df2) print('예상 수학 점수 :', new_pred2.values) <console> 이름 국어 영어 수학 0 박치기 90 85 55 1 홍길동 70 65 80 2 김치국 92 95 76 국어 영어 수학 국어 1.000000 0.915188 0.766263 영어 0.915188 1.000000 0.809668 수학 0.766263 0.809668 1.000000 0.7662626557853176 OLS Regression Results ============================================================================== Dep. Variable: 수학 R-squared: 0.587 Model: OLS Adj. R-squared: 0.564 Method: Least Squares F-statistic: 25.60 Date: Tue, 15 Nov 2022 Prob (F-statistic): 8.16e-05 Time: 16:22:16 Log-Likelihood: -76.543 No. Observations: 20 AIC: 157.1 Df Residuals: 18 BIC: 159.1 Df Model: 1 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ Intercept 32.1069 8.628 3.721 0.002 13.981 50.233 국어 0.5705 0.113 5.060 0.000 0.334 0.807 ============================================================================== Omnibus: 1.833 Durbin-Watson: 2.366 Prob(Omnibus): 0.400 Jarque-Bera (JB): 0.718 Skew: -0.438 Prob(JB): 0.698 Kurtosis: 3.310 Cond. No. 252. ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. 국어점수 : 60 예상 수학 점수 : [66.3399081] OLS Regression Results ============================================================================== Dep. Variable: 수학 R-squared: 0.659 Model: OLS Adj. R-squared: 0.619 Method: Least Squares F-statistic: 16.46 Date: Tue, 15 Nov 2022 Prob (F-statistic): 0.000105 Time: 16:22:19 Log-Likelihood: -74.617 No. Observations: 20 AIC: 155.2 Df Residuals: 17 BIC: 158.2 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ Intercept 22.6238 9.482 2.386 0.029 2.618 42.629 국어 0.1158 0.261 0.443 0.663 -0.436 0.667 영어 0.5942 0.313 1.900 0.074 -0.066 1.254 ============================================================================== Omnibus: 6.313 Durbin-Watson: 2.163 Prob(Omnibus): 0.043 Jarque-Bera (JB): 3.824 Skew: -0.927 Prob(JB): 0.148 Kurtosis: 4.073 Cond. No. 412. ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. 국어점수 : 60 영어점수 : 70 예상 수학 점수 : [71.16617773]
다중회귀분석에서 모델은 유의하지만 독립변수의 자격은 갖추지 못했다. 데이터를 가공할 필요성이 있다.
'Python 데이터 분석' 카테고리의 다른 글
회귀분석모형의 적절성을 위한 5가지 조건 예제 (1) 2022.11.16 단순선형회귀, 다중선형회귀 예제(2), 회귀분석모형의 적절성을 위한 5가지 조건 (0) 2022.11.15 Python 데이터분석 기초 50 - 귀납적 추론, 연역적 추론, 단순선형회귀 예제(mtcars), 키보드로 값 받기 (0) 2022.11.15 단회귀분석(선형회귀분석) OLS 예제(iris dataset으로 모델 생성) (0) 2022.11.15 Python 데이터분석 기초 49 - 단회귀분석(선형회귀분석) OLS summary(요약결과) 보는 방법 (0) 2022.11.15