1. statsmodels란?
- statsmodels는 통계적 해석이 중요한 회귀를 위한 파이썬 표준 라이브러리
- 회귀 계수의 p값, 신뢰구간, 표준오차 등 해석이 필요할 때 statsmodels를 사용
- 다양한 회귀분석을 지원:
- OLS(최소제곱 선형회귀), 로지스틱 회귀, GLM, 시계열 회귀 등
2. 언제 사용하는가?
| 상황 |
statsmodels 추천 이유 |
| 회귀 결과를 상세히 해석해야 할 때 |
(ex: p-value, 신뢰구간, 표준오차, F통계량 등) |
| 통계 분석/논문/연구 |
각 변수의 영향, 유의미성 해석이 필요할 때 |
| 시계열 데이터 분석 |
AR, MA, ARIMA, SARIMA 등 다양한 시계열 모델 지원 |
| 통계적 가설 검정/분산분석(ANOVA) |
t-test, chi2-test 등 통계적 유의성 판단 |
| 모델의 회귀 계수 해석이 중요할 때 |
단순 예측력보다 변수별 통계적 의미가 더 중요한 상황 |
3. scikit-learn과의 차이
| 비교항목 |
statsmodels |
scikit-learn |
| 분야 |
통계 분석/해석 |
머신러닝(예측력/실용성) |
| 출력 |
계수, 표준오차, p값, 신뢰구간 등 |
예측값, 정확도, 평가점수 위주 |
| 용도 |
논문, 연구, 통계, 변수 해석 |
실무, 대회, 예측모델 |
| 예측력 |
보통(해석 중심) |
매우 좋음(튜닝, 앙상블 등 다양) |
4. 대표적 사용 예시
(1) 선형회귀(OLS: Ordinary Least Squares)
import statsmodels.api as sm
X = ... # 입력(특성) 데이터 (numpy, pandas 등)
y = ... # 정답(타겟)
X = sm.add_constant(X) # 절편항(상수) 추가 (중요!)
model = sm.OLS(y, X) # OLS(최소제곱) 선형회귀 모델 생성
results = model.fit() # 학습
print(results.summary()) # 상세 통계 결과(계수, p-value, R2, 신뢰구간 등)
(2) 로지스틱 회귀, 시계열, 가설검정 등
- 로지스틱 회귀:
sm.Logit()
- 시계열:
sm.tsa.ARIMA(), sm.tsa.SARIMAX() 등
- 가설검정:
sm.stats.ttest_ind(), sm.stats.chisquare() 등