K-S 統計量の計算
2つのデータセット data1 と data2 からコルモゴロフ・スミルノフ統計量を計算する関数を作成しましょう。ここで data2 は、比較対象となる理論分布からのサンプルで構成されています。つまり、2つの経験的データセット間ではなく、データセットと理論分布の間の K-S 統計量をハッカー統計を使って計算することになります。なお、正式な ECDF の値を計算するために先ほど選んだ関数は、dcst.ecdf_formal() として利用できます。
この演習はコースの一部です
統計的思考 ケーススタディ
演習の手順
dcst.ecdf()を使って、data1の正式な ECDF における凸角の値を計算します。結果を変数xとyに格納してください。dcst.ecdf_formal()を使って、data2から決定される理論的な CDF の値を、凸角xにおいて計算します。結果を変数cdfに格納してください。- 正式な ECDF の凹角と理論的な CDF の間の距離を計算します。結果を
D_topに格納してください。 - 正式な ECDF の凸角と理論的な CDF の間の距離を計算します。凸角の
y値を得るには、yから1/len(data1)を引く必要がある点に注意してください。結果をD_bottomに格納してください。 D_topとD_bottomのすべての要素の最大値を K-S 統計量として返します。これには、D_topとD_bottomをタプルとしてnp.max()に渡す方法が使えます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def ks_stat(data1, data2):
# Compute ECDF from data: x, y
# Compute corresponding values of the target CDF
cdf = ____
# Compute distances between concave corners and CDF
D_top = ____ - ____
# Compute distance between convex corners and CDF
D_bottom = ____ - ____ + ____/____
return np.max((D_top, D_bottom))