A amostragem por rejeição funcionará excepcionalmente bem quando e é razoável para c d ≥ expcd≥exp(5) .cd≥exp(2)
Para simplificar um pouco a matemática, deixe , escreva x = a e observe quek=cdx=a
f(x)∝kxΓ(x)dx
para . Definindo x = L 3 / 2 dáx≥1x=u3/2
f(u)∝ku3/2Γ(u3/2)u1/2du
para . Quando k ≥ exp ( 5 ) , essa distribuição é extremamente próxima de Normal (e se aproxima à medida que k aumenta). Especificamente, você podeu≥1k≥exp(5)k
Encontre o modo de numericamente (usando, por exemplo, Newton-Raphson).f(u)
Expanda para a segunda ordem sobre seu modo.logf(u)
Isso produz os parâmetros de uma distribuição normal aproximada. Para alta precisão, este Normal aproximado domina exceto nas caudas extremas. (Quando k < exp ( 5 ) , pode ser necessário aumentar um pouco o pdf Normal para garantir a dominação.)f(u)k<exp(5)
Depois de realizar esse trabalho preliminar para qualquer valor dado de e estimar uma constante M > 1 (como descrito abaixo), obter uma variável aleatória é uma questão de:kM>1
Desenhe um valor da distribuição normal dominante g ( u ) .ug(u)
Se ou se uma nova variável uniforme X exceder f ( u ) / ( M g (u<1X , retorne à etapa 1.f(u)/(Mg(u))
Defina .x=u3/2
O número esperado de avaliações de devido às discrepâncias entre g e f é apenas ligeiramente maior do que 1. (Algumas avaliações adicionais irão ocorrer devido à rejeição de variates menos do que 1 , mas mesmo quando k é tão baixa quanto 2 a frequência de tais ocorrências é pequena.)fgf1k2
Este gráfico mostra os logaritmos de g e f em função de u para . Como os gráficos são muito próximos, precisamos inspecionar sua proporção para ver o que está acontecendo:k=exp(5)
Isso exibe o log de razão de ; o fator M = exp ( 0,004 ) foi incluído para garantir que o logaritmo seja positivo em toda a parte principal da distribuição; isto é, para garantir M g ( u ) ≥ f ( u ), exceto possivelmente em regiões com probabilidade insignificante. Ao fazer M suficientemente grande, você pode garantir que M ⋅ glog(exp(0.004)g(u)/f(u))M=exp(0.004)Mg(u)≥f(u)MM⋅g dominar f em todas as caudas, exceto as mais extremas (que praticamente não têm chance de serem escolhidas em uma simulação). No entanto, quanto maior o , mais freqüentemente ocorrerão rejeições. À medida que k cresce, M pode ser escolhido muito próximo de 1 , o que implica praticamente nenhuma penalidade.MkM1
A similar approach works even for k>exp(2), but fairly large values of M may be needed when exp(2)<k<exp(5), because f(u) is noticeably asymmetric. For instance, with k=exp(2), to get a reasonably accurate g we need to set M=1:
A curva vermelha superior é o gráfico de enquanto a curva azul inferior é o gráfico de log ( f ( u ) ) . A amostragem de rejeição de f em relação a exp ( 1 ) g fará com que cerca de 2/3 de todos os sorteios sejam rejeitados, triplicando o esforço: ainda não é ruim. A cauda direita ( u > 10 ou x > 10 3 / ) estará sub-representada na amostragem de rejeição (porque explog(exp(1)g(u))log(f(u))fexp(1)gu>10x>103/2∼30 não domina mais f ), mas essa cauda compreende menos que exp ( - 20 ) ∼ 10 - 9 da probabilidade total.exp(1)gfexp(−20)∼10−9
To summarize, after an initial effort to compute the mode and evaluate the quadratic term of the power series of f(u) around the mode--an effort that requires a few tens of function evaluations at most--you can use rejection sampling at an expected cost of between 1 and 3 (or so) evaluations per variate. The cost multiplier rapidly drops to 1 as k=cd increases beyond 5.
Even when just one draw from f is needed, this method is reasonable. It comes into its own when many independent draws are needed for the same value of k, for then the overhead of the initial calculations is amortized over many draws.
Addendum
@Cardinal has asked, quite reasonably, for support of some of the hand-waving analysis in the forgoing. In particular, why should the transformation x=u3/2 make the distribution approximately Normal?
In light of the theory of Box-Cox transformations, it is natural to seek some power transformation of the form x=uα (for a constant α, hopefully not too different from unity) that will make a distribution "more" Normal. Recall that all Normal distributions are simply characterized: the logarithms of their pdfs are purely quadratic, with zero linear term and no higher order terms. Therefore we can take any pdf and compare it to a Normal distribution by expanding its logarithm as a power series around its (highest) peak. We seek a value of α that makes (at least) the third power vanish, at least approximately: that is the most we can reasonably hope that a single free coefficient will accomplish. Often this works well.
But how to get a handle on this particular distribution? Upon effecting the power transformation, its pdf is
f(u)=kuαΓ(uα)uα−1.
Take its logarithm and use Stirling's asymptotic expansion of log(Γ):
log(f(u))≈log(k)uα+(α−1)log(u)−αuαlog(u)+uα−log(2πuα)/2+cu−α
(for small values of c, which is not constant). This works provided α is positive, which we will assume to be the case (for otherwise we cannot neglect the remainder of the expansion).
Compute its third derivative (which, when divided by 3!, will be the coefficient of the third power of u in the power series) and exploit the fact that at the peak, the first derivative must be zero. This simplifies the third derivative greatly, giving (approximately, because we are ignoring the derivative of c)
−12u−(3+α)α(2α(2α−3)u2α+(α2−5α+6)uα+12cα).
When k is not too small, u will indeed be large at the peak. Because α is positive, the dominant term in this expression is the 2α power, which we can set to zero by making its coefficient vanish:
2α−3=0.
That's why α=3/2 works so well: with this choice, the coefficient of the cubic term around the peak behaves like u−3, which is close to exp(−2k). Once k exceeds 10 or so, you can practically forget about it, and it's reasonably small even for k down to 2. The higher powers, from the fourth on, play less and less of a role as k gets large, because their coefficients grow proportionately smaller, too. Incidentally, the same calculations (based on the second derivative of log(f(u)) at its peak) show the standard deviation of this Normal approximation is slightly less than 23exp(k/6), with the error proportional to exp(−k/2).