Maximera sannolikheten, del 2
I del 1 beräknade du ett enskilt log-sannolikhetsvärde för ett enskilt mu. I del 2 använder du den fördefinierade funktionen compute_loglikelihood() för att beräkna en array med log-sannolikhetsvärden – ett för varje element i en array med möjliga mu-värden.
Målet är sedan att avgöra vilket enskilt mu-gissning som ger det maximala värdet i log-sannolikhetsmatrisen.
Använd de förinlästa variablerna sample_distances, sample_mean, sample_stdev och hjälpfunktionen compute_loglikelihood() för att komma igång.
Den här övningen är en del av kursen
Introduktion till linjär modellering i Python
Övningsinstruktioner
- Konstruera
mu_guessesgenom att ta värden centrerade kringsample_meanoch spridda medsample_stdev. - För varje gissningsvärde
mu_guessimu_guesses, användcompute_loglikelihood()för allasample_distancesmedsigmafixerat tillsample_stdev. - Hitta det maximala värdet i arrayen
loglikelihoodsoch använd dess index för att hittabest_mufrånmu_guesses. - Skriv ut
best_muoch visualisera resultatet genom att plottaloglikelihoods.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)