Vizualizace permutačního vzorkování
Abys lépe pochopil/a, jak permutační vzorkování funguje, v tomto cvičení vygeneruješ permutační vzorky a prohlédneš si je graficky.
Opět použijeme data ze stanice Sheffield Weather Station, tentokrát se zaměříme na měsíční srážky v červnu (suchý měsíc) a v listopadu (mokrý měsíc). Předpokládáme, že jejich rozdělení se může lišit, takže pomocí permutačních vzorků zjistíme, jak by jejich ECDF vypadaly, kdyby měly stejné rozdělení.
Data jsou uložena v NumPy polích rain_june a rain_november.
Pro připomenutí: permutation_sample() má signaturu permutation_sample(data_1, data_2) a vrací permuted_data[:len(data_1)], permuted_data[len(data_1):], kde permuted_data = np.random.permutation(np.concatenate((data_1, data_2))).
Toto cvičení je součástí kurzu
Statistical Thinking in Python (Part 2)
Pokyny k cvičení
- Napiš cyklus
for, který vygeneruje 50 permutačních vzorků, vypočítá jejich ECDF a vykreslí je.- Pomocí funkce
permutation_sample()vygeneruj dvojici permutačních vzorků zrain_junearain_november. - Pro každý ze dvou permutačních vzorků vygeneruj hodnoty
xaypro ECDF pomocí funkceecdf(). - Vykresli ECDF prvního permutačního vzorku (
x_1ay_1) jako tečky. Totéž proveď pro druhý permutační vzorek (x_2ay_2).
- Pomocí funkce
- Vygeneruj hodnoty
xaypro ECDF datrain_junearain_novembera vykresli tyto ECDF s použitím klíčových argumentůcolor='red', resp.color='blue'. - Označ osy, nastav 2% okraj a zobraz graf. To už je připraveno za tebe – stačí kliknout na Submit!
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
for _ in ____:
# Generate permutation samples
perm_sample_1, perm_sample_2 = ____
# Compute ECDFs
x_1, y_1 = ____
x_2, y_2 = ____
# Plot ECDFs of permutation sample
_ = plt.plot(____, ____, marker='.', linestyle='none',
color='red', alpha=0.02)
_ = plt.plot(____, ____, marker='.', linestyle='none',
color='blue', alpha=0.02)
# Create and plot ECDFs from original data
x_1, y_1 = ____
x_2, y_2 = ____
_ = plt.plot(x_1, y_1, marker='.', linestyle='none', color='red')
_ = plt.plot(x_2, y_2, marker='.', linestyle='none', color='blue')
# Label axes, set margin, and show plot
plt.margins(0.02)
_ = plt.xlabel('monthly rainfall (mm)')
_ = plt.ylabel('ECDF')
plt.show()