Likelihood maximieren, Teil 2
In Teil 1 hast du eine einzelne Log-Likelihood für ein einzelnes mu berechnet. In diesem Teil 2 wendest du die vordefinierte Funktion compute_loglikelihood() an, um ein Array von Log-Likelihood-Werten zu berechnen—einen für jedes Element in einem Array möglicher mu-Werte.
Ziel ist es dann, herauszufinden, welcher einzelne mu-Wert zum maximalen Wert im Log-Likelihood-Array führt.
Zum Start verwende die vorab geladenen Daten sample_distances, sample_mean, sample_stdev und die Hilfsfunktion compute_loglikelihood().
Diese Übung ist Teil des Kurses
Einführung in lineares Modellieren mit Python
Anleitung zur Übung
- Erstelle
mu_guesses, indem du Werte umsample_meanzentrierst und mitsample_stdevstreust. - Verwende für jeden Schätzwert
mu_guessinmu_guessescompute_loglikelihood()für allesample_distancesund haltesigmafest aufsample_stdev. - Finde den maximalen Wert im Array
loglikelihoodsund nutze dessen Index, um dasbest_muaus unserenmu_guesseszu bestimmen. - Drucke
best_muaus und visualisiere es, indem du dieloglikelihoodsplottest.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)