正式なECDFの値を計算する
コルモゴロフ-スミルノフ検定を行うには、任意の点における正式なECDFの値を計算する必要があります。つまり、データセット data から導出した正式なECDFの値を、配列 x の各値に対して返す関数 ecdf_formal(x, data) が必要です。以下の3つの関数のうち、正しく計算できるものが2つ、できないものが1つあります。また、正しい2つのうち、一方はもう一方より高速です。それぞれにラベルを付けましょう。
参考として、ECDFの正式な定義は ECDF(x) = (x 以下のサンプル数) / (サンプルの総数) です。また、np.searchsorted() のドキュメント文字列も確認してみてください。
a)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x) / len(data)
b)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x, side='right') / len(data)
c)
def ecdf_formal(x, data):
output = np.empty(len(x))
data = np.sort(data)
for i, x_val in x:
j = 0
while j < len(data) and x_val >= data[j]:
j += 1
output[i] = j
return output / len(data)
この演習はコースの一部です
