Kom igångKom igång gratis

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

Visa kurs

Interaktiv övning med praktiskt arbete

Gör teori till handling med en av våra interaktiva övningar

Starta övningen