작성
·
21
답변 3
1
제가 from statsmodels.formula. api import ols 로 사용한 것 같은데
import statsmodels.stats.api as sm로 사용한 영상이 있나요??
sm.OLS()도 ols()같은 회귀 모델입니다. 다만
ols()는 r 포뮬라 방식을 따르고 있고,
OLS()는 사용법은 머신러닝 방식과 유사하나
상수를 직접 넣어야하는 불편함이 있어요 sm.add_constant(X)
다중회귀 다중선형회귀로 구분하기보다 OLS()와 ols() 사용법 차이가 있어요
0
0
다른 예시 문제를 풀다보니 그렇게 풀어야 풀이답이 나와서요
다중선형회귀분석이든 다중회귀이든 선생님이 알려주신대로
from statsmodels.formula.api import ols로 푸니까 문제집에 있는 답과 안맞아서요
회귀분석이라고 나오면 '선형' 이란 말 없어도 위에 공식으로 풀면 되나요?
로지스틱회귀모형도 from statsmodels.formula.api import
logit로만 풀면 다되는 줄 알았는데 제가 가지고 있는 문제집은 상수항 추가하는 것으로 풀어서 답이 일치가 안되네요 ㅜㅜㅜ 어떤것으로 해야할지요
상수항 추가는 번거롭다고 하셔서 그건 아예 외우지도 않았어요
혹시나 싶어 저도 체크해봤어요
시험환경에서 아래 코드 활용시 결과는 같습니다.
import pandas as pd
from statsmodels.formula.api import ols
import statsmodels.api as sm
# Titanic 데이터 로드
df = pd.read_csv("data/Titanic.csv")
# 필요한 데이터 전처리 (예: Null 값 처리)
df = df.dropna(subset=['Survived', 'Age', 'Fare', 'Pclass']) # Null 값 제거
# 1. ols 사용
formula_model = ols("Survived ~ Age + Fare + Pclass", data=df).fit()
# 2. OLS 사용
X = df[['Age', 'Fare', 'Pclass']]
X = sm.add_constant(X)
y = df['Survived']
manual_model = sm.OLS(y, X).fit()
# 결과 비교
print("ols")
print(formula_model.summary())
print("sm.OLS")
print(manual_model.summary())
동일한 함수이고 결과는 같아야 정상입니다. (미세한 소수 끝자리 차이 제외)
달랐다면 전처리에서 입력 데이터를 다르게 넣은 것은 아닐까요?
다른 도서에서 어떻게 설명하고 있는지는 모르겠지만 제가 설명한 방식으로 시험문제에서 이슈가 없었습니다.