En statistiques, il est parfois utile de savoir si deux échantillons de données proviennent de la même distribution sous-jacente. Une façon de procéder consiste à utiliser le test de Kolmogorov-Smirnov à deux échantillons .
Votre tâche sera d'écrire un programme qui lit dans deux tableaux d'entiers non négatifs non triés et calcule la statistique principale utilisée dans le test.
Étant donné un tableau A
et un nombre réel x
, définissez la fonction de distribution F
en
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
Étant donné deux tableaux A1
et A2
, définissez
D(x) = |F(A1, x) - F(A2, x)|
La statistique de Kolmogorov-Smirnov à deux échantillons est la valeur maximale de D
tout réel x
.
Exemple
A1 = [1, 2, 1, 4, 3, 6]
A2 = [3, 4, 5, 4]
Alors:
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
La statistique KS pour les deux tableaux est 1/2
la valeur maximale de D
.
Cas de test
[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
Règles
- Vous pouvez écrire une fonction ou un programme complet. L'entrée peut être via STDIN ou un argument de fonction, et la sortie peut être via STDOUT ou une valeur de retour.
- Vous pouvez assumer n'importe quel format de liste ou de chaîne sans ambiguïté pour l'entrée, tant qu'il est cohérent pour les deux tableaux
- Au cas où votre langue possède une fonction intégrée pour cela, vous ne pouvez pas l'utiliser.
- Les réponses doivent être correctes à au moins 3 chiffres significatifs
- C'est du code-golf , donc le programme dans le moins d'octets gagne
A
sont ci-dessous length(A)
?)