In statistica, a volte è utile sapere se due campioni di dati provengono dalla stessa distribuzione sottostante. Un modo per farlo è utilizzare il test di Kolmogorov-Smirnov a due campioni .
Il tuo compito sarà quello di scrivere un programma che legge in due array di numeri interi non negativi non ordinati e calcola la statistica principale utilizzata nel test.
Dato un array A
e un numero reale x
, definire la funzione di distribuzione F
da
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
Dati due array A1
e A2
, definire
D(x) = |F(A1, x) - F(A2, x)|
La statistica a due campioni di Kolmogorov-Smirnov è il valore massimo di D
tutto il reale x
.
Esempio
A1 = [1, 2, 1, 4, 3, 6]
A2 = [3, 4, 5, 4]
Poi:
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 statistica KS per i due array è 1/2
il valore massimo di D
.
Casi 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
Regole
- È possibile scrivere una funzione o un programma completo. L'ingresso può essere tramite STDIN o argomento della funzione e l'output può essere tramite STDOUT o valore di ritorno.
- È possibile assumere qualsiasi elenco o formato di stringa non ambiguo per l'input, purché sia coerente per entrambi gli array
- Nel caso in cui la tua lingua sia integrata per questo, non puoi usarla.
- Le risposte devono essere corrette per almeno 3 cifre significative
- Questo è code-golf , quindi vince il programma nel minor numero di byte
A
sono sotto length(A)
?)