Kaggleなどで行われるデータ探索について、わからないことがあったので質問いたします。
(厳密には、このコードは後述するコンペで実際に使われたものではありません。「学んだやり方をコンペのデータセットに当てはめてやってみた」、というだけですので、もしかしたら違和感があるかもしれません。)
値の補足
months :Total number of months in service
churn :Instance of churn between 31-60 days after observation date
適当なパラメータでLightGBMを使った二値予測(0,1)を行い、その特徴量を可視化しました。
lgb.plot_importance(model, height=0.5, figsize=(30,40))
機会学習に寄与していると思われる上位5つの特徴量を検討するにあたって、平均値や中央値、データの分布を確認しています。”months”の部分を変えるだけなので、他4つは省略します。
df.groupby(["churn"])["months"].mean() churn 0 18.633074 1 19.038457 Name: months, dtype: float64
df.groupby(["churn"])["months"].median() churn 0 16 1 17 Name: months, dtype: int64
df.groupby('churn')['months'].plot.hist(bins=20, alpha=0.5, legend=True) churn 0 AxesSubplot(0.125,0.125;0.775x0.755) 1 AxesSubplot(0.125,0.125;0.775x0.755) Name: months, dtype: object
そして、解約の有無でウィルコクソンの順位和検定を有意水準を5%とし、2群の中央値に有意差が見られるか検討しているようです。
from scipy import stats s, pvalue = stats.mannwhitneyu(df[df["churn"]==1]["months"] , df[df["churn"]==0]["months"] ,alternative='two-sided') pvalue < 0.05 True
コードの説明には、有意差があることを確認できれば、説明変数(ここでいうmonths)が高い(もしくは低い)ほど、解約率(churn)は高く(もしくは低く)なることがわかる、といった趣旨のことが書いてありました。
私の疑問は以下の3点です。
1,この平均値や中央値の値は何を示しているのでしょうか。0、即ち解約されていない状態でのmonthsの平均値と、1、解約されてしまった状態のmonthsとの平均値の間で差が生まれていれば、churnとmonthsの比例関係のようなものが見えてくるのかな、などと直観的に考えたのですが、これは正しいでしょうか。正しい場合、平均値も中央値もあまり差がないため、そのような関係が見えない、となってしまう気がします。
- ヒストグラムで着目すべき点はどこなのでしょうか。0と1の二色のヒストグラムはほとんど同じ分布を描いていますよね。やはり有意差はないということなのでしょうか。
3,ウィルコクソンの順位和検定、なるものは全く仕組みを知らないのですが、有意水準5%を検定してみて、Trueと出たのならばそれは有意差があるものだとみなしてよいのでしょうか。(その場合、1で立てた仮説と矛盾してしまいますが...)
Python初学者かつヒストグラムの読み方やカイ二乗検定をギリギリ知ってるという程度の統計知識しかないのですが、お答えいただけると幸いです。
よろしくお願いいたします。
Kaggle-Telecom customer
https://www.kaggle.com/abhinav89/telecom-customer
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/10 10:31
2022/01/10 11:04