# 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 $u$ entre 0 e 1, interpretadas como uma probabilidade, retornando o menor número $x\in \mathbb {R}$ tal que $F(x)\geq u$ para a função de FDA $F$ de uma variável aleatória. Por exemplo, imagine que $F$ é 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.
Transformação de amostra uniforme para normal :
| $u$ | $F^{-1}(u)$ |
| .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: 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.

## Definição formal

Seja uma variável aleatória $X\in \mathbb {R}$, a variável aleatória $F_{X}^{-1}(U)$ tem a mesma distribuição que $X$, onde $F_{X}^{-1}$ é o inverso generalizado da FDA $F_{X}$ de $X$ e $U$ é uniforme em $[0,1]$.
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 $X$ com FDA $F_{X}$, a variável aleatória $U=F_{X}(X)$ é uniforme em $[0,1]$.

## Intuição

A partir de $U\sim \mathrm {Unif} [0,1]$, queremos gerar $X$ com FDA $F_{X}(x).$ Nós consideramos $F_{X}(x)$ ser uma função contínua, estritamente crescente, o que proporciona boa intuição.
Procuramos encontrar alguma transformação estritamente monótona $T:[0,1]\mapsto \mathbb {R}$, de modo que $T(U){\overset {d}{=}}X$. Nós teremos$F_{X}(x)=\Pr(X\leq x)=\Pr(T(U)\leq x)=\Pr(U\leq T^{-1}(x))=T^{-1}(x),{\text{ for }}x\in \mathbb {R} ,$ onde o último passo usou $\Pr(U\leq y)=y$ quando $U$ tem distribuição uniforme em $[0,1]$.
Então nós obtemos $F_{X}$ como função inversa de $T$, ou, equivalentemente $T(u)=F_{X}^{-1}(u),u\in [0,1].$
Portanto, podemos gerar $X$ de $F_{X}^{-1}(U).$

## O método

O problema que o método da transformação inversa resolve é o seguinte:
* Seja $X$ uma variável aleatória cuja distribuição pode ser descrita pela função de distribuição acumulada $F_{X}$.
* Queremos gerar valores de $X$ 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 $u$ da distribuição uniforme padrão no intervalo $[0,1]$, ou seja, de $U\sim \mathrm {Unif} [0,1].$
* Encontre o inverso generalizado da FDA desejada, ou seja $F_{X}^{-1}(u)$.
* Calcule $X'(u)=F_{X}^{-1}(u)$. A variável aleatória computada $X'(U)$ tem distribuição $F_{X}$ e, portanto, o mesmo comportamento que $X$.
Dito de forma diferente, dada uma FDA $F_{X}$ e uma variável uniforme $U\in [0,1]$, a variável aleatória $X=F_{X}^{-1}(U)$ possui a mesma distribuição $F_{X}$.
No caso contínuo, um tratamento dessas funções inversas como objetos que satisfazem equações diferenciais pode ser feito. Algumas dessas equações diferenciais admitem soluções explícitas em séries de potências, apesar de sua não linearidade.

## Exemplos

* Por exemplo, suponha que temos uma variável aleatória $U\sim \mathrm {Unif} (0,1)$ e uma FDA
    ${\begin{aligned}F(x)=1-\exp(-{\sqrt {x}})\end{aligned}}$
    Para realizar uma inversão, queremos resolver para $F(F^{-1}(u))=u$
    ${\begin{aligned}F(F^{-1}(u))&=u\\1-\exp \left(-{\sqrt {F^{-1}(u)}}\right)&=u\\F^{-1}(u)&=(-\log(1-u))^{2}\\&=(\log(1-u))^{2}\end{aligned}}$
    A partir daqui, executaríamos os passos um, dois e três, acima listados.
* Como outro exemplo, usamos a distribuição exponencial com $F_{X}(x)=1-e^{-\lambda x}$ para x ≥ 0 (e 0 caso contrário). Resolvendo y=F(x) obtemos a função inversa
    $x=F^{-1}(y)=-{\frac {1}{\lambda }}\ln(1-y).$
    Isso significa que se desenharmos alguns $y_{0}$ de um $U\sim \mathrm {Unif} (0,1)$ e calcular $x_{0}=F_{X}^{-1}(y_{0})=-{\frac {1}{\lambda }}\ln(1-y_{0}),$ Esse $x_{0}$ tem distribuição exponencial.
    A ideia é ilustrada no gráfico a seguir:
    Os números aleatórios y$_i$ são gerados a partir de uma distribuição uniforme entre 0 e 1, ou seja, Y ~ U(0, 1). Eles são representados como pontos coloridos no eixo y. Cada um dos pontos é mapeado de acordo com x = F $^{−1}$(y), que é mostrado com setas cinzas para dois pontos de exemplo. Neste exemplo, usamos uma distribuição exponencial. Portanto, para x ≥ 0, a densidade de probabilidade é $\varrho _{X}(x)=\lambda e^{-\lambda \,x}$ e a FDA é $F(x)=1-e^{-\lambda \,x}$ . Portanto, $x=F^{-1}(y)=-{\frac {\ln(1-y)}{\lambda }}$. Podemos ver que, usando esse método, muitos pontos acabam próximos de 0 e apenas alguns pontos acabam tendo valores de x altos - exatamente como é esperado para uma distribuição exponencial
    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
    $x=F^{-1}(y)=-{\frac {1}{\lambda }}\ln(y).$

## Prova de correção

Seja $F$ uma FDA e deixe $F^{-1}$ seja sua função inversa generalizada (usando o ínfimo porque os FDAs são fracamente monotônicas e contínuas à direita ):
    $F^{-1}(u)=\inf \;\{x\mid F(x)\geq u\}\qquad (0<u<1).$
Alegação: Se $U$ é uma v.a. uniforme em $[0,1]$ então $F^{-1}(U)$ tem $F$ como sua FDA.
Prova:
    ${\begin{aligned}&\Pr(F^{-1}(U)\leq x)\\&=\Pr(U\leq F(x))\quad &(F{\text{ é contínua à direita, então}}\{u:F^{-1}(u)\leq x\}=\{u:u\leq F(x)\})\\&=F(x)\quad &({\text{porque }}\Pr(U\leq u)=u,{\text{ quando }}U{\text{ é uniforme no intervalo }}[0,1])\\\end{aligned}}$

## Distribuição truncada

O método da transformação inversa pode ser simplesmente estendido para casos de distribuições truncadas no intervalo $(a,b]$ 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 $u$ uniformemente distribuído entre 0 e 1, este gera $u$ uniformemente distribuído entre $F(a)$ e $F(b)$, e então seguir o roteiro novamente para obtenção de $F^{-1}(u)$.

## Redução do número de inversões

Para 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) 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.

## Implementações em software

Existem 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 ou a FDA.
* Biblioteca C: UNU.RAN
* Biblioteca R: Runuran
* Subpacote de amostragem Python localizado em scipy.stats