Comment dois-je échantillonner efficacement la distribution suivante?
Si n'est pas trop grand, l'échantillonnage de rejet peut être la meilleure approche, mais je ne sais pas comment procéder lorsque k est grand. Peut-être existe-t-il une approximation asymptotique qui peut être appliquée?
random-generation
beta-distribution
truncation
user1502040
la source
la source
Réponses:
La manière la plus simple et la plus générale qui s'applique à n'importe quelle distribution tronquée (elle peut également être généralisée à la troncature des deux côtés) est d'utiliser l' échantillonnage par transformée inverse . Si est la distribution cumulative des intérêts, alors p 0 = F ( k ) et prendreF p0= F( k )
où est un échantillon de F tronqué à gauche en k . La fonction quantile F - 1 tracera probabilités à des échantillons de F . Étant donné que nous prenons les valeurs de U uniquement dans la "zone" qui correspond aux valeurs de la distribution bêta de la région non tronquée, vous n'échantillonnerez que ces valeurs.X F k F- 1 F U
Cette méthode est illustrée sur l'image ci-dessous où la zone tronquée est marquée par un rectangle gris, les points en rouge sont tirés de la distribution puis transformés en échantillons B ( 2 , 8 ) .U( p0, 1 ) B( 2 , 8 )
la source
scipy.special.betainc
pour l'inverse et en R il y en apbeta
.qbeta
pour la fonction quantile en R.)La réponse de @ Tim montre comment l'échantillonnage par transformée inverse peut être adapté pour les distributions tronquées, libérant ainsi le temps d'exécution de la dépendance au seuil . D'autres gains d'efficacité peuvent être obtenus en évitant une évaluation numérique coûteuse de la fonction quantile bêta et en utilisant l'échantillonnage à transformée inverse dans le cadre de l'échantillonnage de rejet.k
La fonction de densité d'une distribution bêta avec des paramètres de forme & β doublement tronqués à k 1 < k 2 (pour un peu plus de généralité) estα β k1< k2
Prenez n'importe quelle partie augmentant de façon monotone de la densité entre et x U : pour α , β > 1, elle est log-concave, de sorte que vous pouvez l'envelopper avec une fonction exponentielle dessinée à une tangente en tout point le long de celle-ci:XL XU α , β> 1
La beauté de cette approche est que tout le travail est mis en place. Une fois la fonction d'enveloppe définie, la constante de normalisation de la densité bêta tronquée calculée, il ne reste plus qu'à générer des variations aléatoires uniformes et à effectuer sur elles quelques opérations arithmétiques simples, journaux et puissances, et comparaisons. Le resserrement de la fonction enveloppe - avec des lignes horizontales ou des courbes plus exponentielles - peut bien sûr réduire le nombre de rejets.
la source