最大化概似,第 2 部分
在第 1 部分中,你為單一的 mu 計算了一個對數概似值。這個第 2 部分中,你會套用預先定義的函式 compute_loglikelihood(),為一個可能 mu 值的陣列中的每個元素,各自計算一個對數概似值,因此得到一個對數概似值的陣列。
接下來的目標是找出哪一個 mu 猜測,會對應到整個對數概似陣列中的最大值。
請使用已載入的資料 sample_distances、sample_mean、sample_stdev,以及輔助函式 compute_loglikelihood() 開始進行。
本練習屬於課程
Python 線性建模入門
練習說明
- 以
sample_mean為中心,並以sample_stdev為擴散範圍,建立mu_guesses。 - 對於
mu_guesses中的每個猜測值mu_guess,在固定sigma為sample_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)