Aan de slagBegin gratis

Likelihood maximaliseren, deel 2

In deel 1 heb je één log-likelihood berekend voor één mu. In dit deel 2 pas je de vooraf gedefinieerde functie compute_loglikelihood() toe om een array met log-likelihoodwaarden te berekenen, één voor elk element in een array met mogelijke mu-waarden.

Het doel is vervolgens te bepalen welke enkele mu-schatting leidt tot de maximale waarde in de loglikelihood-array.

Gebruik om te beginnen de vooraf ingeladen gegevens sample_distances, sample_mean, sample_stdev en de hulpfunctie compute_loglikelihood().

Deze oefening maakt deel uit van de cursus

Introductie tot lineaire modellering in Python

Bekijk cursus

Oefeninstructies

  • Stel mu_guesses samen met waarden rond sample_mean en geschaald met sample_stdev.
  • Gebruik voor elke schattingswaarde mu_guess in mu_guesses compute_loglikelihood() voor alle sample_distances, waarbij je sigma vastzet op sample_stdev.
  • Zoek de maximale waarde in de loglikelihoods-array en gebruik de index daarvan om de best_mu uit onze mu_guesses te bepalen.
  • Print de best_mu en visualiseer deze door de loglikelihoods te plotten.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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)
Code bewerken en uitvoeren