K-S-Statistik berechnen
Schreibe eine Funktion, die die Kolmogorov-Smirnov-Statistik aus zwei Datensätzen data1 und data2 berechnet, wobei data2 aus Stichproben der theoretischen Verteilung besteht, mit der du deine Daten vergleichst. Beachte, dass wir damit Hacker-Stats verwenden, um die K-S-Statistik für einen Datensatz und eine theoretische Verteilung zu berechnen — nicht die K-S-Statistik für zwei empirische Datensätze. Praktischerweise ist die Funktion, die du gerade zum Berechnen der Werte der formalen ECDF ausgewählt hast, dcst.ecdf_formal().
Diese Übung ist Teil des Kurses
Fallstudien zum statistischen Denken
Anleitung zur Übung
- Berechne die Werte der konvexen Ecken der formalen ECDF für
data1mitdcst.ecdf(). Speichere die Ergebnisse in den Variablenxundy. - Verwende
dcst.ecdf_formal(), um die Werte der theoretischen CDF, bestimmt durchdata2, an den konvexen Eckenxzu berechnen. Speichere das Ergebnis in der Variablencdf. - Berechne die Abstände zwischen den konkaven Ecken der formalen ECDF und der theoretischen CDF. Speichere das Ergebnis als
D_top. - Berechne den Abstand zwischen den konvexen Ecken der formalen ECDF und der theoretischen CDF. Beachte, dass du
1/len(data1)vonyabziehen musst, um deny-Wert an der konvexen Ecke zu erhalten. Speichere das Ergebnis inD_bottom. - Gib die K-S-Statistik als Maximum aller Einträge in
D_topundD_bottomzurück. Du kannstD_topundD_bottomzusammen als Tuple annp.max()übergeben.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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))