De waarde van een formele ECDF berekenen
Om de Kolmogorov–Smirnov-toets te kunnen doen, moeten we de waarde van een formele ECDF op willekeurige punten kunnen berekenen. Met andere woorden: we hebben een functie ecdf_formal(x, data) nodig die voor elke waarde in de array x de waarde geeft van de formele ECDF die is afgeleid van de gegevensset data. Twee van de functies doen dit. Eén niet. Van de twee die het correct berekenen, is er één sneller. Label ze elk.
Ter herinnering: de ECDF is formeel gedefinieerd als ECDF(x) = (aantal steekproeven ≤ x) / (totaal aantal steekproeven). Kijk ook eens naar de docstring van 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)
Deze oefening maakt deel uit van de cursus
Casestudies in statistisch denken
Praktische interactieve oefening
Zet theorie om in actie met een van onze interactieve oefeningen.
Begin met trainen