Calcolare il valore di una ECDF formale
Per poter eseguire il test di Kolmogorov–Smirnov, dobbiamo calcolare il valore di una ECDF formale in punti arbitrari. In altre parole, ci serve una funzione, ecdf_formal(x, data), che restituisca il valore della ECDF formale ricavata dall'insieme di dati data per ciascun valore nell'array x. Due delle funzioni lo fanno correttamente. Una no. Delle due corrette, una è più veloce. Etichettale.
Come promemoria, la ECDF è definita formalmente come ECDF(x) = (numero di campioni ≤ x) / (numero totale di campioni). Potresti anche voler controllare la docstring di np.searchsorted().
a)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x) / len(data)
b)
def ecdf_formal(x, data):
return np.searchsorted(np.sort(data), x, side='right') / len(data)
c)
def ecdf_formal(x, data):
output = np.empty(len(x))
data = np.sort(data)
for i, x_val in x:
j = 0
while j < len(data) and x_val >= data[j]:
j += 1
output[i] = j
return output / len(data)
Questo esercizio fa parte del corso
Casi di studio nel pensiero statistico
esercizio interattivo pratico
Trasforma la teoria in pratica con uno dei nostri esercizi interattivi
Inizia esercizio