작성
·
83
·
수정됨
0
[문제]
import pandas as pd
from statsmodels.formula.api import logit
df = pd.read_csv("/kaggle/input/bigdatacertificationkr/Titanic.csv")
formula = "Survived ~ C(Pclass) + Gender + SibSp + Parch"
model = logit(formula, data=df).fit()
model.params
다름아니라 여기서 Pclass에 왜 앞에 C()를 하셨는지 이해가 안갑니다.!
참고로 데이터 info는 다음 아래와 같았습니다.
Pclass : 'int'
Gender : 'object'
SibSp : 'int'
Parch : 'int'
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
tjddnr4706님
, 질문하신 내용에 대해 답변드리겠습니다.
Pclass
에 C()
를 사용하는 이유는 Pclass
가 범주형 변수임을 명시하기 위함입니다.
통계 모델에서는 숫자로 표현된 변수도 실제 데이터의 의미에 따라 연속형(quantitative) 변수와 범주형(categorical) 변수로 구분할 필요가 있습니다. 예를 들어, Pclass
같은 경우는 1등석, 2등석, 3등석과 같이 범주를 나타내는 변수이지만 숫자로 표현되어 있습니다.
statsmodels
에서 로지스틱 회귀 모델을 구성할 때, C()
함수는 해당 변수가 범주형 변수임을 명시적으로 나타내어, 모델이 이를 범주형 변수로 해석해서 처리하도록 합니다. 즉, 변수를 범주형으로 해석하게 만들어 주는 역할을 합니다. 따라서 Pclass
가 숫자이지만 범주형 데이터로 처리하길 원할 때 C(Pclass)
와 같이 사용하는 것입니다.
이를 통해 Pclass
의 각 범주(1등석, 2등석, 3등석)가 생존 여부(Survived
)에 미치는 영향을 각각의 독립된 변수로서 모델에 포함시킬 수 있습니다.