K-S-replicaten trekken
Nu heb je een functie nodig om Kolmogorov–Smirnov-replicaten te trekken uit een doeldistributie, f. Schrijf hiervoor een functie met de signatuur draw_ks_reps(n, f, args=(), size=10000, n_reps=10000). Hier is n het aantal datapunten, en f is de functie die je gebruikt om steekproeven te genereren uit de doel-CDF. Als je bijvoorbeeld wilt toetsen tegen een Exponential-verdeling, geef je np.random.exponential door als f. Deze functie neemt meestal argumenten aan, die je als een tuple moet doorgeven. Dus als je steekproeven wilt nemen uit een Exponential-verdeling met gemiddelde x_mean, gebruik je het keyword args=(x_mean,). De keyword-argumenten size en n_reps geven respectievelijk het aantal te nemen samples uit de doeldistributie en het aantal te trekken replicaten aan.
Deze oefening maakt deel uit van de cursus
Casestudies in statistisch denken
Oefeninstructies
- Schrijf een functie met de signatuur
draw_ks_reps(n, f, args=(), size=10000, n_reps=10000)die het volgende doet.- Genereer
sizesamples uit de doeldistributief. Vergeet niet dat je deargsmoet doorgeven aan de samplingfunctie met de constructief(*args, size=size). Sla het resultaat op alsx_f. - Initialiseer de replicatenarray,
reps, als een lege array metn_repselementen. - Schrijf een
for-lus die het volgenden_repskeer doet.- Trek
nsamples uitf. Gebruik opnieuw*argsin je functieaanroep. Sla het resultaat op in de variabelex_samp. - Bereken de K-S-statistiek met
dcst.ks_stat(), de functie die je in de vorige oefening hebt geschreven en die handig is opgeslagen in de moduledcst. Sla het resultaat op in de arrayreps.
- Trek
- Retourneer de array
reps.
- Genereer
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
____ ____:
# Generate samples from target distribution
x_f = ____
# Initialize K-S replicates
reps = ____
# Draw replicates
for i in range(n_reps):
# Draw samples for comparison
x_samp = ____
# Compute K-S statistic
____[i] = ____
return reps