Code
library(knitr)
$set(optipng = hook_optipng) knit_hooks
Simulation de Monte Carlo
Pierre Beaucoral
« The Monte Carlo method … is an invention of statistical sampling for the solution of mathematical problems for which direct methods are not feasible. » @metropolis1949.
Article original Metropolis & Ulam (1949)
Une simulation de Monte Carlo est une expérience de pensée codée sur ordinateur :
La simulation de Monte Carlo agit comme un laboratoire virtuel : elle permet de vérifier et d’illustrer les propriétés théoriques des estimateurs quand la démonstration analytique est complexe ou quand on veut observer leur comportement “en pratique”.
Action | Commande |
---|---|
Générer une normale centrée réduite | series e = nrnd |
Générer une loi χ²(v) | series e = @rchisq(v) |
Créer une variable simulée | series y1 = 7 + 0.4*lsize + 0.8*bed + 0.2*bath + 0.2*airco + e |
Estimer par MCO | ls y1 c lsize bed bath airco |
Lancer un programme | run Montecarlo.prg |
Ce graphique illustre la loi des grands nombres : à mesure que le nombre d’itérations augmente, l’histogramme des $\hat\beta$ se resserre autour de la vraie valeur \(\beta=2\).
En supposant $\varepsilon \sim \mathcal{N}(0,1)$, générez une série y1 et estimezl’équation par MCO.
EViews :
series e = nrnd
series y1 = 7 + 0.4*lsize + 0.8*bed + 0.2*bath + 0.2*airco + e
ls y1 c lsize bed bath airco
Les coefficients estimés doivent être proches des valeurs vraies (0.4, 0.8, 0.2, 0.2) avec de légères fluctuations aléatoires.
Refaire la Q1 pour y2 à y5, même modèle, nouvelles erreurs.
Même démarche en changeant le nom de la série (y2
, y3
…). Comparer les \(\hat\beta\) obtenus : on doit observer une dispersion autour des valeurs vraies, illustrant la variabilité d’échantillonnage.
Ouvrez
Montecarlo.prg
, exécutez-le. Les coefficients sont enregistrés dans la matriceresultat
. Faites un histogramme et calculez moyenne, variance, skewness, kurtosis.
run Montecarlo.prg
Puis View → Descriptive Statistics → Histogram & Stats
sur chaque colonne de resultat
.
Les estimateurs doivent avoir :
une moyenne proche du vrai paramètre (absence de biais),
une variance reflétant la précision,
skewness ≈ 0 et kurtosis ≈ 3 si les erreurs sont normales.
Appliquer la même procédure avec 1000 itérations.
Dans Montecarlo.prg
, modifier :
!nbiter = 1000
et exécuter.
La moyenne des \(\hat\beta\) se rapproche encore plus de la valeur vraie,
et la variance estimée se stabilise — illustration de la loi des grands nombres.
Refaire 1–4 en supposant \(\varepsilon \sim \mathcal{N}(0,0.625)\), 1000 puis 5000 simulations.
series e = sqrt(0.625)*nrnd
Une variance d’erreur plus faible ⇒ des estimateurs plus précis (variance plus faible).
Avec 5000 simulations, l’évaluation des moments (moyenne, variance, skewness, kurtosis) devient plus stable.
Refaire 1–4 avec \(\varepsilon \sim \chi^2(7)\), 1000 puis 5000 simulations.
series e = @rchisq(7)
La distribution est asymétrique (skewness > 0). Les MCO restent asymptotiquement sans biais, mais les tests t/F, fondés sur la normalité, peuvent avoir un risque de première espèce mal calibré.
⇒ Utiliser des erreurs-types robustes (White, HAC) ou des tests non paramétriques pour l’inférence.
La simulation de Monte Carlo est un outil de validation empirique : elle confirme les propriétés théoriques des estimateurs et permet de tester la robustesse des procédures statistiques.
Les estimateurs MCO restent sans biais même si les erreursne sont pas normales, mais l’inférence (tests t/F) peut devenir peu fiable en petit échantillon.
En cas de non-normalité, recourir à des erreurs-types robustes ou à des méthodes d’inférence alternatives (bootstrap, tests non paramétriques).