Suponha que eu tenho uma função g(x) que desejo integrar
∫∞−∞g(x)dx.
Obviamente, assumindo que
g(x) chega a zero nos pontos finais, sem explosões, boa função. Uma maneira com a qual estou brincando é usar o algoritmo Metropolis-Hastings para gerar uma lista de amostras
x1,x2,…,xn partir da distribuição
proporcional a
g(x), que está faltando a constante de normalização
N=∫∞−∞g(x)dx
que chamarei de
p(x) e, em seguida, calculando alguma estatística
f(x) nesses
x 's:
1n∑i=0nf(xi)≈∫∞−∞f(x)p(x)dx.
Como p(x)=g(x)/N , posso substituir em f(x)=U(x)/g(x) para cancelar g da integral, resultando em uma expressão da forma
1N∫∞−∞U(x)g(x)g(x)dx=1N∫∞−∞U(x)dx.
Portanto, desde que
U(x)integre a
1ao longo dessa região, eu deveria obter o resultado
1/N, que eu poderia usar de maneira recíproca para obter a resposta que eu queria. Portanto, eu poderia pegar o intervalo da minha amostra (para usar os pontos da maneira mais eficaz)
r=xmax−xmine deixar
U(x)=1/rpara cada amostra que desenhei. Dessa forma
avalia como zero fora da região onde minhas amostras não estão, mas integra-se a
1 nessa região. Portanto, se eu pegar agora o valor esperado, devo obter:
E [ U ( x )U(x)1E[U(x)g(x)]=1N≈1n∑i=0nU(x)g(x).
Eu tentei testar isso em R para a função de exemplo . Nesse caso, eu não uso Metropolis-Hastings para gerar as amostras, mas uso as probabilidades reais para gerar amostras (apenas para testar). Não recebo os resultados que estou procurando. Basicamente, a expressão completa do que eu estaria calculando é:
1g(x)=e−x2rnorm
Na minha teoria, isso deve avaliar para1/√
1n(xmax−xmin)∑i=0n1e−x2i.
. Chega perto, mas certamente não converge da maneira esperada, estou fazendo algo errado?
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
Editar para CliffAB
A razão pela qual eu uso o intervalo é apenas para definir facilmente uma função que não seja zero na região onde estão meus pontos, mas que se integra a no intervalo [ - ∞ , ∞ ] . A especificação completa da função é:
U ( x ) = { 11[−∞,∞]
Não precisei usarU(x)como essa densidade uniforme. Eu poderia ter usado alguma outra densidade integrada a1, por exemplo, a densidade de probabilidade
P(x)=1
U(x)={1xmax−xmin0xmax>x>xminotherwise.
U(x)1
No entanto, isso tornaria a soma das amostras individuais trivial, ou seja,
1P(x)=1π−−√e−x2.
1n∑i=0nP(x)g(x)=1n∑i=0ne−x2i/π−−√e−x2i=1n∑i=0n1π−−√=1π−−√.
Eu poderia tentar essa técnica para outras distribuições que se integram ao . No entanto, eu ainda gostaria de saber por que ele não funciona para uma distribuição uniforme.1