ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 단순선형회귀, 다중선형회귀 예제
    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]

    다중회귀분석에서 모델은 유의하지만 독립변수의 자격은 갖추지 못했다. 데이터를 가공할 필요성이 있다.

     

    댓글

Designed by Tistory.