Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Estimation des Moments. Estimation du Maximum de Vraisemblance | Estimation des Paramètres de Population
Théorie Avancée des Probabilités
course content

Contenu du cours

Théorie Avancée des Probabilités

Théorie Avancée des Probabilités

1. Déclarations Supplémentaires de la Théorie des Probabilités
2. Les Théorèmes Limites de la Théorie des Probabilités
3. Estimation des Paramètres de Population
4. Test des Hypothèses Statistiques

book
Estimation des Moments. Estimation du Maximum de Vraisemblance

Examinons plus en détail ce que sont les paramètres de la population générale et comment nous pouvons les estimer.

Estimation par les moments

Nous utilisons nos échantillons et appliquons une fonction spécifique pour estimer le paramètre qui nous intéresse. Cependant, nous ne pouvons pas choisir n'importe quelle fonction ; nous devons trouver celle qui nous donne l'estimation la plus précise.

En statistique mathématique, il existe deux méthodes courantes pour cela. La première est appelée la méthode des moments, que nous avons déjà abordée. Cette méthode repose sur le fait que certaines caractéristiques d'une variable aléatoire, comme sa moyenne ou sa variance, sont directement liées aux paramètres que nous voulons estimer. Par exemple, la distribution gaussienne est entièrement déterminée par sa moyenne et sa variance. Ainsi, en calculant la moyenne et la variance de nos échantillons, nous pouvons estimer les paramètres de la distribution.

Exemple

Supposons que nous ayons une population générale exponentielle et que nous souhaitions estimer le paramètre lambda de cette distribution. Nous pouvons le faire comme suit :

123456789
import pandas as pd samples = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/Advanced+Probability+course+media/expon_samples.csv', names=['Value']) # Calculate mean value over samples estim_mean = samples.mean()['Value'] # We know that samples are from exponential distribution with has parameter lambda. # We also know that mean value of exponentially distributed variable equals 1/lambda # So to estimate lambda using momentum method we can simple use 1/estim_mean print('Momentum estimation of lambda parameter is: ', 1/estim_mean)
copy

Si nous devons estimer plus d'un paramètre, alors, en conséquence, nous devons utiliser non seulement la valeur moyenne mais aussi la variance ou les moments d'ordre supérieur. Considérons un exemple d'estimation des paramètres de la distribution gaussienne :

12345678910
import pandas as pd samples = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/Advanced+Probability+course+media/gaussian_samples.csv', names=['Value']) # Estimate the mean and standard deviation using method of moments mu = samples.mean()['Value'] sigma = samples.std()['Value'] print('Estimated mean:', mu) print('Estimated standard deviation:', sigma)
copy

Estimation du maximum de vraisemblance

La méthode des moments est assez simple à interpréter ; cependant, les propriétés des estimations obtenues avec cette méthode peuvent ne pas toujours nous satisfaire (nous parlerons des propriétés des estimations dans les chapitres suivants). C'est pourquoi nous allons considérer une autre méthode - l'estimation du maximum de vraisemblance.
La méthode du maximum de vraisemblance repose sur la maximisation de la fonction de vraisemblance. Cette fonction est construite comme la fonction de distribution conjointe du vecteur constitué de tous nos échantillons. Regardons l'image ci-dessous :

Puisque les échantillons proviennent de la même population générale de manière indépendante, nous pouvons combiner leurs distributions en une seule distribution conjointe en multipliant les distributions de chaque échantillon individuel. Cela nous donne la fonction de maximum de vraisemblance, que nous cherchons ensuite à maximiser pour trouver les meilleurs paramètres.

En termes plus simples, nous essayons de trouver les paramètres qui rendent nos échantillons observés les plus probables.

Travailler directement avec la fonction de vraisemblance peut être complexe, il est donc souvent plus facile d'utiliser le log-vraisemblance négatif. Prendre le logarithme transforme le produit des probabilités en une somme, simplifiant les calculs. De plus, maximiser la vraisemblance revient à minimiser le log-vraisemblance négatif.

Exemple

Utilisons le maximum de vraisemblance pour estimer les paramètres de la distribution Gaussienne :

123456789101112
import pandas as pd from scipy.stats import norm # Generate some random data samples = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/Advanced+Probability+course+media/gaussian_samples.csv', names=['Value']) # Estimate the parameters using maximum likelihood mu_ml, sigma_ml = norm.fit(samples) print('Maximum likelihood estimates:') print('mu = ', mu_ml) print('sigma = ', sigma_ml)
copy

Dans le code ci-dessus, nous utilisons la méthode .fit() de la classe norm pour obtenir l'estimation du maximum de vraisemblance des paramètres. Vous pouvez appliquer cette méthode à toute distribution continue représentée dans la bibliothèque scipy.

Remarque

Dans certains cas, l'estimation utilisant la méthode des moments et l'estimation du maximum de vraisemblance peuvent coïncider.

Nous ne pouvons pas utiliser la méthode .fit() pour certaines distributions. C'est pourquoi nous devons construire manuellement la fonction de vraisemblance et fournir une optimisation. Regardons l'exemple :

1234567891011121314151617181920
import numpy as np import pandas as pd from scipy.stats import poisson from scipy.optimize import minimize samples = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/Advanced+Probability+course+media/pois_samples.csv', names=['Value']) # Define the log-likelihood function for a Poisson distribution def poisson_log_likelihood(params, data): lam = params[0] # Compute log-likelihood as sum of logarithms of Poisson PMF log_likelihood = -np.sum(poisson.logpmf(data, lam)) return log_likelihood # Use maximum likelihood estimation to fit a Poisson distribution to the data initial_guess = [5] # starting value for lambda parameter result = minimize(poisson_log_likelihood, initial_guess, args=samples) estimate_lambda = result.x[0] # Print the estimated value of lambda print('Estimated value of lambda:', estimate_lambda)
copy

Dans le code ci-dessus, nous avons créé manuellement la fonction de log-vraisemblance en utilisant la méthode .logpmf() qui calcule le logarithme de la PMF à chaque point dont nous avons besoin.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2
We're sorry to hear that something went wrong. What happened?
some-alt