Dans un article de recherche sur l'analyse de sensibilité d'un modèle d'équation différentielle ordinaire d'un système dynamique, l'auteur a fourni la distribution d'un paramètre de modèle en tant que distribution normale (moyenne = 1e-4, std = 3e-5) tronquée à la plage [0,5e -4 1,5e-4]. Il utilise ensuite des échantillons de cette distribution tronquée pour des simulations du modèle. Que signifie avoir une distribution tronquée et un échantillon de cette distribution tronquée?
Je pourrais trouver deux façons de procéder:
- Échantillonner à partir d'une distribution normale mais ignorer toutes les valeurs aléatoires tombant en dehors de la plage spécifiée avant les simulations.
- D'une manière ou d'une autre, obtenez une distribution spéciale "Normal tronqué" et obtenez-en des échantillons.
Ces approches sont-elles valides et équivalentes?
Je crois que dans le premier cas, si l'on devait tracer le cdf / pdf expérimental de l'échantillon, cela ne ressemblerait pas à une distribution normale car les courbes ne s'étendent pas à .
qnorm
dans une boucle R n'est pas une bonne idée.Cette méthode est correcte, mais, comme l'a mentionné @ Xi'an dans sa réponse, cela prendrait beaucoup de temps lorsque la plage est petite (plus précisément, lorsque sa mesure est petite sous la distribution normale).
Simuler une distribution tronquée à l'aide d'un échantillonnage d'importance
Cela fournit une estimation de la fonction cumulative cible. Nous pouvons rapidement l'obtenir et le tracer avec le
spatsat
package:Une autre méthode: l'échantillonnage à transformée inverse rapide
Olver et Townsend ont développé une méthode d'échantillonnage pour une large classe de distribution continue. Il est implémenté dans la bibliothèque chebfun2 pour Matlab ainsi que dans la bibliothèque ApproxFun pour Julia . J'ai récemment découvert cette bibliothèque et elle semble très prometteuse (pas seulement pour un échantillonnage aléatoire). Fondamentalement, c'est la méthode d'inversion, mais en utilisant des approximations puissantes du cdf et du cdf inverse. L'entrée est la fonction de densité cible jusqu'à la normalisation.
L'exemple est simplement généré par le code suivant:
la source