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 Aet un nombre réel x, définissez la fonction de distribution Fen
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
Étant donné deux tableaux A1et A2, définissez
D(x) = |F(A1, x) - F(A2, x)|
La statistique de Kolmogorov-Smirnov à deux échantillons est la valeur maximale de Dtout 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/2la 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
Asont ci-dessous length(A)?)