다중회귀분석
다중 선형 회귀 모형의 도입 배경
- 현실 세계의 현상은 단 하나의 요인, 즉 단순 선형 회귀만으로 완벽하게 설명하기 어려움
- 여러 독립변수와 종속변수의 관계를 동시에 추정할 필요가 있음
- 예: 선박의 무게를 예측하기 위해 길이, 폭, 속도 등 다양한 제원을 종합적으로 고려
- 종속변수: 선박의 무게
- 독립변수: 길이, 폭, 속도 등
다중 선형 회귀 모형
- 다중 선형 회귀 모형은 단순 선형 회귀를 확장하여 2개 이상의 독립변수를 포함하는 모형
- 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-value0.079beam: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-value0.108beam:1660.5702, p-value< 0.001speed:-376.4271, p-value0.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
퀴즈
다중 선형 회귀 모형을 사용하는 주된 이유로 가장 적절한 것은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.