統計では、2つのデータサンプルが同じ基礎分布からのものかどうかを知ることが役立つ場合があります。これを行う1つの方法は、2サンプルのKolmogorov-Smirnov検定を使用することです。
あなたの仕事は、ソートされていない2つの非負整数配列を読み取り、テストで使用される主な統計を計算するプログラムを作成することです。
配列を指定Aし、実数x、分布関数を定義するFことにより、
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
与えられた2つの配列A1とA2を定義します
D(x) = |F(A1, x) - F(A2, x)|
2サンプルのコルモゴロフ-スミルノフ統計は、Dすべての実数の最大値ですx。
例
A1 = [1, 2, 1, 4, 3, 6]
A2 = [3, 4, 5, 4]
次に:
D(1) = |2/6 - 0| = 1/3
D(2) = |3/6 - 0| = 1/2
D(3) = |4/6 - 1/4| = 5/12
D(4) = |5/6 - 3/4| = 1/12
D(5) = |5/6 - 4/4| = 1/6
D(6) = |6/6 - 4/4| = 0
2つの配列のKS統計は1/2、の最大値ですD。
テストケース
[0] [0] -> 0.0
[0] [1] -> 1.0
[1, 2, 3, 4, 5] [2, 3, 4, 5, 6] -> 0.2
[3, 3, 3, 3, 3] [5, 4, 3, 2, 1] -> 0.4
[1, 2, 1, 4, 3, 6] [3, 4, 5, 4] -> 0.5
[8, 9, 9, 5, 5, 0, 3] [4, 9, 0, 5, 5, 0, 4, 6, 9, 10, 4, 0, 9] -> 0.175824
[2, 10, 10, 10, 1, 6, 7, 2, 10, 4, 7] [7, 7, 9, 9, 6, 6, 5, 2, 7, 2, 8] -> 0.363636
ルール
- 関数または完全なプログラムを作成できます。入力はSTDINまたは関数引数を介して行われ、出力はSTDOUTまたは戻り値を介して行われます。
- 両方の配列で一貫している限り、入力に対して明確なリストまたは文字列形式を想定できます。
- あなたの言語がこのために組み込まれているという偶然に、あなたはそれを使わないかもしれません。
- 回答は少なくとも3つの有効数字に対して正しい必要があります
- これはcode-golfなので、最小バイトのプログラムが勝ちます
Aは以下length(A)ですか?)