始める無料で始める

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

メジャーリーグベースボールの近代(1901–2015)における、各ノーヒッターの間に行われた試合数は配列 nohitter_times に保存されています。

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

このパラメータの値をデータから計算してください。次に、見つけた \(\tau\) をもつ指数分布からノーヒッター間隔をサンプリングすることで、np.random.exponential() を使ってメジャーリーグの「歴史を再現」し、得られたヒストグラムを PDF の近似としてプロットしましょう。

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

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

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

コースを見る

演習の手順

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