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
F( x ) = x( α - 1 )( 1 - x )( β- 1 )B( k 2 , α , β) - B( k1, α , β)
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:XLXUα , β> 1
g( x ) = c ⋅ λ e- λ ( x - xL)
λ
- λ = a - 1X- b - 11 - x
cc = f( x )λ e- λ ( x - xL)
A = c ⋅ ( 1 - e- λ ( xU- xL))
Xλc
Q ( x ) =Xune( 1 - x )b( a + b - 2 ) x - a + 1⋅[ exp( ( b - 1 ) ( x - xL)1 - x+ xL( a - 1 )X- ( a - 1 ) ) -exp( ( b - 1 ) ( x - xU)1 - x+ xU( a - 1 )X- ( a - 1 ) ) ]
d Qd xXd Qd x= 0
k1k2U- journal( 1 - U)λλ
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.