logo

다중회귀분석

다중 선형 회귀 모형의 도입 배경

  • 현실 세계의 현상은 단 하나의 요인, 즉 단순 선형 회귀만으로 완벽하게 설명하기 어려움
  • 여러 독립변수와 종속변수의 관계를 동시에 추정할 필요가 있음
  • 예: 선박의 무게를 예측하기 위해 길이, 폭, 속도 등 다양한 제원을 종합적으로 고려
    • 종속변수: 선박의 무게
    • 독립변수: 길이, 폭, 속도 등

다중 선형 회귀 모형

  • 다중 선형 회귀 모형은 단순 선형 회귀를 확장하여 2개 이상의 독립변수를 포함하는 모형
Y=β0​+β1​X1​+β2​X2​+⋯+βk​Xk​+ϵ
  • Y: 종속변수
  • X1​,X2​,…: 독립변수
  • β1​,β2​,…: 각 독립변수에 해당하는 회귀계수, 즉 편회귀계수
  • β0​: y절편
  • ϵ: 오차항

통계적 통제

  • 특정 회귀계수 βi​는 다른 변수가 일정하다고 가정하여 해석
  • 다른 변수가 같을 때 Xi​가 1단위 증가하면 예측되는 Y의 평균 변화량
  • 관찰 자료의 통계적 통제만으로 인과관계가 성립하지는 않음
  • 실험적 통제
    • 실제로 다른 변수를 고정
  • 통계적 통제
    • 일정한 가정 하에 다른 변수가 고정되었을 때의 결과를 추정

파이썬 실습: 다중 선형 회귀 모형 적합

  • statsmodels의 수식 기반 방식(formula.api) 활용
  • ~ 기호 우측에 여러 독립변수를 + 기호로 나열하여 다중 회귀식을 구성
🤖 AI 프롬프트
ship.xlsx를 판다스로 읽어 df을 만들고, statsmodels로 weight를 종속변수, length와 beam을 독립변수로 하는 절편 포함 다중 선형 회귀를 적합해줘. 회귀분석 요약표를 출력해줘.
from statsmodels.formula.api import ols
import pandas as pd

df = pd.read_excel("ship.xlsx")

print(ols("weight ~ length + beam", data=df).fit().summary())
실행 결과
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 weight   R-squared:                       0.497
Model:                            OLS   Adj. R-squared:                  0.486
Method:                 Least Squares   F-statistic:                     47.88
Date:                Sun, 18 Oct 2026   Prob (F-statistic):           3.43e-15
Time:                        14:44:07   Log-Likelihood:                -1039.1
No. Observations:                 100   AIC:                             2084.
Df Residuals:                      97   BIC:                             2092.
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept   1.211e+04   4425.754      2.736      0.007    3323.287    2.09e+04
length      -109.6387     61.732     -1.776      0.079    -232.160      12.883
beam        1715.6569    391.795      4.379      0.000     938.053    2493.261
==============================================================================
Omnibus:                       13.852   Durbin-Watson:                   1.898
Prob(Omnibus):                  0.001   Jarque-Bera (JB):               15.713
Skew:                           0.966   Prob(JB):                     0.000387
Kurtosis:                       3.193   Cond. No.                     1.44e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.44e+03. This might indicate that there are
strong multicollinearity or other numerical problems.
  • 추정식: weight​≈12107−109.64×length+1715.66×beam
  • R2: 0.497
  • 수정 R2: 0.486
  • length: -109.6387, p-value 0.079
  • beam: 1715.6569, p-value < 0.001

speed를 추가한 모형을 적합.

🤖 AI 프롬프트
df에서 weight를 종속변수로, length, beam, speed를 독립변수로 하는 다중 선형 회귀를 적합하고 요약표를 출력해줘.
model = ols("weight ~ length + beam + speed", data=df).fit()

print(model.summary())
실행 결과
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 weight   R-squared:                       0.514
Model:                            OLS   Adj. R-squared:                  0.499
Method:                 Least Squares   F-statistic:                     33.87
Date:                Sun, 18 Oct 2026   Prob (F-statistic):           5.09e-15
Time:                        14:44:07   Log-Likelihood:                -1037.3
No. Observations:                 100   AIC:                             2083.
Df Residuals:                      96   BIC:                             2093.
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept   1.844e+04   5549.055      3.324      0.001    7429.454    2.95e+04
length       -99.2415     61.229     -1.621      0.108    -220.780      22.297
beam        1660.5702    388.103      4.279      0.000     890.191    2430.949
speed       -376.4271    203.050     -1.854      0.067    -779.478      26.624
==============================================================================
Omnibus:                       12.292   Durbin-Watson:                   1.888
Prob(Omnibus):                  0.002   Jarque-Bera (JB):               13.675
Skew:                           0.904   Prob(JB):                      0.00107
Kurtosis:                       3.098   Cond. No.                     1.84e+03
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.84e+03. This might indicate that there are
strong multicollinearity or other numerical problems.
  • 추정식: weight​≈18444−99.24×length+1660.57×beam−376.43×speed
  • R2: 0.514
  • 수정 R2: 0.499
  • length: -99.2415, p-value 0.108
  • beam: 1660.5702, p-value < 0.001
  • speed: -376.4271, p-value 0.067
  • 다른 변수를 통제했을 때 beam만 5% 유의수준에서 유의

모델 결과 요약표 주요 항목

  • 일반 결정계수(R2)
    • 모델 자체의 설명력
    • 변수를 추가해도 감소하지 않음
    • 모델 간 비교에는 한계가 있음
  • 수정된 결정계수(Adjusted R2)
    • 변수의 개수가 불필요하게 늘어날 때 그만큼 패널티를 수식에 반영
    • 모델 간 비교에 사용
  • F-statistic, Prob(F-statistic)
    • 모든 기울기가 0이라는 귀무가설 검정
    • Prob(F-statistic)이 0.05보다 작으면 귀무가설 기각
  • coef
    • 각각 투입된 독립변수의 편회귀계수
    • 부호를 통해 직관적인 증감 패턴을 분석
  • P>|t|
    • 다른 변수를 통제했을 때 개별 회귀계수가 0인지 검정하는 p-value

신규 선박 중량 예측

  • ship_predict.xlsx: 신규 선박 제원 정보
  • 모델 학습에 사용한 독립변수(length, beam, speed)가 포함되어 있어야 함
  • 학습된 다중 회귀 모델 model로 신규 데이터의 중량을 예측
  • 예측값은 학습 데이터의 관계를 기준으로 계산된 추정치
🤖 AI 프롬프트
ship_predict.xlsx를 판다스로 읽어 df_pred를 만들고, 앞에서 적합한 model로 중량을 예측해 predicted_weight 열에 저장해줘. 예측 열이 포함된 데이터 프레임을 보여줘.
df_pred = pd.read_excel("ship_predict.xlsx")
df_pred["predicted_weight"] = model.predict(df_pred)
df_pred
실행 결과
  ship_name  length  beam  speed  predicted_weight
0    Plan_A     180  27.5   15.0      40600.044796
1    Plan_B     220  33.0   18.0      44634.239389
2    Plan_C     260  39.0   20.0      49875.146152
3    Plan_D     300  45.0   21.5      55304.266443
4    Plan_E     340  50.5   23.0      59903.101623

퀴즈

문제 1 / 5맞음: 0힌트: 0틀림: 0채점중: 0남음: 5

다중 선형 회귀 모형을 사용하는 주된 이유로 가장 적절한 것은?

  • ○여러 독립변수와 종속변수의 관계를 동시에 추정하기 위해
  • ○각 독립변수에 별도의 단순회귀만 적용하기 위해
  • ○종속변수만 표준화하여 평균 차이를 검정하기 위해
  • ○변수 추가만으로 인과관계를 입증하기 위해

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
결정계수