Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

O que é o método de Amostragem conhecido por Amostragem por Rejeição? Como ele é útil?

+1 voto
342 visitas
perguntada Out 19, 2015 em Estatística por danielcajueiro (5,331 pontos)  
Compartilhe

1 Resposta

+1 voto
respondida Out 19, 2015 por danielcajueiro (5,331 pontos)  

Imagine que você seja o responsável pela gestão de risco das carteiras de investimentos de um banco. Provavelmente, essa carteira deve incluir títulos do governo, empréstimos para empresas do setor real (por exemplo, Embraer), empréstimos para clientes (de vários tipos) e, possivelmente, aplicações em ativos e contratos derivativos de várias empresas brasileiras listadas na bolsa de valores.

Se você tiver amostras das variáveis aleatórias importantes para a modelagem da sua carteira (por exemplo, retorno da ação da Petr3 na bolsa, taxa de inadimplência de clientes de um determinado tipo etc), você pode usar métodos de Monte Carlo para gerar modelos que permitam estudar o risco de sua carteira de investimento. Ou seja, você supõe que uma determinada variável aleatória de interesse se comporta de acordo com uma determinada distribuição, você gera amostras dessa distribuição e usa essas amostras para estudar, por exemplo, o risco agregado de sua carteira.

Métodos de amostragem servem exatamente para isso, para gerar amostras de uma determinada variável aleatória.

O método de Amostragem por Rejeição é justamente um dos métodos que fazem isso. Ele é bem intuitivo e consiste basicamente de dois passos:

Passo 1: Você gera uma variável aleatória usando uma distribuição auxiliar, que você tem amostras de variáveis aleatórias disponíveis (por exemplo, a distribuição uniforme)

Passo 2: Você testa se essa variável aleatória poderia ter vinda da distribuição de interesse. Em caso positivo, você aceita. Em caso contrário, você rejeita.

Você pode dar um exemplo?

Considere que você deseja gerar uma amostra da variável aleatória conhecida como triangular, cuja função de distribuição seja dada por:

\(f(x)=x\) se \(x\in [0,1]\)

\(f(x)=2-x\) se \(x\in [1,2]\)

Suponha que você tem disponível amostras de variáveis aleatórias com distribuição uniforme. Como você pode usar a distribuição uniforme para gerar a distribuição de uma variável aleatória triangular?

Usando o método de amostragem por rejeição, você poderia fazer o seguinte:

1) Gerar uma variável uniforme \((x,y)\), onde \(x\) tem distribuição uniforme no intervalo \([0,2]\) e \(y\) tem distribuição uniforme no intervalo \([0,1]\).

2) Aceitar apenas os pontos \(x\) com a probabilidade exatamente igual aquela dada pela função de distribuição \(f(x)\). Isso é feito aceitando as variáveis aleatórias que tenham \(y<=f(x)\). Veja as regiões definidas na figura abaixo. </p>

Rejection sampling method

Implementamos esse código em Python para gerar amostras de uma distribuição de probabilidade triangular usando amostragem por rejeição:

import matplotlib.pyplot as plt
import random
import numpy as np

def triangularDistribution(n):
    sample=np.empty([n])
    i=0
    while(i<n):
        x=np.random.uniform(0,2)
        y=np.random.uniform(0,1)
        if(x<1):
            if(y<=x):
                sample[i]=x                                                                                                                         
                i=i+1        
        else:        
            if(y<=2-x):
                sample[i]=x                                                                                                                         
                i=i+1        
    return sample

if __name__ == '__main__':
    n=5000 #numero de amostras
    sample=triangularDistribution(n)


    fig = plt.figure()
    ax = fig.add_subplot(111)  
    ax=plt.hist(sample,bins=50)
    plt.title('Distribuicao Triangular')    

Usando esse código, geramos uma amostra de variáveis aleatórias triangulares apresentada no seguinte histograma:

Rejection sampling

...