Інтеграція Метрополіс-Гастінгса - чому моя стратегія не працює?


16

Припустимо, у мене є функція g(x) яку я хочу інтегрувати

g(x)dx.
Звичайно, припустимо, що g(x) переходить до нуля в кінцевих точках, відсутність вибухів, хороша функція. Один з способів , який я смикав є використання алгоритму Метрополіс-Гастингса , щоб сформувати список зразків x1,x2,,xn з розподілу пропорційно до g(x), Який відсутня константа нормалізації
N=g(x)dx
, які я буду називати p(x) , а потім обчислення деякі статистичні f(x) на цих x «и:
1ni=0nf(xi)f(x)p(x)dx.

Оскільки p(x)=g(x)/N , я можу підставити в f(x)=U(x)/g(x) скасувати g від інтеграла, в результаті чого вираз форми

1NU(x)g(x)g(x)dx=1NU(x)dx.
Отже за умови, щоU(x)інтегрується до1уздовж цього регіону, я повинен отримати результат1/N, який я міг би просто прийняти зворотним, щоб отримати відповідь, яку я хочу. Тому я міг би взяти діапазон моєї вибірки (щоб найбільш ефективно використовувати точки)r=xmaxxminі дозволитиU(x)=1/rдля кожного намальованого зразка. Таким чином оцінює нуль за межами регіону, де моїх зразків немає, але інтегрується до 1 у цьому регіоні. Отже, якщо я зараз прийму очікуване значення, я повинен отримати: E [ U ( x )U(x)1
E[U(x)g(x)]=1N1ni=0nU(x)g(x).

Я спробував тестувати це в R для вибіркової функції . У цьому випадку я не використовую Metropolis-Hastings для створення зразків, але використовую фактичні ймовірності з для генерування зразків (просто для тестування). Я не дуже отримую результати, які шукаю. В основному, повне вираження того, що я б обчислював: 1g(x)=ex2rnorm Це має в моїй теорії оцінювати до1/

1n(xmaxxmin)i=0n1exi2.
. Це наближається, але це, звичайно, не зближується очікуваним чином, чи я щось роблю не так?1/π
ys = rnorm(1000000, 0, 1/sqrt(2))
r = max(ys) - min(ys)
sum(sapply(ys, function(x) 1/( r * exp(-x^2))))/length(ys)
## evaluates to 0.6019741. 1/sqrt(pi) = 0.5641896

Редагувати для CliffAB

Причина, по якій я використовую діапазон, полягає в тому, щоб легко визначити функцію, яка не є нульовою для області, де є мої точки, але яка інтегрується до у діапазоні [ - , ] . Повна специфікація функції: U ( x ) = { 11[,] Мені не довелося використовуватиU(x)як цю рівномірну щільність. Я міг би використовувати іншу щільність, інтегровану до1, наприклад, щільність ймовірності P(x)=1

U(x)={1xmaxxminxmax>x>xmin0otherwise.
U(x)1 Однак це зробило б підсумовування окремих зразків тривіальним, тобто 1
P(x)=1πex2.
1ni=0nP(x)g(x)=1ni=0nexi2/πexi2=1ni=0n1π=1π.

Я міг би спробувати цю техніку для інших розподілів, які інтегруються в . Однак я все ж хотів би знати, чому це не працює для рівномірного розподілу.1


Only quickly looking over this, so I'm not sure exactly why you decided to use range(x). Conditionally on it being valid, it's extremely inefficient! The range of a sample of that size is just about the most unstable statistic you could take.
Cliff AB

@CliffAB Немає нічого особливого для мене, використовуючи діапазон, окрім визначення рівномірного розподілу на інтервалі, де лежать мої точки. Див. Правки.
Майк Флінн

1
Я розгляну це згодом докладніше. Але слід враховувати, що ніби x - це набір рівномірних RV, тоді як , діапазон ( x ) 1 . Але якщо x - це набір недегенеративних нормальних RV, то як n , діапазон ( x ) . n(x)1nrange(x)
Кліф АВ

@CliffAB you might have been right, I think the reason was that the bounds of the integral were not fixed, and so the variance of the estimator will never converge...
Mike Flynn

Відповіді:


13

This is a most interesting question, which relates to the issue of approximating a normalising constant of a density g based on an MCMC output from the same density g. (A side remark is that the correct assumption to make is that g is integrable, going to zero at infinity is not sufficient.)

In my opinion, the most relevant entry on this topic in regard to your suggestion is a paper by Gelfand and Dey (1994, JRSS B), where the authors develop a very similar approach to find

Xg(x)dx
when generating from p(x)g(x). One result in this paper is that, for any probability density α(x) [this is equivalent to your U(x)] such that
{x;α(x)>0}{x;g(x)>0}
the following identity
Xα(x)g(x)p(x)dx=Xα(x)Ndx=1N
shows that a sample from p can produce an unbiased evaluation of 1/N by the importance sampling estimator
η^=1ni=1nα(xi)g(xi)xiiidp(x)
Obviously, the performances (convergence speed, existence of a variance, &tc.) of the estimator η^ do depend on the choice of α [even though its expectation does not]. In a Bayesian framework, a choice advocated by Gelfand and Dey is to take α=π, the prior density. This leads to
α(x)g(x)=1(x)
where (x) is the likelihood function, since g(x)=π(x)(x). Unfortunately, the resulting estimator
N^=ni=1n1/(xi)
is the harmonic mean estimator, also called the worst Monte Carlo estimator ever by Radford Neal, from the University of Toronto. So it does not always work out nicely. Or even hardly ever.

Your idea of using the range of your sample (min(xi),max(xi)) and the uniform over that range is connected with the harmonic mean issue: this estimator does not have a variance if only because because of the exp{x2} appearing in the numerator (I suspect it could always be the case for an unbounded support!) and it thus converges very slowly to the normalising constant. For instance, if you rerun your code several times, you get very different numerical values after 10⁶ iterations. This means you cannot even trust the magnitude of the answer.

A generic fix to this infinite variance issue is to use for α a more concentrated density, using for instance the quartiles of your sample (q.25(xi),q.75(xi)), because g then remains lower-bounded over this interval.

When adapting your code to this new density, the approximation is much closer to 1/π:

ys = rnorm(1e6, 0, 1/sqrt(2))
r = quantile(ys,.75) - quantile(ys,.25)
yc=ys[(ys>quantile(ys,.25))&(ys<quantile(ys,.75))]
sum(sapply(yc, function(x) 1/( r * exp(-x^2))))/length(ys)
## evaluates to 0.5649015. 1/sqrt(pi) = 0.5641896

We discuss this method in details in two papers with Darren Wraith and with Jean-Michel Marin.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.