Supposons que j'ai une fonction g(x) que je souhaite intégrer
∫∞−∞g(x)dx.
Bien sûr, en supposant que
g(x) passe à zéro aux points d'extrémité, pas d'explosions, belle fonction. Une façon avec laquelle j'ai joué est d'utiliser l'algorithme Metropolis-Hastings pour générer une liste d'échantillons
x1,x2,…,xn partir de la distribution
proportionnelle à
g(x), Qui manque la constante de normalisation
N=∫∞−∞g(x)dx
que nous appellerons
p(x) , puis en calculant une certaine statistique
f(x) sur ces
x « s:
1n∑i=0nf(xi)≈∫∞−∞f(x)p(x)dx.
Puisque p(x)=g(x)/N , je peux substituer dans f(x)=U(x)/g(x) pour annuler g de l'intégrale, résultant en une expression de la forme
1N∫∞−∞U(x)g(x)g(x)dx=1N∫∞−∞U(x)dx.
Donc, à condition que
U(x)s'intègre à
1long de cette région, je devrais obtenir le résultat
1/N, que je pourrais simplement prendre l'inverse pour obtenir la réponse que je veux. Par conséquent, je pouvais prendre la plage de mon échantillon (pour utiliser le plus efficacement possible les points)
r=xmax−xminet laisser
U(x)=1/rpour chaque échantillon que j'ai tiré. De cette façon
s'évalue à zéro en dehors de la région où mes échantillons ne sont pas, mais s'intègre à
1 dans cette région. Donc, si je prends maintenant la valeur attendue, je devrais obtenir:
E [ U ( x )U(x)1E[U(x)g(x)]=1N≈1n∑i=0nU(x)g(x).
J'ai essayé de tester cela dans R pour l'exemple de fonction . Dans ce cas, je n'utilise pas Metropolis-Hastings pour générer les échantillons mais j'utilise les probabilités réelles avec pour générer des échantillons (juste pour tester). Je n'obtiens pas tout à fait les résultats que je recherche. Fondamentalement, l'expression complète de ce que je calculerais est:
1g(x)=e−x2rnorm
Cela devrait dans ma théorie évaluer à1/√
1n(xmax−xmin)∑i=0n1e−x2i.
. Il se rapproche mais il ne converge certainement pas de la manière attendue, est-ce que je fais quelque chose de mal?
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
Modifier pour CliffAB
La raison pour laquelle j'utilise la plage est juste pour définir facilement une fonction qui est non nulle sur la région où se trouvent mes points, mais qui s'intègre à sur la plage [ - ∞ , ∞ ] . La spécification complète de la fonction est:
U ( x ) = { 11[−∞,∞]
Je n'ai pas eu à utiliserU(x)comme cette densité uniforme. J'aurais pu utiliser une autre densité intégrée à1, par exemple la densité de probabilité
P(x)=1
U(x)={1xmax−xmin0xmax>x>xminotherwise.
U(x)1
Cependant, cela aurait rendu la somme des échantillons individuels triviale, c'est-à-dire
1P(x)=1π−−√e−x2.
1n∑i=0nP(x)g(x)=1n∑i=0ne−x2i/π−−√e−x2i=1n∑i=0n1π−−√=1π−−√.
Je pourrais essayer cette technique pour d'autres distributions qui s'intègrent à . Cependant, je voudrais quand même savoir pourquoi cela ne fonctionne pas pour une distribution uniforme.1