始める無料で始める

尤度の最大化(パート2)

パート1では、単一の mu に対する単一の対数尤度を計算しました。パート2では、あらかじめ用意された関数 compute_loglikelihood() を使って、候補となる mu配列の各要素に対して、対数尤度の配列を計算します。

目標は、loglikelihood 配列の値を最大にする、ただ1つの mu の推定値を見つけることです。

はじめに、プリロード済みのデータ sample_distancessample_meansample_stdev と、補助関数 compute_loglikelihood() を使用します。

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

Pythonで学ぶ線形モデリング入門

コースを見る

演習の手順

  • sample_mean を中心に、sample_stdev の広がりで値を取るようにして mu_guesses を作成します。
  • mu_guesses の各推定値 mu_guess について、sigmasample_stdev に固定し、すべての sample_distances に対して compute_loglikelihood() を使います。
  • loglikelihoods 配列の最大値を見つけ、そのインデックスから mu_guesses の中の best_mu を取得します。
  • best_mu を表示し、loglikelihoods をプロットして可視化します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create an array of mu guesses, centered on sample_mean, spread out +/- by sample_stdev
low_guess = sample_mean - 2*sample_stdev
high_guess = sample_mean + 2*sample_stdev
mu_guesses = np.linspace(____, ____, 101)

# Compute the loglikelihood for each model created from each guess value
loglikelihoods = np.zeros(len(mu_guesses))
for n, mu_guess in enumerate(____):
    loglikelihoods[n] = compute_loglikelihood(____, mu=____, sigma=sample_stdev)

# Find the best guess by using logical indexing, the print and plot the result
best_mu = mu_guesses[loglikelihoods==np.max(____)]
print('Maximum loglikelihood found for best mu guess={}'.format(____))
fig = plot_loglikelihoods(mu_guesses, loglikelihoods)
コードを編集して実行