Modellskattning och sannolikhet

Introduktion till linjär modellering i Python

Jason Vestuto

Data Scientist

Skattning

Graf med histogram, normaliserade antal mot avståndsintervall, data som grå staplar och modell som röd gaussisk klockformad kurva som passar nära toppen av de grå staplarna

Introduktion till linjär modellering i Python

Skattning

# Define gaussian model function
def gaussian_model(x, mu, sigma):
    coeff_part = 1/(np.sqrt(2 * np.pi * sigma**2))
    exp_part = np.exp( - (x - mu)**2 / (2 * sigma**2) )
    return coeff_part*exp_part
# Compute sample statistics
mean = np.mean(sample)
stdev = np.std(sample)
# Model the population using sample statistics
population_model = gaussian(sample, mu=mean, sigma=stdev)
Introduktion till linjär modellering i Python

Likelihood kontra sannolikhet

  • Betingad sannolikhet: $P( \text{utfall A} | \text{givet B})$
  • Sannolikhet: $P( \text{data} | \text{modell} )$
  • Likelihoodfunktion: $L( \text{modell} | \text{data} )$
Introduktion till linjär modellering i Python

Beräkna likelihood

Graf över sannolikhet kontra avstånd, som en röd gaussisk klockformad kurva, med en punkt nära vänsterkanten och horisontella och vertikala linjesegment som förbinder denna punkt med varje axel

Introduktion till linjär modellering i Python

Beräkna likelihood

Graf över sannolikhet kontra avstånd, som en röd gaussisk klockformad kurva, med 6 punkter från vänsterkanten mot mitten, med horisontella och vertikala linjesegment som förbinder varje punkt med båda axlarna

Introduktion till linjär modellering i Python

Likelihood från sannolikheter

# Guess parameters
mu_guess = np.mean(sample_distances)
sigma_guess = np.std(sample_distances)
# For each sample point, compute a probability
probabilities = np.zeros(len(sample_distances))
for n, distance in enumerate(sample_distances):
    probabilities[n] = gaussian_model(distance, mu=mu_guess, sigma=sigma_guess)
likelihood = np.product(probs)
loglikelihood = np.sum(np.log(probs))
Introduktion till linjär modellering i Python

Maximum likelihood-skattning

# Create an array of mu guesses
low_guess = sample_mean - 2*sample_stdev
high_guess = sample_mean + 2*sample_stdev
mu_guesses = np.linspace(low_guess, high_guess, 101)
# Compute the loglikelihood for each guess
loglikelihoods = np.zeros(len(mu_guesses))
for n, mu_guess in enumerate(mu_guesses):
    loglikelihoods[n] = compute_loglikelihood(sample_distances, mu=mu_guess, sigma=sample_stdev)
# Find the best guess
max_loglikelihood = np.max(loglikelihoods)
best_mu = mu_guesses[loglikelihoods == max_loglikelihood]
Introduktion till linjär modellering i Python

Maximum likelihood-skattning

Graf över en nedåtvänd parabel med en röd punkt vid maximum, plottad på axlarna log-likelihood kontra värden på mu

Introduktion till linjär modellering i Python

Nu kör vi en övning!

Introduktion till linjär modellering i Python

Preparing Video For Download...