7. 통계 분석: statistics 모듈과 statsmodels

통계 분석: statistics 모듈과 statsmodels | 지식에 대한 탐구

파이썬에서 통계 분석을 수행할 때 주로 사용되는 두 가지 강력한 도구가 있습니다: 내장 statistics 모듈과 외부 라이브러리인 statsmodels입니다. 이 두 도구는 각각 고유한 특징과 장점을 가지고 있어, 상황에 따라 적절히 선택하여 사용할 수 있습니다. 이 글에서는 이 두 도구의 주요 기능과 사용법에 대해 자세히 알아보겠습니다.

 

1. statistics 모듈

statistics 모듈은 파이썬 3.4부터 표준 라이브러리에 포함된 기본 통계 기능을 제공하는 모듈입니다. 간단한 통계 계산을 위해 설계되었으며, 별도의 설치 없이 바로 사용할 수 있다는 장점이 있습니다.

1.1 주요 기능

  • 중심 경향성 측정: 평균, 중앙값, 최빈값
  • 분산 측정: 분산, 표준편차, 범위
  • 상관관계: 공분산, 상관계수
  • 기타: 정규분포 관련 함수 등

 

1.2 사용 예시

import statistics as stats

data = [1, 2, 3, 4, 4, 5, 5, 5, 6, 6, 7]

# 중심 경향성 측정
print("평균:", stats.mean(data))  # 평균 계산
print("중앙값:", stats.median(data))  # 중앙값 계산
print("최빈값:", stats.mode(data))  # 최빈값 계산

# 분산 측정
print("분산:", stats.variance(data))  # 분산 계산
print("표준편차:", stats.stdev(data))  # 표준편차 계산

# 기타 함수
print("정규분포에서의 백분위수:", stats.norm.ppf(0.975))  # 정규분포의 97.5 백분위수 계산

 

1.3 장단점

장점:

  • 표준 라이브러리에 포함되어 있어 별도 설치 불필요
  • 간단하고 직관적인 인터페이스
  • 기본적인 통계 기능을 빠르게 사용 가능

단점:

  • 고급 통계 기능 부족
  • 대규모 데이터셋에 대한 최적화가 되어 있지 않음

 

2. statsmodels

statsmodels는 통계 모델링과 계량경제학을 위한 파이썬 모듈입니다. 다양한 통계 모델, 추정 방법, 통계 테스트를 제공하며, 데이터 탐색과 통계적 모델 추정에 사용됩니다.

2.1 주요 기능

  • 선형 회귀 모델
  • 일반화 선형 모델
  • 시계열 분석 모델
  • 비모수 방법
  • 통계 테스트
  • 플로팅 기능

 

2.2 설치 방법

statsmodels는 pip를 사용하여 설치할 수 있습니다:

pip install statsmodels

 

2.3 사용 예시

2.3.1 선형 회귀 분석

import numpy as np
import statsmodels.api as sm

# 데이터 준비
X = np.random.rand(100, 1)  # 독립 변수
y = 2 + 3 * X + np.random.rand(100, 1)  # 종속 변수

# 상수항 추가
X = sm.add_constant(X)

# 모델 피팅
model = sm.OLS(y, X).fit()  # 최소제곱법으로 모델 피팅

# 결과 출력
print(model.summary())  # 모델 요약 출력

 

2.3.2 시계열 분석

import pandas as pd
import statsmodels.api as sm

# 데이터 준비 (예: 주식 가격 데이터)
data = pd.read_csv('stock_prices.csv', index_col='Date', parse_dates=True)

# ARIMA 모델 피팅
model = sm.tsa.ARIMA(data['Close'], order=(1, 1, 1))  # ARIMA 모델 정의
results = model.fit()  # 모델 피팅

# 결과 출력
print(results.summary())  # 모델 요약 출력

# 예측
forecast = results.forecast(steps=30)  # 30일 후까지 예측
print(forecast)  # 예측 결과 출력

 

2.4 장단점

장점:

  • 광범위한 통계 모델과 테스트 제공
  • 학술 연구나 전문적인 통계 분석에 적합
  • 상세한 결과 출력과 진단 도구 제공

단점:

  • 학습 곡선이 다소 가파름
  • 기본 통계 함수에 비해 사용법이 복잡할 수 있음
  • 대규모 데이터셋에 대해서는 처리 속도가 느릴 수 있음

 







 

3. statistics 모듈과 statsmodels의 비교

특징 statistics 모듈 statsmodels
설치 기본 내장 별도 설치 필요
기능 범위 기본적인 통계 함수 광범위한 통계 모델과 테스트
사용 난이도 쉬움 중간~어려움
처리 속도 빠름 (작은 데이터셋) 중간 (대규모 데이터셋에 적합)
적합한 용도 간단한 통계 계산 고급 통계 분석, 모델링

 

4. 실제 응용 사례

4.1 학생 성적 분석 (statistics 모듈 사용)

import statistics as stats

scores = [75, 80, 85, 90, 95, 100, 85, 80, 75, 90]  # 학생들의 점수

print("평균 점수:", stats.mean(scores))  # 평균 점수 계산
print("중앙값:", stats.median(scores))  # 중앙값 계산
print("표준편차:", stats.stdev(scores))  # 표준편차 계산

 

4.2 주식 가격 예측 (statsmodels 사용)

import pandas as pd
import statsmodels.api as sm
from statsmodels.tsa.arima.model import ARIMA

# 주식 데이터 로드 (예시)
data = pd.read_csv('stock_data.csv', parse_dates=['Date'], index_col='Date')

# ARIMA 모델 피팅
model = ARIMA(data['Close'], order=(1,1,1))  # ARIMA 모델 정의
results = model.fit()  # 모델 피팅

# 다음 5일 예측
forecast = results.forecast(steps=5)  # 5일 후까지 예측
print("다음 5일 예측 가격:", forecast)  # 예측 결과 출력

 

파이썬의 statistics 모듈과 statsmodels 라이브러리는 각각 고유한 장점을 가지고 있습니다. statistics 모듈은 간단하고 빠른 통계 계산에 적합하며, 기본적인 통계 기능만 필요한 경우에 이상적입니다. 반면 statsmodels는 더 복잡하고 심도 있는 통계 분석과 모델링이 필요한 경우에 강력한 도구가 됩니다.

프로젝트의 복잡성, 필요한 통계 기능의 범위, 데이터의 크기 등을 고려하여 적절한 도구를 선택하는 것이 중요합니다. 간단한 데이터 요약이나 기초적인 통계 분석에는 statistics 모듈로 충분할 수 있지만, 고급 통계 모델링, 시계열 분석, 또는 계량경제학적 접근이 필요한 경우에는 statsmodels를 사용하는 것이 좋습니다.

두 도구를 상호 보완적으로 사용하면, 파이썬에서 광범위한 통계 분석 작업을 효과적으로 수행할 수 있습니다. 통계 분석의 기초부터 고급 기법까지, 이 두 도구는 데이터 과학자와 연구자들에게 필수적인 리소스가 될 것입니다.