ノーヒッターはどのくらいの頻度で起こる?
メジャーリーグベースボールの現代(1901〜2015年)において、ノーヒッターとノーヒッターの間に行われた試合数が、配列 nohitter_times に格納されています。
ノーヒッターがポアソン過程に従うと仮定すると、ノーヒッターの間隔は指数分布に従います。指数分布には1つのパラメータがあり、ここでは $\tau\((典型的な間隔時間)と呼びます。データに最もよく当てはまる \)\tau$ の値は、ノーヒッター間の平均間隔時間(時間の単位は試合数)です。
データからこのパラメータの値を計算しましょう。次に、np.random.exponential() を使い、求めた \(\tau\) を持つ指数分布からノーヒッター間の時間をサンプリングすることで、メジャーリーグの歴史を「再現」し、PDF の近似としてヒストグラムを描きましょう。
NumPy、pandas、matplotlib.pyplot、seaborn はそれぞれ np、pd、plt、sns としてインポート済みです。
この演習はコースの一部です
Pythonで学ぶ統計思考(パート2)
演習の手順
- 乱数生成器を
42でシードします。 - ノーヒッター間の平均時間(単位:試合数)を計算します。
- ノーヒッター間の平均時間から求めたパラメータを使い、指数分布から 100,000 個のサンプルを生成します。
plt.hist()を使って理論的な PDF をプロットします。キーワード引数bins=50、density=True、histtype='step'を忘れずに指定し、軸にラベルを付けましょう。- グラフを表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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()