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

hello4298님의 프로필 이미지

작성한 질문수

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

예시문제 작업형3(신 버전) 🆕 updated 2023.11 / 로지스틱 회귀

logit 이나 ols 사용할때 앞에 C( )를 붙이는 이유?

해결된 질문

23.11.25 00:13 작성

·

617

1

  • ANOVA를 배울때는 ols 사용할때 독립변수 앞에 C()를 붙이는것이 분산분석은 범주형 분석이기에 앞에 C를 붙인다고 생각했는데요~

  • 로지스틱 회귀분석은 독립변수가 수치형, 종속변수가 이산/명목형으로 알고있는데.. Gender 앞에 C를 붙이는 이유가 있을가요? 오히려 Gender은 수치로 바꿔줘야할것 같은데..

  • 혹시 C 의 의미가 수치형->범주형, 범주형->수치형으로 양쪽 모두 바꿔주는 역할인건지 궁금합니다.

답변 1

0

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

2023. 11. 25. 07:37

로지스틱 회귀에서 C() 함수는 독립변수 중 범주형 변수임을 명시하는 데 사용됩니다. 예를 들어, logit('Y ~ C(X) + Z', data=data)에서 C(X)는 X가 범주형 변수임을 나타내며, Z는 수치형 변수로 가정함

statsmodels 라이브러리에서는 범주형 독립변수가 있다면 C()로 명시하면 되고

scikit-learn 라이브러리에서는 원핫인코딩을 통해 수치형으로 변환이 필요합니다.

 

혹시 C 의 의미가 수치형->범주형, 범주형->수치형으로 양쪽 모두 바꿔주는 역할인건지 궁금합니다

C() 함수는 변수가 범주형임을 나타내는 데 사용되며, 수치형에서 범주형으로, 또는 그 반대로 변환하는 역할을 하는 것이 아닙니다. 오히려 수치형으로 표현된 범주형 변수를 모델에게 올바르게 해석하도록 만들어줍니다.

 

hello4298님의 프로필 이미지
hello4298
질문자

2023. 11. 26. 10:52

답변 감사합니다.

 

https://www.kaggle.com/code/agileteam/t3-2-example-py/notebook

 

캐글에 올려주신 비슷한 logistic 회귀분석 문제인데요~

거기서는 예시 정답에 아래와 같이 Pclass 부분에 범주형(C)를 씌우셨던데 이유가 있을지 궁금합니다.

formula = "Survived ~ C(Pclass) + Gender + SibSp + Parch"

 

df.info()로 보았을때, pclass와 sibsp, parch는 모두 int 형이고, gender만 object형이라서 gender에 C를 넣어야 하는게 아닌지 생각되어서요~

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

2023. 11. 27. 11:23

Pclass(등급)가 숫자이지만 범주형 변수여서 그렇습니다.

아마 문제라면 누구나 알 수 있는 것이거나 범주형이라고 명시하지 않을까 싶어요 (답이 달라져서)