【python】コルモゴロフ-スミルノフ検定を実施し、カテゴリ別で分布に差がある変数を探す
コルモゴロフ-スミルノフ検定を実施し、生存、死亡の差がある分布を探す
kaggleのブログで見つけたコルモゴロフ-スミルノフ検定の使用例を勉強するためにメモしておきます。
良品・不良品間でどの変数が分布に差があるか検討するときに使えそう。
#コルモゴロフ-スミルノフ検定を実施し、生存、死亡の差がある分布を探す import numpy as np import pandas as pd from scipy.stats import ks_2samp path = "C:/XXXXXXX/titanic" train = pd.read_csv(path + "/train.csv") test = pd.read_csv(path + "/test.csv") #数値型のみ列を抜き出す print (train.select_dtypes(include='number').columns) number_col = train.select_dtypes(include='number').columns number_col2 = set(number_col)-set(['PassengerId','Survived']) print (number_col2) list_p_value =[] for i in range(len(number_col2)): train_0 = train.loc[train['Survived'] == 0] train_0 = train_0[list(number_col2)[i]] train_1 = train.loc[train['Survived'] == 1] train_1 = train_1[list(number_col2)[i]] list_p_value.append(ks_2samp(train_0, train_1)[1]) Se = pd.Series(list_p_value, index = number_col2).sort_values() print (Se) print ('0.1以上で死者・生存者間で差があるとは言えない') print ('0.1以下で死者・生存者間で差がある') list_discarded = list(Se[Se < .1].index) print (list_discarded)