Jak często zdarzają się mecze bez przebicia?
Liczba meczów rozegranych między kolejnymi meczami bez przebicia (no-hitter) w nowoczesnej erze Major League Baseball (1901–2015) jest zapisana w tablicy nohitter_times.
Jeśli założymy, że mecze bez przebicia opisuje proces Poissona, to czas między nimi ma rozkład wykładniczy. Jak już wiesz, rozkład wykładniczy ma jeden parametr – nazwiemy go \(\tau\) – oznaczający typowy czas między zdarzeniami. Wartość parametru \(\tau\), która najlepiej dopasowuje rozkład wykładniczy do danych, to średni czas między meczami bez przebicia (gdzie czas wyrażony jest w liczbie meczów).
Oblicz wartość tego parametru na podstawie danych. Następnie użyj np.random.exponential(), aby "odtworzyć" historię Major League Baseball – wylosuj czasy między meczami bez przebicia z rozkładu wykładniczego z obliczonym \(\tau\) i narysuj histogram jako przybliżenie funkcji gęstości prawdopodobieństwa (PDF).
Biblioteki NumPy, pandas, matplotlib.pyplot i seaborn zostały zaimportowane jako np, pd, plt i sns.
To ćwiczenie jest częścią kursu
Myślenie statystyczne w Pythonie (część 2)
Instrukcje do ćwiczenia
- Zainicjuj generator liczb losowych wartością
42. - Oblicz średni czas (wyrażony w liczbie meczów) między meczami bez przebicia.
- Wylosuj 100 000 próbek z rozkładu wykładniczego z parametrem obliczonym na podstawie średniego czasu między meczami bez przebicia.
- Narysuj teoretyczną funkcję gęstości prawdopodobieństwa (PDF) za pomocą
plt.hist(). Pamiętaj, aby użyć argumentów kluczowychbins=50,normed=Trueihisttype='step'. Nie zapomnij opisać osi. - Wyświetl wykres.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Seed random number generator
____
# Compute mean no-hitter time: tau
tau = ____
# Draw out of an exponential distribution with parameter tau: inter_nohitter_time
inter_nohitter_time = ____(____, 100000)
# Plot the PDF and label axes
_ = ____(inter_nohitter_time,
____, ____, ____)
_ = plt.xlabel('Games between no-hitters')
_ = plt.ylabel('PDF')
# Show the plot
plt.show()