始める無料で始める

ノーヒッターはどのくらいの頻度で起こる?

メジャーリーグベースボールの現代(1901〜2015年)において、ノーヒッターとノーヒッターの間に行われた試合数が、配列 nohitter_times に格納されています。

ノーヒッターがポアソン過程に従うと仮定すると、ノーヒッターの間隔は指数分布に従います。指数分布には1つのパラメータがあり、ここでは $\tau\((典型的な間隔時間)と呼びます。データに最もよく当てはまる \)\tau$ の値は、ノーヒッター間の平均間隔時間(時間の単位は試合数)です。

データからこのパラメータの値を計算しましょう。次に、np.random.exponential() を使い、求めた \(\tau\) を持つ指数分布からノーヒッター間の時間をサンプリングすることで、メジャーリーグの歴史を「再現」し、PDF の近似としてヒストグラムを描きましょう。

NumPy、pandas、matplotlib.pyplot、seaborn はそれぞれ nppdpltsns としてインポート済みです。

この演習はコースの一部です

Pythonで学ぶ統計思考(パート2)

コースを見る

演習の手順

  • 乱数生成器を 42 でシードします。
  • ノーヒッター間の平均時間(単位:試合数)を計算します。
  • ノーヒッター間の平均時間から求めたパラメータを使い、指数分布から 100,000 個のサンプルを生成します。
  • plt.hist() を使って理論的な PDF をプロットします。キーワード引数 bins=50density=Truehisttype='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()
コードを編集して実行