Beräkna värdet av en formell ECDF
För att kunna utföra Kolmogorov-Smirnov-testet behöver vi beräkna värdet av en formell ECDF i godtyckliga punkter. Vi behöver alltså en funktion, ecdf_formal(x, data), som returnerar värdet av den formella ECDF:en – härledd från datamängden data – för varje värde i arrayen x. Två av funktionerna nedan gör detta. En gör det inte. Av de två som beräknar rätt är dessutom en snabbare än den andra. Märk upp varje funktion.
Som påminnelse: ECDF definieras formellt som ECDF(x) = (antal sampel ≤ x) / (totalt antal sampel). Du kanske också vill titta på dokumentationssträngen för 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)
Den här övningen är en del av kursen
Fallstudier i statistiskt tänkande
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen