반응형
statsmodels.api
와 statsmodels.formula.api
는 모두 statsmodels
라이브러리의 일부로, 통계 모델링과 계량경제학 분석을 수행하는 데 사용됩니다. 그러나 이 두 모듈은 모델을 정의하고 적합시키는 방식에서 차이가 있습니다.
statsmodels.api
statsmodels.api
는 직접적으로 모델을 정의하고, 변수와 데이터를 수동으로 설정하여 분석을 수행하는 접근 방식을 사용합니다.
주요 특징:
명시적 데이터 및 변수 설정:
- 독립 변수(X)와 종속 변수(y)를 명시적으로 설정합니다.
sm.add_constant()
함수를 사용하여 상수항(절편)을 추가합니다.
모델 생성 및 적합:
- 예를 들어,
sm.OLS()
,sm.Logit()
,sm.GLM()
등의 함수를 사용하여 회귀 모델을 생성합니다. - 모델 객체의
fit()
메서드를 호출하여 모델을 적합합니다.
- 예를 들어,
예시 코드:
import statsmodels.api as sm
import pandas as pd
# 예시 데이터프레임 생성
data = {
'age': [25, 30, 35, 40, 45, 50, 55, 60, 65, 70],
'Cholesterol': [200, 220, 180, 210, 230, 240, 220, 200, 190, 210],
'weight': [60, 65, 70, 75, 80, 85, 90, 95, 100, 105]
}
df = pd.DataFrame(data)
# 종속 변수와 독립 변수 설정
X = df[['age', 'Cholesterol']]
y = df['weight']
# 상수항 추가 (절편 포함)
X = sm.add_constant(X)
# 선형 회귀 모델 생성 및 적합
model = sm.OLS(y, X).fit()
# 회귀 분석 요약 출력
print(model.summary())
statsmodels.formula.api
statsmodels.formula.api
는 R의 formula
방식을 따라, 공식 기반으로 모델을 정의하고 적합시키는 접근 방식을 사용합니다.
주요 특징:
공식 기반 모델링:
- 패트릭 윌킨슨의 표기법을 사용하여 모델을 정의합니다. 예를 들어,
y ~ X1 + X2
는 종속 변수y
를 독립 변수X1
과X2
로 회귀 분석합니다. - 자동으로 상수항(절편)을 포함합니다.
- 패트릭 윌킨슨의 표기법을 사용하여 모델을 정의합니다. 예를 들어,
더 간결한 코드:
- 공식 기반 모델링을 통해 데이터프레임의 열 이름을 사용하여 모델을 정의하므로 코드가 더 간결해집니다.
예시 코드:
import statsmodels.formula.api as smf
import pandas as pd
# 예시 데이터프레임 생성
data = {
'age': [25, 30, 35, 40, 45, 50, 55, 60, 65, 70],
'Cholesterol': [200, 220, 180, 210, 230, 240, 220, 200, 190, 210],
'weight': [60, 65, 70, 75, 80, 85, 90, 95, 100, 105]
}
df = pd.DataFrame(data)
# 공식 기반 선형 회귀 모델 생성 및 적합
model = smf.ols('weight ~ age + Cholesterol', data=df).fit()
# 회귀 분석 요약 출력
print(model.summary())
비교 요약:
statsmodels.api
:- 명시적으로 변수와 데이터를 설정하여 모델을 정의합니다.
- 더 많은 코드가 필요하지만, 변수의 설정과 조작이 더 명확합니다.
- 상수항을 명시적으로 추가해야 합니다.
statsmodels.formula.api
:- 공식 기반 모델링을 사용하여 간결하게 모델을 정의합니다.
- 데이터프레임의 열 이름을 사용하여 모델을 정의하므로, 코드가 더 간결하고 읽기 쉽습니다.
- 자동으로 상수항을 포함합니다.
이 두 모듈은 상호 보완적으로 사용할 수 있으며, 분석 목적과 개인의 코드 작성 선호도에 따라 선택할 수 있습니다. 간단한 분석이나 빠른 프로토타이핑에는 statsmodels.formula.api
가 유용하며, 복잡한 데이터 조작이 필요한 경우에는 statsmodels.api
가 더 적합할 수 있습니다.
반응형
'통계분석' 카테고리의 다른 글
[통계분석]로지스틱 회귀에서 오즈비의 의미 (0) | 2024.06.20 |
---|---|
[통계분석] 피어슨 잔차, 디비언스, 디비언스 잔차 해석 (0) | 2024.06.20 |
[통계분석]로지스틱 회귀에서 피어슨 잔차, 디비언스, 디비언스 잔차(residuals) (0) | 2024.06.20 |
[통계분석]로짓(로그오즈) 함수, 로지스틱 함수 (0) | 2024.06.20 |
[통계분석]scipy.stats와 statsmodel.api 비교 (0) | 2024.06.11 |