Search

점 이연 상관계수

연속 변수이진 변수 사이의 상관 관계를 측정하는 방법
피어슨 상관계수와 유사하지만, 이진 변수를 고려한 것이 특징이다.

Scipy의 pointbiserialr

from scipy.stats import pointbiserialr correlation_org_lst, correlation_dealout_lst = [], [] p_value_org_lst, p_value_dealout_lst = [], [] feature_lst = train.columns[1:-1].to_list() # 점 이연 상관계수 계산 및 출력 for feature in feature_lst: correlation_org, p_value_org = pointbiserialr(train[feature], train['Outcome']) correlation_org_lst.append(correlation_org) p_value_org_lst.append(p_value_org) # 데이터프레임 생성 correlation_dict = {'Feature': feature_lst, 'correlation_org': correlation_org_lst, 'p_value_org' : p_value_org_lst} correlation_df = pd.DataFrame(correlation_dict) display(correlation_df)
Python
복사
Feature
correlation_org
p_value_org
Pregnancies
0.211340
5.102077e-08
Glucose
0.460108
1.798069e-35
BloodPressure
0.049459
2.072204e-01
SkinThickness
0.052094
1.840018e-01
Insulin
0.123246
1.616097e-03
BMI
0.294390
1.676326e-14
DiabetesPedigreeFunction
0.173584
8.283545e-06
Age
0.218183
1.818929e-08

점 이연 상관관계 시각화

import matplotlib.pyplot as plt import seaborn as sns # Seaborn barplot plt.figure(figsize=(16, 8)) plt.subplot(2,2,1) sns.barplot(x='Feature', y='correlation_org', data=correlation_df) plt.gca().set_title("Point Biserial Correlation [original train]") plt.gca().set_xticklabels(feature_lst, rotation=30) plt.subplot(2,2,2) sns.barplot(x='Feature', y='p_value_org', data=correlation_df) plt.gca().set_xticklabels(feature_lst, rotation=30) plt.gca().set_title("p_value [original train]") plt.show()
Python
복사
BloodPressure과 Skin Thickness 변수를 제외하고 나머지 변수들에 대해서는 타겟 변수와 유의미한 상관관계가 있다고 판단할 수 있다.