Jak działa metoda transformacji odwrotnej?

21

Jak działa metoda inwersji?
Powiedzmy, że mam losową próbkę o gęstości powyżej a zatem z cdf na . Następnie metodą inwersji otrzymuję rozkład jako . f ( x ; θ ) = 1X1,X2),...,Xn 0<x<1FX(x)=x1/θ(0,1)XF - 1 X(u)=uθfa(x;θ)=1θx(1-θ)θ
0<x<1faX(x)=x1/θ(0,1)XfaX-1(u)=uθ

Więc czy ma rozkład ? Czy tak działa metoda inwersji? XuθX

u<-runif(n)
x<-u^(theta)
Clarkson
źródło
3
Zobacz nasze wątki na temat transformaty całkowej prawdopodobieństwa .
whuber
1
Tak, chociaż zwykle nazywa się to „transformatą całkową prawdopodobieństwa”. Spróbuj wyprowadzić funkcję rozkładu aby zobaczyć, dlaczego to działa. fa-1(U)
dsaxton

Odpowiedzi:

20

Metoda jest bardzo prosta, więc opiszę ją prostymi słowami. Najpierw weźmy funkcję rozkładu skumulowanego jakiejś dystrybucji, z której chcemy próbkować. Funkcja przyjmuje jako dane wejściowe pewną wartość i mówi, jakie jest prawdopodobieństwo uzyskania . Więc x X xfaXxXx

faX(x)=Par(Xx)=p

odwrotność takiej funkcji funkcyjnej, przyjmowałby jako wejście i zwrócił . Zauważmy, że „s są rozłożone równomiernie - to może być wykorzystywane do pobierania próbek z każdego jeśli wiesz . Metoda nazywana jest próbkowaniem z transformacją odwrotną . Pomysł jest bardzo prosty: łatwo jest równomiernie próbkować wartości z , więc jeśli chcesz próbkować z jakiegoś , po prostu weź wartości i przekaż przez w celu otrzymania „s p x p F X F - 1 X U ( 0 , 1 ) F X u U ( 0 , 1 ) u F - 1 X xfaX-1pxpfaXfaX-1U(0,1)faXuU(0,1)ufaX-1x

faX-1(u)=x

lub w R (dla rozkładu normalnego)

U <- runif(1e6)
X <- qnorm(U)

Aby to zobrazować, spójrz na CDF poniżej, ogólnie myślimy o rozkładach w kategoriach spojrzenia na oś dla prawdopodobieństwa wartości z osi . W przypadku tej metody próbkowania robimy coś przeciwnego i zaczynamy od „prawdopodobieństw” i używamy ich do wybierania powiązanych z nimi wartości. Przy rozkładach dyskretnych traktujesz jako linię od do i przypisujesz wartości na podstawie tego, gdzie w tym wierszu leży punkt (np. jeśli lub jeśli do próbkowania z ).x U 0 1 u 0 0 u < 0,5 1 0,5 u 1 B e r n o u l l i ( 0,5 )yxU01u00u<0,510,5u1bmirnoullja(0,5)

wprowadź opis zdjęcia tutaj

Niestety, nie zawsze jest to możliwe, ponieważ nie każda funkcja ma swoją odwrotność, np. Nie można użyć tej metody z rozkładami dwuwymiarowymi. Nie musi to być również najbardziej wydajna metoda we wszystkich sytuacjach, w wielu przypadkach istnieją lepsze algorytmy.

Pytasz także, jaki jest rozkład . Ponieważ jest odwrotnością , to i , więc tak, wartości uzyskane za pomocą takie metody mają ten sam rozkład, jak . Możesz to sprawdzić za pomocą prostej symulacjiF - 1 X F X F X ( F - 1 X ( u ) ) = u F - 1 X ( F X ( x ) ) = x XfaX-1(u)faX-1faXfaX(faX-1(u))=ufaX-1(faX(x))=xX

U <- runif(1e6)
all.equal(pnorm(qnorm(U)), U)
Tim
źródło
Dobra odpowiedź. Ta metoda działa, gdy masz rozkłady takie jak wykładniczy, Cauchy, Geometryczny, Pareto, Logistyczny, Ekstremalna wartość Weibull , itp. Na przykład nie możesz znaleźć zamkniętego formularza dla rozkładu normalnego . Dlatego nie będziesz mógł użyć tej metody. Możesz wypróbować inne metody, takie jak Metoda odrzucenia .
Abbas Salimi,
2
Możesz użyć metody transformacji odwrotnej z rozkładem normalnym. Istnieje wiele implementacji normalnego odwrotnego CDF . Na przykład, możesz napisać normalny odwrotny CDF za pomocą uzupełniającej funkcji błędu . Przykładowa implementacja erfc jest tutaj . Nie koduj sam siebie; użyj biblioteki. Brak formuły w postaci zamkniętej nie oznacza, że ​​nie można stosować przybliżeń numerycznych wysokiej jakości.
Matthew Gunn
2

Tak, ma rozkład . XUθX

Przydałyby się dwa dodatkowe punkty intuicji dotyczące metody transformacji odwrotnej

(1) Aby zrozumieć, co tak naprawdę oznacza zapoznaj się z wykresem w odpowiedzi Tima, aby pomóc mi zrozumieć funkcję kwantylu (odwrotny CDF)fa-1

(2) [Proszę, po prostu zignoruj ​​poniższe, jeśli wprowadza więcej zamieszania zamiast przejrzystości]

Niech być dowolną zmienną losową (Ap) z ciągłym i wyłącznie zwiększenia ED . Następnie Uwaga na notację: jest rv Dlatego funkcja rv , jest sama rv. F F ( X ) Unif ( 0 , 1 ) X X F ( X )Xfa

fa(X)Unif(0,1)

XXfa(X)

Na przykład, jeśli odrzucisz pytanie, aby mieć dostęp do i chcesz wygenerować standardowy mundur, to . Niech nazywają tę zmienną losową . Więc Wracając do Twojego pytania, masz za zadanie przeciwnie: do generowania z . Rzeczywiście XX1/θUnif(0,1)U

U=X1/θ
XU
X=Uθ

PS. Alternatywne nazwy tej metody to transformata całkowa prawdopodobieństwa, próbkowanie odwrotnej transformacji, transformacja kwantylowa oraz, w niektórych źródłach, „podstawowe twierdzenie o symulacji”.

den2042
źródło