Step 1: Chi-square Test for Independence
We perform a chi-square test to determine if there is an independence between the 'Sex' and 'Survived' variables.
Step 2: Logistic Regression Model
We fit a logistic regression model using 'Sex', 'SibSp', and 'Fare' as independent variables and 'Survived' as the dependent variable. We then look at the coefficient for 'SibSp'.
Step 3: Calculate the Odds Ratio for 'SibSp'
The odds ratio for 'SibSp' is calculated by exponentiating the coefficient obtained from the logistic regression model.
Implementation in Python
Let's ensure the entire process is clear by implementing it with the correct dataset. Here is the complete implementation assuming the correct dataset path:
Explanation
Chi-square Test:
- The chi-square test checks if 'Sex' and 'Survived' are independent.
- The output
chi2_rounded
gives the chi-square statistic rounded to three decimal places.
Logistic Regression:
- We encode 'Sex' to numeric values.
- Fit a logistic regression model using 'Sex', 'SibSp', and 'Fare' to predict 'Survived'.
- Extract and round the coefficient for 'SibSp' to three decimal places (
sibsp_coefficient_rounded
).
Odds Ratio:
- The odds ratio for 'SibSp' is computed by exponentiating its coefficient.
- The result
odds_ratio_sibsp_rounded
is the odds ratio rounded to three decimal places.
Load the Titanic dataset and perform the Chi-square test for independence:
import pandas as pd
from scipy.stats import chi2_contingency
from sklearn.preprocessing import LabelEncoder
import statsmodels.api as sm
import numpy as np
# Load the Titanic dataset
path = '/mnt/data/titanic/train.csv'
df = pd.read_csv(path)
# 1. Chi-square Test for Independence between 'Sex' and 'Survived'
contingency_table = pd.crosstab(df['Sex'], df['Survived'])
chi2, p, dof, expected = chi2_contingency(contingency_table)
chi2_rounded = round(chi2, 3)
# Display Chi-square statistic
chi2_rounded
The formula (\text{Odds Ratio} = \exp(\text{Coefficient})) correctly transforms the logistic regression coefficient to the odds ratio, providing an interpretable measure of the effect size.
카이제곱 통계량 260.717은 'Sex'와 'Survived' 변수 사이에 강한 관계가 있음을 나타냅니다. 이 결과를 해석하기 위해 독립성에 대한 카이제곱 검정과 그 의미를 이해해야 합니다.
독립성에 대한 카이제곱 검정
카이제곱 검정은 두 범주형 변수 간의 독립성 여부를 평가합니다. 여기서 우리는 다음 가설을 검정합니다:
- 귀무 가설 (H0): 'Sex'와 'Survived'는 독립적이다.
- 대립 가설 (H1): 'Sex'와 'Survived'는 독립적이지 않다. --> 강한 관계가 있다.
카이제곱 통계량 해석
카이제곱 통계량은 적절한 자유도의 카이제곱 분포의 임계값과 비교됩니다. 계산된 카이제곱 통계량이 임계값보다 크면 귀무 가설을 기각합니다.
- 자유도 (df): 자유도는 다음과 같이 계산됩니다: ((\text{행의 수} - 1) \times (\text{열의 수} - 1)). 여기서는:
[
\text{df} = (2 - 1) \times (2 - 1) = 1
] - P값: 카이제곱 통계량과 관련된 P값은 귀무 가설이 참일 때 데이터 관찰 확률을 나타냅니다.
카이제곱 통계량과 P값
카이제곱 통계량 260.717과 자유도 1을 고려할 때, 관련된 P값을 조회하거나 통계 소프트웨어를 사용하여 결정할 수 있습니다. 이렇게 높은 카이제곱 값은 P값이 매우 작음을 의미합니다 (일반적인 유의 수준인 0.05나 0.01보다 훨씬 작음).
결론
- 귀무 가설 기각: 자유도 1에 대한 카이제곱 통계량 260.717은 임계값보다 훨씬 큽니다 (유의 수준 0.05에서 약 3.841). 따라서 귀무 가설을 기각합니다.
- 해석: 'Sex'와 'Survived' 사이에 통계적으로 유의미한 관계가 있습니다. 즉, 타이타닉 생존 여부는 승객의 성별과 독립적이지 않습니다.
실제 의미
이 유의미한 관계는 생존 확률이 남성과 여성 간에 차이가 있었음을 시사합니다. 일반적으로 타이타닉 참사에 대한 역사적 기록과 이전 분석에 따르면, 사회적 규범과 대피 절차 ("여성과 어린이 우선")로 인해 여성이 생존할 가능성이 더 높았습니다.
요약
- 카이제곱 통계량: 260.717
- 자유도: 1
- P값: 매우 작음 (<< 0.05)
- 결론: 'Sex'와 'Survived' 사이에 강한 연관성이 존재. 타이타닉 생존 여부는 승객의 성별에 의해 영향을 받았습니다.
다음 단계
이 관계를 더 이해하기 위해 다음을 고려할 수 있습니다:
- 교차표를 확인하여 생존 분포를 성별에 따라 분석.
- 막대 그래프나 다른 시각적 표현을 사용하여 관계를 시각화.
- 더 복잡한 모델 (예: 로지스틱 회귀)에서 여러 요인이 생존에 어떻게 공동으로 영향을 미치는지 탐색.
- Fit the logistic regression model and get the coefficient for 'Parch':
# Encode 'Sex' as a numeric variable
df['Sex_encoded'] = LabelEncoder().fit_transform(df['Sex'])
# Define independent variables and dependent variable
df['Sex_encoded']= LabelEncoder().fit_transform(df['Sex'])
X= df[['Sex_encoded','SibSp','Parch','Fare']]
X= sm.add_constant(X)
y= df['Survived']
model = sm.Logit(y,X).fit() #왜 y가 먼저일까
model_summary=model.summary2() #summary 1,2 있는거 봤는데 어디서 조회했더라. dir 엇던가
parch_coeff=model.params['Parch']
parch_coeff_rounded= round(parch_coeff,3)
parch_coeff_rounded
로지스틱 회귀 모델에서 'Sex_encoded', 'SibSp', 'Parch', 'Fare'를 독립 변수로 사용하여 'Survived'를 종속 변수로 회귀 분석한 결과, 'Parch' 변수의 계수가 -0.201로 나왔습니다. 이 결과를 해석해보겠습니다.
로지스틱 회귀 계수 해석
로지스틱 회귀 모델에서 계수는 각 독립 변수가 종속 변수에 미치는 영향을 로그 오즈 비율(log odds ratio)로 나타냅니다. 즉, 계수는 독립 변수의 단위 증가에 따른 종속 변수의 로그 오즈 비율 변화를 나타냅니다.
- 'Parch' 계수 (parch_coeff_rounded): -0.201
계수 해석
- 계수의 부호와 크기:
- 'Parch'의 계수가 -0.201인 것은 'Parch' 변수가 1 단위 증가할 때, 생존할 오즈(log odds)가 0.201만큼 감소함을 의미합니다.
- 즉, 부모/자식 동반자가 한 명 증가할 때마다 생존할 오즈가 줄어드는 경향이 있습니다.
- 오즈 비율(Odds Ratio)로 해석:
- 오즈 비율은 계수를 지수 함수로 변환하여 계산할 수 있습니다.
[
\text{Odds Ratio} = \exp(\text{Coefficient})
] - 'Parch'의 경우:
[
\text{Odds Ratio} = \exp(-0.201) \approx 0.818
] - 이는 'Parch' 변수가 1 단위 증가할 때, 생존할 오즈가 약 0.818배로 감소함을 의미합니다.
- 오즈 비율은 계수를 지수 함수로 변환하여 계산할 수 있습니다.
결론
- 'Parch' 계수: -0.201
- 해석: 부모/자식 동반자가 한 명 증가할 때마다 생존할 로그 오즈가 0.201만큼 감소합니다.
- 오즈 비율: 부모/자식 동반자가 한 명 증가할 때 생존할 오즈는 약 0.818배로 감소합니다.
실제 의미
타이타닉 생존에 있어 부모/자식 동반자가 많을수록 생존 확률이 약간 낮아진다는 것을 시사합니다. 이는 다양한 이유가 있을 수 있습니다:
- 부모/자식 동반자가 많을 경우, 대피 과정에서 더 많은 시간과 노력이 필요할 수 있습니다.
- 가족 단위로 행동하면서 더 많은 제약이 있을 수 있습니다.
이 결과는 다른 변수들과의 상호작용이나 데이터의 특정 특성을 고려해야 더 정확히 해석될 수 있습니다. 예를 들어, 사회적 구조나 당시의 대피 상황 등도 고려할 필요가 있습니다.
추가 분석
- 다른 변수와의 상호작용: 다른 변수들과 'Parch'의 상호작용을 고려한 추가 분석을 통해 더 정확한 해석이 가능할 수 있습니다.
- 시각화: 생존율과 'Parch' 간의 관계를 시각화하여 이해를 돕는 그래프를 작성할 수 있습니다.
- 모델 개선: 다른 잠재적 요인들을 포함한 모델을 구축하여 결과를 비교해볼 수 있습니다.
- Calculate the odds ratio for 'SibSp':
# log odds ratio
sibsp_coeff = model.params['SibSp']
# Calculate the odds ratio
odds_ratio_sibsp = np.exp(sibsp_coeff)
odds_ratio_sibsp = round(odds_ratio_sibsp,3)
odds_ratio_sibsp
'SibSp' 변수의 오즈 비율(odds ratio)이 0.702로 계산된 것을 해석해보겠습니다.
로지스틱 회귀에서 오즈 비율의 의미
오즈 비율은 로지스틱 회귀 모델에서 각 독립 변수의 단위 증가가 종속 변수에 미치는 영향을 나타냅니다. 오즈 비율은 다음과 같이 해석할 수 있습니다:
- 오즈 비율이 1보다 크면, 해당 독립 변수의 증가가 종속 변수(여기서는 생존)의 발생 확률을 증가시킵니다.
- 오즈 비율이 1보다 작으면, 해당 독립 변수의 증가가 종속 변수의 발생 확률을 감소시킵니다.
- 오즈 비율이 1이면, 해당 독립 변수의 증가가 종속 변수의 발생 확률에 영향을 미치지 않습니다.
'SibSp' 변수의 오즈 비율 해석
- 오즈 비율 (odds_ratio_sibsp): 0.702
이 값은 'SibSp' 변수가 한 단위 증가할 때 생존할 오즈가 0.702배로 감소한다는 것을 의미합니다.
구체적인 해석
- 숫자적 의미:
- 'SibSp'의 오즈 비율이 0.702인 것은 형제/자매/배우자가 한 명 증가할 때 생존할 오즈가 약 0.702배로 줄어든다는 의미입니다.
- 이는 형제/자매/배우자가 한 명 증가할 때 생존 확률이 감소함을 나타냅니다.
- 실제 의미:
- 형제/자매/배우자 동반자가 많을수록 생존 가능성이 낮아질 수 있습니다.
- 이는 가족 구성원이 많을 경우, 대피 시 더 많은 혼란이 발생할 수 있고, 개인의 생존 가능성이 줄어들 수 있다는 것을 의미할 수 있습니다.
요약
- 오즈 비율: 0.702
- 해석: 형제/자매/배우자 동반자가 한 명 증가할 때 생존할 오즈가 약 0.702배로 감소합니다.
- 실제 의미: 형제/자매/배우자 동반자가 많을수록 생존 확률이 감소할 수 있습니다. 이는 대피 시 더 많은 혼란이나 제약이 발생할 수 있기 때문일 수 있습니다.
이 결과는 'SibSp' 변수가 생존에 부정적인 영향을 미친다는 것을 보여줍니다. 즉, 형제/자매/배우자가 많을수록 생존 확률이 낮아지는 경향이 있음을 시사합니다. 추가적인 분석을 통해 이러한 경향이 다른 변수들과의 상호작용이나 데이터의 특성에 의해 어떻게 영향을 받는지 더 깊이 이해할 수 있습니다.
'빅분기' 카테고리의 다른 글
[빅분기] 3유형 OLS - 선형회귀, 선형관계 검정, 귀무가 상관성 없음 (0) | 2024.06.21 |
---|---|
[빅분기] 3유형 chi2_contingency 카이 제곱 검정 (두 변수의 독립성 검정) (0) | 2024.06.21 |
[통계분석]분류 혼동 행렬 쉽게 기억하기 (0) | 2024.06.21 |
[빅분기] 3유형 대비 t-test, 분산분석, 카이제곱 검정, 회귀분석 (0) | 2024.06.19 |
[빅분기] 3유형 로지스틱 회귀 statsmodels.api / sm.Logit(y,x) (1) | 2024.06.12 |