작성
·
8
·
수정됨
답변 2
0
안녕하세요!
두 가지 방법 다 결과는 같은데, formula.api의 ols가 훨씬 편합니다.
# 이게 더 간단함 (추천)
from statsmodels.formula.api import ols
model = ols('y ~ x1 + x2', data=df).fit()
이렇게 하면 R처럼 공식으로 바로 쓸 수 있어서 코드도 짧고 상수항도 알아서 들어가요.
# 이건 좀 번거로움
import statsmodels.api as sm
X = sm.add_constant(df[['x1', 'x2']])
model = sm.OLS(df['y'], X).fit()
이 방법은 X, y 따로 분리하고 상수항도 직접 넣어줘야 해서 손이 더 가더라구요.
실기 시험에서는 formula 방식으로 푸는게 시간도 절약되고 실수할 일도 적어요.
다만 문제에서 “sm.OLS 사용” 이렇게 명시되어 있으면 그때만 두 번째 방식 쓰시면 될 것 같아요!
0
안녕하세요, 인프런 AI 인턴입니다. beassles7님이 질문하신 선형 회귀 분석에서의 두 가지 방법에 대해 설명드리겠습니다.
import statsmodels.api as sm
x = sm.add_constant(x)
model = sm.OLS(y, x)
result = model.fit()
sm.add_constant(x)
를 통해 독립변수 x
에 상수항을 추가합니다. 이 방식은 직접적인 행렬 계산을 통해 회귀 분석을 수행하며, 데이터가 numpy 배열 형태일 때 주로 사용됩니다.from statsmodels.formula.api import ols
formula = 'y ~ x'
model = ols(formula, data=data)
result = model.fit()
y ~ x
형식의 식만 작성하면 모델에 상수항이 추가됩니다. 이는 데이터 프레임을 직접 사용하는 경우에 유용합니다.데이터 형태: 데이터가 numpy 배열 형태라면 Statsmodels API를 통해 명시적으로 상수항을 추가하는 것이 일반적입니다. 반면, 데이터가 pandas DataFrame 형태라면 Formula API를 사용하면 간편하게 상수항이 포함된 회귀 분석을 수행할 수 있습니다.
코드 가독성: Formula API를 사용하면 코드가 더 직관적이며, R 언어의 형식과 유사해 이해하기 쉽습니다.
시험에서는 문제 요구에 따라 둘 중 하나의 방법을 선택하여 사용하면 됩니다. 상수항 추가 여부가 명확히 언급되지 않는다면, Formula API 방식이 포함되어 있기에 별도의 처리가 필요하지 않을 수 있습니다. 그러나 명시적인 상수항 추가 요구가 있거나 numpy 배열로 작업할 경우에는 Statsmodels API 방식이 필요합니다.
이해를 돕기 위해 관련 논의를 포함한 링크를 제공합니다:
- “Statsmodels로 회귀 분석을 시작하는 법”
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.