Calcolare la statistica K-S
Scrivi una funzione per calcolare la statistica di Kolmogorov-Smirnov a partire da due insiemi di dati, data1 e data2, in cui data2 contiene campioni dalla distribuzione teorica con cui stai confrontando i tuoi dati. Nota che questo significa che stiamo usando gli hacker stats per calcolare la statistica K-S tra un insieme di dati e una distribuzione teorica, non la statistica K-S tra due insiemi di dati empirici. Comodamente, la funzione che hai appena selezionato per calcolare i valori della ECDF formale è dcst.ecdf_formal().
Questo esercizio fa parte del corso
Casi di studio nel pensiero statistico
Istruzioni dell'esercizio
- Calcola i valori degli spigoli convessi della ECDF formale per
data1usandodcst.ecdf(). Salva i risultati nelle variabilixey. - Usa
dcst.ecdf_formal()per calcolare i valori della CDF teorica, determinata dadata2, agli spigoli convessix. Salva il risultato nella variabilecdf. - Calcola le distanze tra gli spigoli concavi della ECDF formale e la CDF teorica. Salva il risultato come
D_top. - Calcola la distanza tra gli spigoli convessi della ECDF formale e la CDF teorica. Nota che dovrai sottrarre
1/len(data1)dayper ottenere il valore diyallo spigolo convesso. Salva il risultato inD_bottom. - Restituisci la statistica K-S come massimo di tutte le voci in
D_topeD_bottom. Puoi passareD_topeD_bottominsieme come una tupla anp.max()per farlo.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
def ks_stat(data1, data2):
# Compute ECDF from data: x, y
# Compute corresponding values of the target CDF
cdf = ____
# Compute distances between concave corners and CDF
D_top = ____ - ____
# Compute distance between convex corners and CDF
D_bottom = ____ - ____ + ____/____
return np.max((D_top, D_bottom))