0

任意の 2 つのサンプルの CDF 間の最大距離を計算するks テスト (2 サンプル)の scipy コードを実行していました。累積分布関数を計算するためのコード(CDF)

cdf を計算するための行のロジックを理解できません。最初にdata1anddata2をソートしてから、 と の両方でnp.searchsortedの位置を見つけようとしています。は sortedとの連結に他なりません。data_alldata1data2data_alldata1data2

data2の最小値が 未満の場合はどうでしょうかdata1cdfそれは値とともに減少してはならないという仮定に違反していませんか

data_all = np.concatenate([data1,data2])
cdf1 = np.searchsorted(data1,data_all,side='right')/(1.0*n1)
cdf2 = (np.searchsorted(data2,data_all,side='right'))/(1.0*n2)
4

1 に答える 1

0

一般にソートされていないのは事実ですdata_allが、これは計算には関係ありません。

  • 配列cdf1は、各ポイントで計算された最初のサンプルの CDF の値を保持します。data_all
  • 配列cdf2は、各ポイントで計算された 2 番目のサンプルの CDF の値を保持します。data_all

次に、コードは

np.max(np.absolute(cdf1 - cdf2))

これらの差の最大を取る。数の最大値を見つけるとき、それらをどの順序で見ても問題ありません。

したがって、これら 2 つの配列の順序は、一貫している限り問題になりません。cdf1[42]はある時点での CDF1 の値であり、 は同じ時点でcdf2[42]の CDF2 の値です。

于 2018-08-03T00:51:44.390 に答える