logo

범주가 3개 이상인 독립변수

from statsmodels.formula.api import ols
import pandas as pd

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

범주가 3개 이상인 경우의 더미 변환

  • 범주가 3개인 경우
    • 예: engine_type: Diesel, Hybrid, LNG
  • 문자열 범주의 기본 순서에서 Diesel이 기준범주로 지정됨
  • 범주의 수 K보다 1개 적은 K−1개의 더미 변수 생성
  • 표에 출력되는 회귀계수는 기준범주(Diesel) 대비 각 범주의 차이를 의미
engine_type engine_type[T.Hybrid] engine_type[T.LNG]
Diesel 0 0
Hybrid 1 0
LNG 0 1

범주가 3개인 변수의 회귀 실습

  • 3개 범주의 engine_type(Diesel, Hybrid, LNG) 변수를 투입하여 분석
  • statsmodels가 자동으로 2개의 더미 변수를 만들고 Diesel을 기준으로 계수를 산출
🤖 AI 프롬프트
df_ship에서 engine_type의 범주별 선박 수를 확인하고, weight를 종속변수로 하는 회귀모형에 engine_type을 범주형 독립변수로 넣어 요약표를 출력해줘. 기본 기준범주 Diesel에 대한 계수 차이를 해석해줘.
df_ship["engine_type"].value_counts()
실행 결과
engine_type
Diesel    47
LNG       28
Hybrid    25
Name: count, dtype: int64
  • Diesel: 47척
  • LNG: 28척
  • Hybrid: 25척
print(ols("weight ~ engine_type", data=df_ship).fit().summary())
실행 결과
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 weight   R-squared:                       0.029
Model:                            OLS   Adj. R-squared:                  0.009
Method:                 Least Squares   F-statistic:                     1.445
Date:                Sun, 18 Oct 2026   Prob (F-statistic):              0.241
Time:                        14:47:34   Log-Likelihood:                -1071.9
No. Observations:                 100   AIC:                             2150.
Df Residuals:                      97   BIC:                             2158.
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
=========================================================================================
                            coef    std err          t      P>|t|      [0.025      0.975]
-----------------------------------------------------------------------------------------
Intercept              4.736e+04   1620.692     29.223      0.000    4.41e+04    5.06e+04
engine_type[T.Hybrid]  4610.2979   2750.406      1.676      0.097    -848.496    1.01e+04
engine_type[T.LNG]     2302.5836   2652.480      0.868      0.387   -2961.855    7567.022
==============================================================================
Omnibus:                        5.974   Durbin-Watson:                   2.014
Prob(Omnibus):                  0.050   Jarque-Bera (JB):                5.580
Skew:                           0.571   Prob(JB):                       0.0614
Kurtosis:                       3.184   Cond. No.                         3.28
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
  • R2: 0.029
  • 모형 전체 p-value: 0.241
  • 절편: 약 47360
    • 기준범주 Diesel의 평균 무게
  • engine_type[T.Hybrid]: 4610.2979, p-value 0.097
  • engine_type[T.LNG]: 2302.5836, p-value 0.387
  • 두 계수 모두 5% 유의수준에서 유의하지 않음
weight​=47360+4610.30×I(engine_type=Hybrid)+2302.58×I(engine_type=LNG)

기준 범주 바꾸기

  • C(변수명, Treatment("기준범주")) 형식으로 기준범주를 직접 지정
🤖 AI 프롬프트
df_ship에서 weight를 종속변수, engine_type을 범주형 독립변수로 하는 회귀모형을 적합해줘. C()와 Treatment()로 LNG를 기준범주로 지정하고 요약표를 출력해줘.
print(ols(
    'weight ~ C(engine_type, Treatment("LNG"))',
    data=df_ship,
).fit().summary())
실행 결과
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                 weight   R-squared:                       0.029
Model:                            OLS   Adj. R-squared:                  0.009
Method:                 Least Squares   F-statistic:                     1.445
Date:                Sun, 18 Oct 2026   Prob (F-statistic):              0.241
Time:                        14:47:34   Log-Likelihood:                -1071.9
No. Observations:                 100   AIC:                             2150.
Df Residuals:                      97   BIC:                             2158.
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================================================
                                                 coef    std err          t      P>|t|      [0.025      0.975]
--------------------------------------------------------------------------------------------------------------
Intercept                                   4.966e+04   2099.764     23.652      0.000    4.55e+04    5.38e+04
C(engine_type, Treatment("LNG"))[T.Diesel] -2302.5836   2652.480     -0.868      0.387   -7567.022    2961.855
C(engine_type, Treatment("LNG"))[T.Hybrid]  2307.7143   3057.302      0.755      0.452   -3760.184    8375.613
==============================================================================
Omnibus:                        5.974   Durbin-Watson:                   2.014
Prob(Omnibus):                  0.050   Jarque-Bera (JB):                5.580
Skew:                           0.571   Prob(JB):                       0.0614
Kurtosis:                       3.184   Cond. No.                         4.14
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
  • 절편: 약 49660
    • 기준범주 LNG의 평균 무게
  • Diesel: -2302.5836, p-value 0.387
  • Hybrid: 2307.7143, p-value 0.452
  • 기준범주를 바꿔도 범주별 예측값과 R2는 동일
weight​≈49660−2302.58×I(engine_type=Diesel)+2307.71×I(engine_type=Hybrid)

퀴즈

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

engine_type의 범주가 Diesel, Hybrid, LNG이고 Diesel이 기준범주일 때 생성되는 더미 변수로 적절한 것은?

  • ○engine_type[T.Hybrid]와 engine_type[T.LNG]
  • ○engine_type[T.Diesel]와 engine_type[T.Hybrid]
  • ○engine_type[T.Diesel], engine_type[T.Hybrid], engine_type[T.LNG] 모두
  • ○engine_type[T.Diesel]와 engine_type[T.LNG]

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

Previous
범주형 독립변수