En estadística, a veces es útil saber si dos muestras de datos provienen de la misma distribución subyacente. Una forma de hacerlo es usar la prueba de Kolmogorov-Smirnov de dos muestras .
Su tarea será escribir un programa que lea en dos conjuntos enteros no negativos no clasificados y calcule la estadística principal utilizada en la prueba.
Dada una matriz Ay un número real x, defina la función de distribución Fpor
F(A,x) = (#number of elements in A less than or equal to x)/(#number of elements in A)
Dadas dos matrices A1y A2, definir
D(x) = |F(A1, x) - F(A2, x)|
La estadística de Kolmogorov-Smirnov de dos muestras es el valor máximo de Dtodo real x.
Ejemplo
A1 = [1, 2, 1, 4, 3, 6]
A2 = [3, 4, 5, 4]
Luego:
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 estadística KS para las dos matrices es 1/2el valor máximo de D.
Casos de prueba
[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
Reglas
- Puede escribir una función o un programa completo. La entrada puede ser a través de STDIN o argumento de función, y la salida puede ser a través de STDOUT o valor de retorno.
- Puede asumir cualquier formato de lista o cadena inequívoco para la entrada, siempre que sea coherente para ambas matrices
- En caso de que su idioma tenga algo incorporado para esto, no puede usarlo.
- Las respuestas deben ser correctas para al menos 3 cifras significativas
- Este es el código de golf , por lo que el programa en la menor cantidad de bytes gana
Aestán debajo length(A)?)