Você está na página 1de 9

Instituto de Matemática e Estatística

da Universidade de São Paulo

MAP2212 - Laboratório de Computação


e Simulação

Estimativa de integrais usando


Crude, Hit or Miss
Importance Sampling e
Control Variates Monte Carlo

Aluno: Marcos Antonio Albarracin Manrique - NUSP: 7511632


Professor: Julio Michael Stern
Monitor: Eduardo Janotti Cavalcante

São Paulo, 24 de Março de 2022


Sumário
1 Introdução 1
1.1 Método de Monte Carlo para cálculo de integrais . . . . . . . 1

2 Desenvolvimento 1
2.1 Observações . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 Resultados e discussão 3

4 Conclusão 3

5 Apêndice A 5
5.1 Descrição do código Python . . . . . . . . . . . . . . . . . . . 5

6 Apêndice B 6
6.1 Figuras dos Resultados Apresentados pelo Código Numérico
no Final de cada Execuação . . . . . . . . . . . . . . . . . . . 6

7 Bibliografia 8
1 Introdução
1.1 Método de Monte Carlo para cálculo de integrais
Na estatística o problema mais comum é a integração, como exemplo
podemos citar, encontrar algum parâmetro que descreva uma distribuição de
probabilidade. Geralmente descrever uma função densidade de probabilidade
não é uma tarefa simples. É aí onde o Método de Monte Carlo pode nos
ajudar a solucionar tal problema, com certa precisão. Devemos levar em
conta que essa precisão seja mínima, i.e., que a variância seja mínima.
Um tópico importante no calculo de integrais usado Monte Carlo ,e como
reduzir a variância. Entre as técnicas mas usadas para a redução da vari-
ância, as quais podem depender do modelo matemático e das técnicas de
geração de variável aleatória, podemos citar, Monte Carlo primitivo ou crude
Monte Carlo, Monte Carlo hit or miss (certo ou errado), amostragem por
importância (importance sampling) e variáveis de controle (control variates).
Para mais informações detalhadas sobre os quatros métodos nomeados
acima e outros mais existentes na literatura, se recomenda estudar os textos
[1-4] da bibliografia.

2 Desenvolvimento
Para estimar a integral da função f (x) = e−Ax cos(Bx) no intervalo [0, 1] e
onde o valor de A é 0.670967749 e B é 0.23306751863, existem alguns pontos
em comum para os quatros métodos que serão aplicados.
Para calcular a integral, geramos pontos aleatório, i.e., repetimos o mesmo
experimento muitas vezes. Antes de construir o código numérico, com o
que se fará as simulações, vamos usar a teoria para estimar quantos pontos
aleatórios teremos que gerar para fazer uma boa estimativa da integral.
Fazendo uso da lei fraca dos grandes números (WLLN), o “Teorema do
Limite Central” e a “Desigualdade de Chebyshev” [7, 8], para uma sequência
de variáveis aleatórias distribuídas de forma independente e idêntica com
variância positiva, temos que:

X1 + .....Xn σ2
P (| − µ| ≥ ) ≤ 2 . (1)
n n

Observemos que na Eq. (1), o valor de  é umvalor positivo e pode ser


tomado tão pequeno com queramos que o error relativo na nossa estimativa

1
seja perto do valor exato.
Lembremos que a lei dos grandes números afirma que para o número
total de pontos aleatórios n grande a média empírica é muito próxima do
valor esperado µ com probabilidade muito alta.
Temos como objetivo estimar a integral com uma precisão de  = 0.0005
e vamos querer fazer isso com uma probabilidade de sucesso ≥ 0.99. Logo da
expressão (1), já que queremos uma probabilidade de sucesso de 1 − 0.99 ≤
0.01 de que nossa estimativa do numero π tenha uma precisaõ menor que
0.0005, do lado direito da da “Desigualdade de Chebyshev” temos que:

σ2
≤ 0.01. (2)
n(0.0005)2

Observamos σ 2 não é conhecida. O que faremos é criar uma estimativa


dela criando uma amostra aleatória de resultados da integral com distitos
valores de n. Vamos obter um valor estimado de σ 2 para cada um dos quatros
métodos aplicados neste informe. Com os valores estimados de σ 2 , podemos
calcular o valor de n ótimo, para cada um dos quatros métodos. Podemos
ver os resultados a seguir:

Modelo Estimativa σ 2 n≥
Crude 0.000125 50000
Hit or Miss 0.001116 446400
Importance Sampling 4e-06 1600
Control Variates 8.8e-05 35000

Tabela 1: Valores estimados de σ 2 .

2.1 Observações
A seguir, algumas observações referente às considerações feitas no pre-
sente informe.

• No método “Importance Sampling” usamos uma função densidade de


probabilidade g(x) = Ae−λx . Os valores de A e λ são obtidos fazendo
um processo recursivo com o mesmo valor de n para distintos valores de
A e lambda, tal que, apresente o menor valor de σ 2 . Para este informe
foi calculado o valor de A igual a 1.0 e de λ igual a 0.32.

2
• No método “Control Variates” usamos uma função polinômica como
função controle g(x) = ax4 + bx3 + cx2 + dx + e con integral conhecida.
Os valores de a, b, c, d e e são obtidos fazendo um processo recursivo
com o mesmo valor de n para distintos valores dos parâmetros, tal que,
apresente o menor valor de σ 2 . Para este informe foi calculado o valor
de a = 0.01, b = 0.9, c = 0.05, d = −0.01 e e = −0.002.

3 Resultados e discussão
Podemos concluir que para obter uma boa estimativa do valor da integral
depende do valor da variância σ 2 . A partir das nossas experiências numéricas,
observamos que o menor valor de σ 2 foi obtido para o método de “Importance
Sampling”, seguido do método “Control Variates” e “Crude”. Por último fica
o método de "Hit or Miss"que possui um maior custo computacional.
Para calcular nossas estimativas da integral e seu respectivos valores de
σ para cada método, usamos um número de iterações n igual 10000, o toma
2

um tempo de menos de 3 segundos para ser processado. Nossos resultados


são apresentados a seguir:

Modelo Estimativa f (x) Estimativa σ 2


Crude 0.722051014 2.101e-06
Hit or Miss 0.7185 2.0226e-05
Importance Sampling 0.726202625 5.2e-08
Control Variates 0.732624549 2e-09

Tabela 2: Valores estimados da integral f (x).

4 Conclusão
Dos resultados observados podemos concluir que a variância σ 2 diminui
conforme avançamos na complexidade do método. O método “Control Va-
riates” mostra ser, em teoria, o mais acertado, em quanto o método “Hit or
Miss” é o menos acertado.
Tendo em conta o processo de amostras para estimar o valor de σ 2 para
o cálculo de n, o método de “Importance Sampling” se mostra ser o que
tem menos custo computacional, porém uma aumento da amostra, e con-
sequentemente um aumento do tempo de processamento, poderia mostrar

3
que novamente o método “Control Variates” poderia ser o que mostre menor
custo computacional.
Observamos que usar uma variável de control é venéfico para a disminui-
ção do valor da variância σ 2 e assim obter uma estimativa com maior grau
de confiança. O único problema é a condição de que a função de control tem
que ter uma integral conhecida no intervalo estudado.

4
5 Apêndice A
5.1 Descrição do código Python
O código numérico desenvolvido para a presente EP esta constituido da
seguinte forma:

• Existem 11 funções principais:


- main(min_valor = 0, max_valor = 1, A = 0.670967749 , B =
0.23306751863, n = 10000, scale = 0.32, Seed = None) → esta função
é a “função principal” do código que permite a execuação das outras
funções.
- ponto_aleatorio(min_valor, max_valor) → esta função obtém um
número aleatório de uma distribuição uniforme entre dois valores de
entrada [min_valor, max_valor].
- f(A, B, x) → esta es la função principal que queremos integrar.
- crude(min_valor, max_valor, A, B, n, Seed) → esta função executa
o Monte Carlo Crude para nossa função específica f (x) no intervalo
x = min_valor, a x = max_valor.
- HitMiss(min_valor, max_valor, A, B, n, Seed) → esta função exe-
cuta o Monte Carlo Hit or Miss para nossa função específica f (x) no
intervalo x = min_valor, a x = max_valor.
- Expo(shape, scale, x) → esta é a função densidade de probabilidade
g(x).
- ponto_aleatorio_Expo(min_valor, max_valor, shape, scale) → esta
função obtém um número aleatório da distribuição g(x) .
- ImpSam(min_valor, max_valor, A, B, n, scale, Seed) → esta função
executa o Monte Carlo Importance Sampling para nossa função espe-
cífica f (x) no intervalo x = min_valor, a x = max_valor.
- Poli(a, b, c, d, e, x) → esta é a função de control polinomial.
- ConVar(min_valor, max_valor, A, B, n, Seed) → esta função exe-
cuta o Monte Carlo Control Variates para nossa função específica f (x)
no intervalo x = min_valor, a x = max_valor.
- StDeEstimative(min_valor = 0, max_valor = 1, A = 0.670967749,
B = 0.23306751863, scale = 0.32, Seed = None) → cálculo das esti-
mativas da variância.

5
6 Apêndice B
6.1 Figuras dos Resultados Apresentados pelo Código
Numérico no Final de cada Execuação

Figura 1: Resultados.

6
7 Bibliografia
1 Sobol, I. M. "Método de Monte Carlo". Moscou: Editorial Mir. 1983.

2 Hammersley, J. M.; Handscomb, D. C. "Monte Carlo Methods". Lon-


don: Methuen & Co LTD, 1975.

3 Fishman, G. S. "Monte Carlo: Concepts, Algorithms, and Applicati-


ons". New York: Springer, 1995.

4 Mark, S, Mordechai S. "Applications of Monte Carlo Method in Science


and Engineering". London, United Kingdom, IntechOpen, 2011.

5 Metropolis, N., Ulam, S. "The Monte Carlo Method". Journal of the


American Statistical Association. N44 (247). P.335–341, 1949.

6 Beskin, N. "Fracciones maravillosas". Mir Moscú, 1987.

7 Dekking, M. "A Modern Introduction to Probability and Statistics".


Springer, 2005.

8 Asmussen, S., Glynn, P. W. "Stochastic Simulation. Algorithms and


Analysis". Springer, 2010.

Você também pode gostar