Método da transformação inversa

Fonte: testwiki
Revisão em 15h01min de 6 de setembro de 2024 por imported>Marsjo.santos
(dif) ← Revisão anterior | Revisão atual (dif) | Revisão seguinte → (dif)
Saltar para a navegação Saltar para a pesquisa

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 tal que F(x)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 F1(u)
.5 0
.975 1.95996
.995 2,5758
.999999 4.75342
1-2 −52 8.12589
Gráfico do método da transformação inversa para distribuição normal

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

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

Intuição

A partir de UUnif[0,1], queremos gerar X com FDA FX(x). Nós consideramos FX(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], de modo que T(U)=dX. Nós teremosFX(x)=Pr(Xx)=Pr(T(U)x)=Pr(UT1(x))=T1(x), for x, onde o último passo usou Pr(Uy)=y quando U tem distribuição uniforme em [0,1].

Então nós obtemos FX como função inversa de T, ou, equivalentemente T(u)=FX1(u),u[0,1].

Portanto, podemos gerar X de FX1(U).

O método

Gráfico da técnica de inversão de x para F(x). No canto inferior direito vemos a função regular e no canto superior esquerdo sua inversão
Esquema da amostragem por transformada inversa. A função inversa de y=FX(x) pode ser definida por FX1(y)=inf{x|FX(x)y}
Uma animação de como o método da transformação inversa gera valores aleatórios distribuídos normalmente a partir de valores aleatórios distribuídos uniformemente

O problema que o método da transformação inversa resolve é o seguinte:

O método da transformação inversa funciona da seguinte maneira:

  1. Gere um número aleatório u da distribuição uniforme padrão no intervalo [0,1], ou seja, de UUnif[0,1].
  2. Encontre o inverso generalizado da FDA desejada, ou seja FX1(u).
  3. Calcule X(u)=FX1(u). A variável aleatória computada X(U) tem distribuição FX e, portanto, o mesmo comportamento que X.

Dito de forma diferente, dada uma FDA FX e uma variável uniforme U[0,1], a variável aleatória X=FX1(U) possui a mesma distribuição FX.[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

  • Por exemplo, suponha que temos uma variável aleatória UUnif(0,1) e uma FDA
F(x)=1exp(x)
Para realizar uma inversão, queremos resolver para F(F1(u))=u
F(F1(u))=u1exp(F1(u))=uF1(u)=(log(1u))2=(log(1u))2
A partir daqui, executaríamos os passos um, dois e três, acima listados.
  • Como outro exemplo, usamos a distribuição exponencial com FX(x)=1eλx para x ≥ 0 (e 0 caso contrário). Resolvendo y=F(x) obtemos a função inversa
x=F1(y)=1λln(1y).
Isso significa que se desenharmos alguns y0 de um UUnif(0,1) e calcular x0=FX1(y0)=1λln(1y0), Esse x0 tem distribuição exponencial.
A ideia é ilustrada no gráfico a seguir:
Os números aleatórios yi 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 é ϱX(x)=λeλx e a FDA é F(x)=1eλx . Portanto, x=F1(y)=ln(1y)λ. 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=F1(y)=1λln(y).

Prova de correção

Seja F uma FDA e deixe F1 seja sua função inversa generalizada (usando o ínfimo porque os FDAs são fracamente monotônicas e contínuas à direita ):[6]

F1(u)=inf{xF(x)u}(0<u<1).

Alegação: Se U é uma v.a. uniforme em [0,1] então F1(U) tem F como sua FDA.

Prova:

Pr(F1(U)x)=Pr(UF(x))(F é contínua à direita, então{u:F1(u)x}={u:uF(x)})=F(x)(porque Pr(Uu)=u, quando U é uniforme no intervalo [0,1])

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 F1(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[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

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[9] ou a FDA.

Ver também

Predefinição:Referências