Método da transformação inversa
O método de transformação inversa (também conhecida como amostragem de inversão, transformada integral de probabilidade inversa, amostragem de transformação inversa ou transformada de Smirnov) é um método básico para amostragem de números pseudoaleatórios, ou seja, para gerar números de amostra aleatoriamente a partir de qualquer distribuição de probabilidade dada sua função de distribuição acumulada (FDA).
O método da transformação inversa pega amostras uniformes de um número entre 0 e 1, interpretadas como uma probabilidade, retornando o menor número tal que para a função de FDA de uma variável aleatória. Por exemplo, imagine que é a distribuição normal padrão com média zero e desvio padrão um. A tabela abaixo mostra amostras retiradas da distribuição uniforme e sua representação na distribuição normal padrão.
.5 | 0 |
.975 | 1.95996 |
.995 | 2,5758 |
.999999 | 4.75342 |
1-2 −52 | 8.12589 |
Estamos escolhendo aleatoriamente uma proporção da área sob a curva e retornando o número no domínio de forma que exatamente essa proporção da área ocorra à esquerda desse número. Intuitivamente, é improvável que escolhamos um número próximo às caudas da função porque há uma quantidade mínima de área nelas que exigiria a escolha de um número demasiado próximo do zero ou do um.
Computacionalmente, esse método envolve calcular a função quantil da distribuição — em outras palavras, calcular a função de distribuição acumulada (FDA) da distribuição (que mapeia um número no domínio para uma probabilidade entre 0 e 1) e então inverter essa função. Esta é a origem do termo "inverso" ou "inversão" na maioria dos nomes alternativos deste método. Observe que, para uma distribuição discreta, calcular a FDA não é, em geral, muito difícil: simplesmente somamos as probabilidades individuais para os vários pontos da distribuição. Para uma distribuição contínua, no entanto, precisamos integrar a função de densidade de probabilidade (FDP) da distribuição, o que é impossível de fazer analiticamente para a maioria das distribuições (incluindo a distribuição normal). Como resultado, esse método pode ser computacionalmente ineficiente para muitas distribuições e outros métodos são utilizados no lugar; no entanto, é um método útil para construir amostradores de aplicação mais aplicáveis na geralidade, como os baseados em amostragem de rejeição.
Para a distribuição normal, a falta de uma expressão analítica para a função quantil correspondente significa que outros métodos (por exemplo, a transformada de Box-Muller) podem ser preferidos computacionalmente. Muitas vezes, mesmo para distribuições simples, o método da transformação inversa pode ser melhorado:[1] veja, por exemplo, o algoritmo zigurate e a amostragem de rejeição. Por outro lado, é possível aproximar a função quantil da distribuição normal com extrema precisão usando polinômios de grau moderado e, de fato, o método para fazer isso é rápido o suficiente que a amostragem por inversão seja agora o método padrão para amostragem de uma distribuição normal no pacote estatístico R.[2]
Definição formal
editarSeja uma variável aleatória , a variável aleatória tem a mesma distribuição que , onde é o inverso generalizado da FDA de e é uniforme em .[3]
Para variáveis aleatórias contínuas, a transformação integral de probabilidade inversa é de fato o inverso da transformação integral de probabilidade, que afirma que para uma variável aleatória contínua com FDA , a variável aleatória é uniforme em .
Intuição
editarA partir de , queremos gerar com FDA Nós consideramos ser uma função contínua, estritamente crescente, o que proporciona boa intuição.
Procuramos encontrar alguma transformação estritamente monótona , de modo que . Nós teremos onde o último passo usou quando tem distribuição uniforme em .
Então nós obtemos como função inversa de , ou, equivalentemente
Portanto, podemos gerar de
O método
editarO problema que o método da transformação inversa resolve é o seguinte:
- Seja uma variável aleatória cuja distribuição pode ser descrita pela função de distribuição acumulada .
- Queremos gerar valores de que são distribuídos de acordo com esta distribuição.
O método da transformação inversa funciona da seguinte maneira:
- Gere um número aleatório da distribuição uniforme padrão no intervalo , ou seja, de
- Encontre o inverso generalizado da FDA desejada, ou seja .
- Calcule . A variável aleatória computada tem distribuição e, portanto, o mesmo comportamento que .
Dito de forma diferente, dada uma FDA e uma variável uniforme , a variável aleatória possui a mesma distribuição .[3]
No caso contínuo, um tratamento dessas funções inversas como objetos que satisfazem equações diferenciais pode ser feito.[4] Algumas dessas equações diferenciais admitem soluções explícitas em séries de potências, apesar de sua não linearidade.[5]
Exemplos
editar- Por exemplo, suponha que temos uma variável aleatória e uma FDA
- Para realizar uma inversão, queremos resolver para
- A partir daqui, executaríamos os passos um, dois e três, acima listados.
- Como outro exemplo, usamos a distribuição exponencial com para x ≥ 0 (e 0 caso contrário). Resolvendo y=F(x) obtemos a função inversa
- Isso significa que se desenharmos alguns de um e calcular Esse tem distribuição exponencial.
- A ideia é ilustrada no gráfico a seguir:
- Note que a distribuição não muda se começarmos com 1-y em vez de y. Para fins computacionais, portanto, é suficiente gerar números aleatórios y em [0, 1] e então simplesmente calcular
Prova de correção
editarSeja uma FDA e deixe seja sua função inversa generalizada (usando o ínfimo porque os FDAs são fracamente monotônicas e contínuas à direita ):[6]
Alegação: Se é uma v.a. uniforme em então tem como sua FDA.
Prova:
Distribuição truncada
editarO método da transformação inversa pode ser simplesmente estendido para casos de distribuições truncadas no intervalo sem que seja necessário recorrer ao custo computacional de uma amostragem de rejeição: o mesmo algoritmo pode ser seguido, mas em vez de gerar um número aleatório uniformemente distribuído entre 0 e 1, este gera uniformemente distribuído entre e , e então seguir o roteiro novamente para obtenção de .
Redução do número de inversões
editarPara obter um grande número de amostras, é necessário realizar o mesmo número de inversões da distribuição. Uma maneira possível de reduzir o número de inversões e, ao mesmo tempo, obter um grande número de amostras é a aplicação do chamado amostrador de Monte Carlo de Colocação Estocástica (amostrador SCMC[7]) dentro de uma estrutura de expansão de caos polinomial. Isso nos permite gerar qualquer número de amostras de Monte Carlo, com custo computacional baixo, usando apenas algumas inversões da distribuição original a partir das amostras independentes de uma variável para as quais as inversões estão disponíveis de maneira analítica, como ocorre, por exemplo, no caso de uma variável normal padrão.[8]
Implementações em software
editarExistem implementações em software disponíveis para aplicar o método de amostragem inversa usando aproximações numéricas do inverso no caso de não estar disponível em formato fechado. Por exemplo, uma aproximação da inversa pode ser calculada se o usuário fornecer alguma informação sobre as distribuições, como a FDP[9] ou a FDA.
- Biblioteca C: UNU.RAN[10]
- Biblioteca R: Runuran[11]
- Subpacote de amostragem Python localizado em scipy.stats[12][13]
Ver também
editar- Cópula, definida por meio de transformação integral de probabilidade.
- Função quantil, para a construção explícita de FDAs inversas.
- Função de distribuição inversa para uma definição matemática precisa para distribuições com componentes discretos.
Referências
- ↑ Luc Devroye (1986). Non-Uniform Random Variate Generation (PDF). New York: Springer-Verlag. Consultado em 12 de abril de 2012. Cópia arquivada (PDF) em 18 de agosto de 2014
- ↑ «R: Random Number Generation»
- ↑ a b McNeil, Alexander J.; Frey, Rüdiger; Embrechts, Paul (2005). Quantitative risk management. Col: Princeton Series in Finance. [S.l.]: Princeton University Press, Princeton, NJ. ISBN 0-691-12255-5
- ↑ Steinbrecher, György; Shaw, William T. (19 de março de 2008). «Quantile mechanics». European Journal of Applied Mathematics. 19 (2). doi:10.1017/S0956792508007341
- ↑ Arridge, Simon; Maass, Peter; Öktem, Ozan; Schönlieb, Carola-Bibiane (2019). «Solving inverse problems using data-driven models». Acta Numerica (em inglês). 28: 1–174. ISSN 0962-4929. doi:10.1017/S0962492919000059
- ↑ Luc Devroye (1986). «Section 2.2. Inversion by numerical solution of F(X) = U». Non-Uniform Random Variate Generation. New York: Springer-Verlag
- ↑ Grzelak, L.A.; Witteveen, J.A.S.; Oosterlee, C.W.; Suárez-Taboada, M. (2018). «The stochastic collocation Monte Carlo sampler: Highly efficient sampling from 'expensive' distributions». Quantitative Finance: 1–18. ISSN 1469-7688. doi:10.1080/14697688.2018.1459807. Consultado em 28 de agosto de 2024
- ↑ L.A. Grzelak, J.A.S. Witteveen, M. Suarez, and C.W. Oosterlee. The stochastic collocation Monte Carlo sampler: Highly efficient sampling from “expensive” distributions. https://ssrn.com/abstract=2529691
- ↑ Derflinger, Gerhard; Hörmann, Wolfgang; Leydold, Josef (2010). «Random variate generation by numerical inversion when only the density is known» (PDF). ACM Transactions on Modeling and Computer Simulation. 20 (4). doi:10.1145/945511.945517
- ↑ «UNU.RAN - Universal Non-Uniform RANdom number generators»
- ↑ «Runuran: R Interface to the 'UNU.RAN' Random Variate Generators». 17 de janeiro de 2023
- ↑ «Random Number Generators (Scipy.stats.sampling) — SciPy v1.12.0 Manual»
- ↑ Baumgarten, Christoph; Patel, Tirth (2022). «Automatic random variate generation in Python». Proceedings of the 21st Python in Science Conference. [S.l.: s.n.] pp. 46–51. doi:10.25080/majora-212e5952-007