Em Inferência, o processo de estimação muitas vezes envolve a necessidade do cálculo de integrais não triviais; por exemplo, no cálculo de distribuições preditivas e momentos. Para estes casos, é conveniente usar métodos para aproximar integrais complexas (p.ex., de alta dimensão) e/ou que não possuem soluções analíticas.
Importante: Sempre que possível devemos utilizar soluções exatas, isto é, não aproximadas, se elas existem.
Suponha que queremos calcular a integral \[\displaystyle I = \int_0^1 g(x)dx.\] De fato, se \(U\) é uma v.a. uniformemente distribuída no intervalo \((0,1)\), podemos escrever \[\displaystyle I = \int_0^1 g(x)dx = E[g(U)].\]
Se \(U_1,...,U_n\) formam uma
amostra i.i.d. de \(U\), \(g(U_1),...,g(U_n)\) também são i.i.d., com
média \(E[g(U)]\); portanto, a Lei
Forte dos Grandes Números garante que, com probabilidade 1,
\[\displaystyle \hat{I} = \frac{1}{n}
\sum_{i=1}^n g(U_i) \stackrel{n \rightarrow \infty}{\longrightarrow}
E[g(U)] = I.\] Portanto, podemos aproximar a integral \(I\) gerando um grande número de valores
\(u_i\) de \(U \sim \text{U}(0,1)\) e calculando a média
dos valores \(g(u_i)\) calculados ao
longo da amostra.
Esta aproximação é chamada de Aproximação de Monte Carlo e possui usos um pouco mais gerais, conforme veremos a seguir.
A ideia do método é escrever a integral que se deseja calcular como um valor esperado, ao longo de valores dos quais sabemos simular.
Suponha que queremos calcular \[I = \int_a^b g(x)dx.\]
Note que \[\displaystyle I = \int_a^b g(x)dx = \int_a^b (b-a)g(x)\frac{1}{b-a}dx = (b-a)E[g(X)], \] onde \(X \sim \text{U}(a,b)\) (ou seja, transformamos o problema matemático de avaliar \(I\) em um problema estatístico de avaliar uma esperança).
Se temos uma amostra aleatória de tamanho \(n\) da \(U(a,b)\), digamos \(x_1,...,x_n\), podemos estimar \(I\) como \[\displaystyle \hat{I} = (b-a) \frac{1}{n}\sum_{i=1}^ng(X_i).\]
De fato, note que \(\hat{I}\) é uma estimativa não-viesada de \(I\), pois \[\displaystyle E[\hat{I}] = (b-a)\frac{1}{n}\sum_{i=1}^n E[g(X_i)] = (b-a)\frac{1}{n}n E[g(X)] = (b-a) E[g(X)] = I.\]
\[I = \int_a^b g(x)dx\]
Gere uma amostra \(x_1,...,x_n\) de \(U(a,b)\).
calcule \(g(x_i)\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} =\frac{1}{n} \sum_{i=1}^n g(x_i)\).
Calcule \(\displaystyle \int_1^3 e^{-x}dx\).
Solução:
\[I=\displaystyle \int_1^3 e^{-x}dx = (3-1)\displaystyle \int_1^3 e^{-x} \frac{1}{3-1}dx = 2\; E[e^{-X}], \qquad \mbox{onde } X \sim \text{U}(1,3).\]
Gere \(n\) valores da distribuição \(U(1,3)\): \(x_1,...,x_n\).
Calcule \(g(x_i)=e^{-x_i}\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} = (3-1) \frac{1}{n} \sum_{i=1}^n g(x_i) = \frac{2}{n} \sum_{i=1}^n e^{-x_i}\).
g = function(x){
exp(-x)
}
I.chapeu = function(n,a,b,g){
x = runif(n,a,b)
I = (b-a)*mean(g(x))
return(I)
}
n = 100
a = 1
b = 3
I.est = I.chapeu(n,a,b,g)
I.est
## [1] 0.3072662
Observe que \(\displaystyle \int_1^3 e^{-x}dx = P(X\leq3)-P(X\leq1) = 0,3181\), pois \(e^{-x}\) (para \(x>0\)) é a função de densidade de probabilidade da distribuição exponencial com média 1.
Conhecendo o valor verdadeiro da integral, faça os seguintes exercícios:
Compare o valor obtido de forma aproximada com o valor exato da integral.
Aumente o tamanho da amostra (\(n\)) e repita a comparação.
Repita o cálculo 100 vezes com \(n\) fixo e faça um histograma dos resultados encontrados.
Repita o exercício anterior com 1000 cálculos e observe o que ocorre.
A Lei Forte dos Grandes Números garante que \[\displaystyle \hat{I} = \frac{1}{n} \sum_{i=1}^n g(X_i) \stackrel{n \rightarrow \infty}{\longrightarrow} E[g(X)] = I \qquad \mbox{q.c.};\] além disso, a variância do estimador \(\hat{I}\) é \[\displaystyle Var(\hat{I}) = Var\left(\frac{1}{n} \sum_{i=1}^n g({X}_i)\right) = \frac{1}{n^2} \sum_{i=1}^n Var\left( g({X}_i)\right);\] e, portanto, podemos melhorar a aproximação tanto quanto se queira, bastando aumentar \(n\).
Note que a estratégia de olhar a integral como a esperança de uma função avaliada em valores de uma a.a.s. uniforme não se aplica diretamente para integrais definidas em intervalos ilimitados.
Uma possível solução é generalizar o método, assumindo a geração de pontos através de outros modelos probabilísticos, cuja imagem seja mais adequada ao problema.
Suponha que \(g(x)\) pode ser decomposta da forma \(g(x) = h(x)p(x)\), onde \(p(x)\) representa uma modelo probabilístico do qual sabemos simular. Neste caso, podemos utilizar o algoritmo a seguir para aproximar a integral
\[I = \int g({x})d{x} = \int h({x})p(x)d{x}.\]
Gere uma amostra \({x}_1,...,{x}_n\) de \(p({x})\).
Calcule \(h({x}_i)\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} =\frac{1}{n} \sum_{i=1}^n h({x}_i)\).
Calcule a função gama, denotada por \(\Gamma(\alpha)\) para diferentes valores de \(\alpha\).
\[I=\displaystyle \Gamma(\alpha) = \int_0^\infty x^{\alpha-1}e^{-x}dx = E[X^{\alpha-1}], \qquad \mbox{onde } X \sim \text{Exp}(1).\]
Solução:
Gere \(n\) valores da distribuição \(\text{Exp}(1)\): \(x_1,...,x_n\).
Calcule \(h(x_i)=x_i^{\alpha-1}\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} = \frac{1}{n} \sum_{i=1}^n h(x_i) = \frac{1}{n} \sum_{i=1}^n x_i^{\alpha-1}\).
h = function(x,alpha){
x^(alpha-1)
}
I.chapeu = function(n,alpha,h){
x = rexp(n)
I = mean(h(x,alpha))
return(I)
}
n = 100
alpha = 1.7
I.est = I.chapeu(n,alpha,h)
I.est
## [1] 0.8536099
gamma(alpha)
## [1] 0.9086387
Note que a definição vale tanto no caso univariado quanto no caso multivariado no qual \(\boldsymbol{x}=(x_1,...,x_k)\) e \(p(\boldsymbol{x})\) representa a distribuição conjunta de todas as componentes de \(\boldsymbol{x}\).
(Ross, 2022) Estimação de \(\pi\)
Considere o quadrado \(D=[-1,1]\times[-1,1]\), centrado na origem e, dentro desse quadrado, o círculo unitário
\[ C=\{(x,y)\in D:x^2+y^2\leq 1\}. \]
Deseja-se utilizar o Método de Monte Carlo simples para estimar a integral dupla \[ I= \int_{-1}^{1} \int_{-1}^{1} \mathbf{1}_{{x^2+y^2\leq1}} dxdy, \] em que \(\mathbf{1}_{A}\) é a função indicadora do evento \(A\): \[ \mathbf{1}_{A}= \begin{cases} 1,&\text{se }A\text{ ocorre},\\ 0,&\text{caso contrário}. \end{cases} \] Determine uma estimativa de \(I\) utilizando amostras aleatórias uniformes e compare o resultado obtido com o valor exato da integral.
De fato, note que \(I\) representa exatamente a área do círculo unitário; portanto, \(I=\pi\). Assim, o problema consiste em utilizar simulação aleatória para obter uma aproximação de \(\pi\).
Solução:
Note que \[ I = \int_{-1}^{1} \int_{-1}^{1} \mathbf{1}_{{x^2+y^2\leq1}} dxdy = 4 \int_{-1}^{1} \int_{-1}^{1} \mathbf{1}_{{x^2+y^2\leq1}} \frac{1}{4} dxdy = E[\mathbf{1}_{{X^2+Y^2\leq1}}], \qquad (X,Y) \sim \text{U}(D). \]
Gere \(n\) valores da distribuição \(\text{U}(D)\): \((x_1,y_1),...,(x_n,y_n)\). Isto é equivalente a simular \(X \sim \text{U}(-1,1)\) e \(Y \sim \text{U}(-1,1)\) independentes.
Calcule \(g(x_i,y_i)=\mathbf{1}_{{x_i^2+y_i^2\leq1}}\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} = \frac{4}{n} \sum_{i=1}^n g(x_i,y_i) = \frac{4}{n} \sum_{i=1}^n \mathbf{1}_{{x_i^2+y_i^2\leq1}}\).
n = 10000
x = runif(n,-1,1)
y = runif(n,-1,1)
indicadora = (x^2 + y^2 <= 1)
pi.mc = 4*sum(indicadora)/n
pi.mc
## [1] 3.1416
O resultado não será exatamente igual a \(\pi\), pois estamos utilizando uma aproximação numérica baseada em uma amostra aleatória, porém o valor obtido deve estar próximo de \[ \pi\approx3.14159265. \]
Construa uma função que aproxime integrais duplas do tipo \[ I = \int_a^b \int_c^d g(x,y)dydx. \] através do Método de Monte Carlo.
Suponha que queremos calcular
\[\displaystyle I=\int h({x})p({x})d{x},\] mas não sabemos gerar de \(p({x})\).
Neste caso, se sabemos gerar de uma distribuição \(q({x})\) definida no mesmo espaço de variação de \(p({x})\), podemos fazer \[I = \displaystyle \int h({x})p({x})d{x}=\int \frac{h({x})p({x})}{q({x})}q({x})d{x},\] que é a esperança de \(\displaystyle \frac{h({X})p({X})}{q({X})}\) com relação a distribuição \(q({x})\).
A função \(q({x})\) é chamada de função de importância.
Gere uma amostra \({x}_1,...,{x}_n\) de \(q({x})\).
Calcule \(\displaystyle \frac{h({x}_i)p({x}_i)}{q({x}_i)}\), \(i=1,...,n\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} =\frac{1}{n} \sum_{i=1}^n \frac{h({x}_i)p({x}_i)}{q({x}_i)}\).
Pode-se mostrar que a escolha ótima no sentido de minimizar a variância do estimador consiste em tomar \(q({x}) \propto h({x})p({x})\).
Estimar a probabilidade
\[ I=P(X>5),\qquad \mbox{onde }X\sim N(0,1). \]
Solução:
Podemos escrever essa probabilidade como uma integral:
\[ I=\int_5^\infty \frac{1}{\sqrt{2\pi}}e^{-x^2/2} dx = \int_{-\infty}^\infty \mathbb{I}(x>5)\frac{1}{\sqrt{2\pi}}e^{-x^2/2} dx = E[\mathbb{I}(X>5)], \qquad X \sim \text{N}(0,1). \] Como o evento \(X>5\) é bastante raro, o Método de Monte Carlo simples pode apresentar uma estimativa pouco eficiente. De fato, se gerarmos valores diretamente de \(N(0,1)\), é muito provável que uma parcela muito pequena, ou até nenhuma, das observações esteja na região \(x>5\).
Para melhorar a eficiência, utilizaremos uma Função de Importância. Escolhemos uma distribuição normal deslocada para a região de interesse:
\[ X\sim N(\mu,1), \qquad \text{com} \qquad \mu=5. \]
A densidade da distribuição original é
\[ p(x)=\frac{1}{\sqrt{2\pi}}e^{-x^2/2}, \]
enquanto a densidade da função de importância é
\[ q(x)=\frac{1}{\sqrt{2\pi}}e^{-(x-5)^2/2}. \]
Podemos multiplicar e dividir o integrando por \(q(x)\):
\[\begin{align*} I&=\int_{-\infty}^\infty \mathbb{I}(x>5)\frac{p(x)}{q(x)}q(x) dx = \int_{-\infty}^\infty \mathbb{I}(x>5)\frac{\frac{1}{\sqrt{2\pi}}e^{-x^2/2}}{\frac{1}{\sqrt{2\pi}}e^{-(x-\mu)^2/2}}q(x) dx \\ &= \int_{-\infty}^\infty \mathbb{I}(x>5)e^{(-2\mu x+\mu^2)/2} \frac{1}{\sqrt{2\pi}}e^{-(x-\mu)^2/2} dx = \int_{-\infty}^\infty \mathbb{I}(x>5)e^{-5 x+25/2} \frac{1}{\sqrt{2\pi}}e^{-(x-5)^2/2} dx \\ &= E[\mathbb{I}(X>5)e^{-5 X+25/2}], \qquad X \sim \text{N}(5,1). \end{align*}\]
Gere \(n\) valores da distribuição \(\text{N}(0,1)\): \(x_1,...,x_n\).
Calcule \(h_1(x_i)=\mathbb{I}(x_i>5)\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} = \frac{1}{n} \sum_{i=1}^n h_1(x_i) = \frac{1}{n} \sum_{i=1}^n \mathbb{I}(x_i>5)\).
Gere \(n\) valores da distribuição \(\text{N}(5,1)\): \(x_1,...,x_n\).
Calcule \(h_2(x_i)=\mathbb{I}(x_i>5)e^{-5 x_i+25/2}\), \(i=1,...,n\).
Aproxime \(I\) por \(\displaystyle \hat{I} = \frac{1}{n} \sum_{i=1}^n h_2(x_i) = \frac{1}{n} \sum_{i=1}^n \mathbb{I}(x_i>5)e^{-5 x_i+25/2}\).
n = 10000
h1 = function(x,mu){
I(x > 5)
}
I.chapeu.1 = function(n,h){
x = rnorm(n,mean=0,sd=1)
I = mean(h(x))
return(I)
}
I.MCS = I.chapeu.1(n,h1)
I.MCS
## [1] 0
h2 = function(x){
(x > 5)*exp(-5*x + 25/2)
}
I.chapeu.2 = function(n,h){
x = rnorm(n,mean=5,sd=1)
I = mean(h(x))
return(I)
}
I.MCFI = I.chapeu.2(n,h2)
I.MCFI
## [1] 3.015429e-07
# valor exato
pnorm(5,lower.tail=FALSE)
## [1] 2.866516e-07
ROSS, Sheldon M. Simulation. 6. ed. London: Academic Press, 2022.