인프런 커뮤니티 질문&답변

수지님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

다중회귀

해결된 질문

24.05.28 14:32 작성

·

124

·

수정됨

1

안녕하세요 😊

3유형을 잡고자 놀이터 문제 다 풀이하고 추가적으로 문제집 풀이 시작했는데

다중 선형 회귀랑 다중 회귀 모형이 다른 거 일까요?? 문제집에 있는 거 풀이하다가 답이 달라서 한번 강사 님께서 올려주신 문제로 문제집에 있는 풀이 방법이랑 강사 님께서 해주신 풀이 방법으로 각각 해보니 서로 다른 답이 나오네요.. sm.OLS랑 formula.api.ols 차이를 알고 싶습니다!

#데이터
import pandas as pd
df = pd.DataFrame({
    '매출액': [300, 320, 250, 360, 315, 328, 310, 335, 326, 280,
            290, 300, 315, 328, 310, 335, 300, 400, 500, 600],
    '광고비': [70, 75, 30, 80, 72, 77, 70, 82, 70, 80,
            68, 90, 72, 77, 70, 82, 40, 20, 75, 80],
    '플랫폼': [15, 16, 14, 20, 19, 17, 16, 19, 15, 20,
            14, 5, 16, 17, 16, 14, 30, 40, 10, 50],
    '투자':[100, 0, 200, 0, 10, 0, 5, 0, 20, 0,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    })
df.head(3)

# 풀이 1
from statsmodels.formula.api import ols
model1 = ols('매출액 ~ 광고비 + 플랫폼', data=df).fit()
print(model1.summary())

#풀이2(문제집)
import statsmodels.api as sm
X=df[['광고비','플랫폼']]
y=df[['매출액']]
model2 = sm.OLS(y,X).fit()
print(model2.summary())

 

답변 1

1

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 05. 28. 16:07

저도 그렇고 콘텐츠에 오류는 있을 수 있고, 문제집을 헐뜯을 생각은 전혀 없으니 오해 없으시기 바랍니다.

이 풀이는 문제가 있어요. OLS 함수는 상수항을 자동으로 처리하지 않아 수동으로 더해야 합니다.

아래와 같이요!!

강의를 만들기 위해 비교분석을 많이 했습니다. R과 동일한 값인지 동일하지 않다면 출제 가능성을 낮게 생각하고 있어요! OLS를 사용한다면 상수항을 추가하는 것이 R과 정답이 같습니다.

제가 작업형3에서 R스타일을 사용하는 이유도 상수항 추가의 번거로움을 없애기 위함이에요!

import statsmodels.api as sm
X = df[['광고비', '플랫폼']]
X = sm.add_constant(X)  # 상수항 추가
y = df['매출액']
model2 = sm.OLS(y, X).fit()
print(model2.summary())
수지님의 프로필 이미지
수지
질문자

2024. 05. 28. 16:24

오 그러면 상수항 없이 풀이를 해야하는 문제이면 sm.OLS로 풀이하고 그런 문구 없으면 formula.api.ols로 풀이한다고 생각해도 될까요??!

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

2024. 05. 28. 16:27

상수항 관련 문구가 있을리는 없어요 !!

문제는 동일하고

ols로 푸는 방식과 OLS로 푸는 방식이 있어요

단, OLS는 상수항을 수동으로 작성해야 합니다.🙂

어떤 풀이를 사용해도 됩니다.

수지님의 프로필 이미지

작성한 질문수

질문하기