始める無料で始める

K-S 統計量の計算

2つのデータセット data1data2 からコルモゴロフ・スミルノフ統計量を計算する関数を作成しましょう。ここで data2 は、比較対象となる理論分布からのサンプルで構成されています。つまり、2つの経験的データセット間ではなく、データセットと理論分布の間の K-S 統計量をハッカー統計を使って計算することになります。なお、正式な ECDF の値を計算するために先ほど選んだ関数は、dcst.ecdf_formal() として利用できます。

この演習はコースの一部です

統計的思考 ケーススタディ

コースを見る

演習の手順

  • dcst.ecdf() を使って、data1 の正式な ECDF における凸角の値を計算します。結果を変数 xy に格納してください。
  • dcst.ecdf_formal() を使って、data2 から決定される理論的な CDF の値を、凸角 x において計算します。結果を変数 cdf に格納してください。
  • 正式な ECDF の凹角と理論的な CDF の間の距離を計算します。結果を D_top に格納してください。
  • 正式な ECDF の凸角と理論的な CDF の間の距離を計算します。凸角の y 値を得るには、y から 1/len(data1) を引く必要がある点に注意してください。結果を D_bottom に格納してください。
  • D_topD_bottom のすべての要素の最大値を K-S 統計量として返します。これには、D_topD_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))
コードを編集して実行