Czy to jest poprawne ? (generowanie skróconej normy-wielowymiarowej-gaussowskiej)


10

Jeśli XRn, XN(0_,σ2I) tj.

fX(x)=1(2πσ2)n/2exp(||x||22σ2)

Chcę analogicznej wersji skróconego rozkładu normalnego w przypadku wielu odmian.

Dokładniej, chcę wygenerować ograniczony normą (do wartości a ) wielowymiarowy Gaussowski Y st

fY(y)={c.fX(y), if ||y||a0, otherwise .
gdzie c=1Prob{||X||a}

Teraz obserwuję:

Jeśli x=(x1,x2),,xn) ,||x||za

|xn|Tmax(0,(a21n1xi2))

Dlatego wybierając jako próbki Gaussa, można ograniczyć jako próbkę poza rozkładem obciętym -normalnym (zgodnie z rozkładem ogona Gaussa ) , z wyjątkiem jego losowo wybranego znaku z prawdopodobieństwem . x nT N T ( 0 , σ 2 ) 1 / 2x1,,xn1xnTNT(0,σ2)1/2

Teraz moje pytanie brzmi:

Jeśli wygeneruję każdą próbkę wektorową z( X 1 , , X n )(x1,,xn)(X1,,Xn) jako,

x1,,xn1N(0,σ2)

i

xn=Z1Z2  gdzie, , , (tj. ścięty-skalar-normalny RV zZ 2 ~ N T ( 0 , σ 2 ) t ( x 1 , ... , x n - 1 )  Z1{±1 w.p. 1/2}Z2NT(0,σ2)T(x1,,xn1)max(0,(a21n1xi2))

Czy będzie normatywnym ( ) wielowymiarowym gaussowskim? (tj. taki sam jak zdefiniowany powyżej ). Jak powinienem zweryfikować? Wszelkie inne sugestie, jeśli tak nie jest?a Y(X1,X2,,Xn)aY

EDYTOWAĆ:

Oto wykres punktowy punktów w przypadku 2D z normą obciętą do wartości powyżej „1” Skrócony normalnie wielowymiarowy gaussowski

Uwaga: Poniżej znajduje się kilka świetnych odpowiedzi, ale brakuje uzasadnienia, dlaczego ta propozycja jest błędna. W rzeczywistości to główny punkt tego pytania.


1
@ Xi'an Dziękujemy za zapytanie i zainteresowanie. Oto moje uzasadnienie dla twojego argumentu: Algorytm, o którym mowa, potrzebuje RV , które są n - 1 Gaussianami i Skróconym Gaussianem, gdy są widoczne dla próbki ; dokładniej, jeden z rozkładów różni się dla każdej próbki. Są one nie odpowiednie marginals. Ponieważ każdy x i , i = 1 , , n - 1 występuje w dwóch kategoriach: x i i x n ; i x nX1Xnn1xi,i=1,,n1xixnxnwyraźnie zmienia się w czasie, ponieważ próg obcięcia zmienia się dla każdej próbki. Dostarczony dowód rozkładu ma problem w dokładnie tym samym sensie. Marginesy są po prostu niedostępne.
Uwielbia prawdopodobieństwo

Twój (niepoprawny) algorytm generuje najpierw a następnie X nN T ( 0 , σ 2 ) dla X 1 , , X n - 1 . Dlatego pierwsze pokolenie pochodzi z marginesu, a drugie pokolenie jest warunkowe. Mój dowód pokazuje, że margines nie jest (Ga-1) wymiarowym rozkładem Gaussa.
X1,,Xn1N(0,σ2)
XnNT(0,σ2)
X1,,Xn1
Xi'an

@ Xi'an Warunkowy gaussian nie oznacza marginalnego gaussa !!
Loves Prawdopodobieństwo

@ Xi'an Dobra, chodzi mi o to. Gdy są generowane jako Gaussianie, a późniejsze terminy zależą od tych wartości, marginesy X 1 , , X n - 1 nie będą Gaussowcami. To, co powiedziałeś, jest dokładnie takie samo. Mogą być „warunkowo gaussowskie”, ale zdecydowanie nie „marginalnie gaussowskie”. Mój wcześniejszy komentarz to znaczy. X1,,Xn1X1,,Xn1
Kocha prawdopodobieństwo

1
@ Xi'an Bardzo dziękuję za odpowiedzi od pacjentów. W końcu zrozumiałem mój błąd związany z twoją stymulacją i napisałem również własną szczegółową odpowiedź, wyjaśniając to samo. Ale przepraszam, mam nadzieję, że nie masz nic przeciwko, prawdopodobnie powinienem przyjąć odpowiedź Whubera za jego szczegółowe wyjaśnienie, które pomaga w rozwiązaniu problemu.
Loves Prawdopodobieństwo

Odpowiedzi:


11

Wielowymiarowy rozkład normalny jest sferycznie symetryczny. Poszukiwany rozkład obcina promień ρ = | | X | | 2 poniżej o . Ponieważ to kryterium zależy tylko od długości X , skrócony rozkład pozostaje sferycznie symetryczny. Ponieważ ρ jest niezależne od sferycznego kąta X / | | X | | i ρXρ=||X||2aXρX/||X|| marozkład χ ( n ) , dlatego możesz wygenerować wartości z rozkładu obciętego w kilku prostych krokach:ρσχ(n)

  1. Wygeneruj .XN(0,In)

  2. Wygeneruj jako pierwiastek kwadratowy rozkładu χ 2 ( d ) obciętego w ( a / σ ) 2 .Pχ2(d)(a/σ)2

  3. Niech .Y=σPX/||X||

W kroku 1 jest uzyskiwany jako sekwencja d niezależnych realizacji standardowej zmiennej normalnej.Xd

W etapie 2, jest łatwo wytwarzany przez odwracanie odwrotna dystrybuanta F - 1 o × 2 ( d ) rozkład: wygenerować jednorodną zmienna U obsługiwane w zakresie (kwantyli) pomiędzy F ( ( / Ď ) 2 ) i 1 i ustaw P = PF1χ2(d)UF((a/σ)2)1 .P=F(U)

Oto histogram takich niezależnych realizacji σ P dla σ = 3 w n = 11 wymiarów, skrócony poniżej przy a = 7 . Wygenerowanie zajęło około sekundy, co świadczy o wydajności algorytmu.105σPσ=3n=11a=7

Postać

Czerwona krzywa jest gęstością skróconego rozkładu skalowanego przez σ = 3 . Jego ścisłe dopasowanie do histogramu świadczy o ważności tej techniki.χ(11)σ=3

Aby uzyskać intuicję dotyczącą obcięcia, rozważ przypadek , σ = 1 in n = 2 wymiary. Oto wykres rozrzutu Y 2 w stosunku do Y 1 (dla 10 4 niezależnych realizacji). Wyraźnie pokazuje otwór w promieniu a :a=3σ=1n=2Y2Y1104a

Rysunek 2

Na koniec zauważ, że (1) komponenty muszą mieć identyczne rozkłady (ze względu na symetrię sferyczną) i (2), z wyjątkiem sytuacji, gdy a = 0 , ten wspólny rozkład nie jest normalny. W rzeczywistości, jak rośnie duża, szybki spadek (jednoczynnikowa) rozkładu normalnego powoduje, że większość prawdopodobieństwa sferycznie obcięty wielowymiarowa normalne klaster w pobliżu powierzchni z n - 1 -sphere (o promieniu A ). Dystrybucja krańcowa musi zatem być zbliżona do skalowanej symetrycznej wersji Beta ( ( n - 1 ) / 2 , ( n -Xia=0an1a. rozkład skoncentrowany w przedziale ( - a , a ) . Jest to widoczne w poprzednim wykresie rozrzutu, w którym a = 3 σ jest już duży w dwóch wymiarach: punkty otaczają pierścień (sfera 2 - 1 ) o promieniu 3 σ((n1)/2,(n1)/2)(a,a)a=3σ213σ

Oto histogramy krańcowych z symulacji rozkładu wielkości w 3 wymiarach z a = 10 , σ = 1 (dla których aproksymującego beta ( 1 , 1 ) Rozkład jest jednolita)1053a=10σ=1(1,1)

Rycina 3

Ponieważ pierwsze marginesów procedury opisanej w pytaniu są normalne (z założenia), procedura ta nie może być poprawna.n1


Poniższy Rkod wygenerował pierwszą cyfrę. Jest on zbudowany z równoległych etapów 1-3 do wytwarzania . Został zmodyfikowany w celu wytworzenia drugiego postać zmieniając zmiennych , , i i wydający polecenia działki poYadnsigmaplot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010")y został wygenerowany.

Generowanie jest modyfikowane w kodzie w celu uzyskania wyższej rozdzielczości numerycznej: kod faktycznie generuje 1 - U i używa go do obliczenia PU1UP .

Tę samą technikę symulowania danych zgodnie z domniemanym algorytmem, podsumowania ich za pomocą histogramu i nałożenia histogramu można zastosować do przetestowania metody opisanej w pytaniu. Potwierdzi to, że metoda nie działa zgodnie z oczekiwaniami.

a <- 7      # Lower threshold
d <- 11     # Dimensions
n <- 1e5    # Sample size
sigma <- 3  # Original SD
#
# The algorithm.
#
set.seed(17)
u.max <- pchisq((a/sigma)^2, d, lower.tail=FALSE)
if (u.max == 0) stop("The threshold is too large.")
u <- runif(n, 0, u.max)
rho <- sigma * sqrt(qchisq(u, d, lower.tail=FALSE)) 
x <- matrix(rnorm(n*d, 0, 1), ncol=d)
y <- t(x * rho / apply(x, 1, function(y) sqrt(sum(y*y))))
#
# Draw histograms of the marginal distributions.
#
h <- function(z) {
  s <- sd(z)
  hist(z, freq=FALSE, ylim=c(0, 1/sqrt(2*pi*s^2)),
       main="Marginal Histogram",
       sub="Best Normal Fit Superimposed")
  curve(dnorm(x, mean(z), s), add=TRUE, lwd=2, col="Red")
}
par(mfrow=c(1, min(d, 4)))
invisible(apply(y, 1, h))
#
# Draw a nice histogram of the distances.
#
#plot(y[1,], y[2,], pch=16, cex=1/2, col="#00000010") # For figure 2
rho.max <- min(qchisq(1 - 0.001*pchisq(a/sigma, d, lower.tail=FALSE), d)*sigma, 
               max(rho), na.rm=TRUE)
k <- ceiling(rho.max/a)
hist(rho, freq=FALSE, xlim=c(0, rho.max),  
     breaks=seq(0, max(rho)+a, by=a/ceiling(50/k)))
#
# Superimpose the theoretical distribution.
#
dchi <- function(x, d) {
  exp((d-1)*log(x) + (1-d/2)*log(2) - x^2/2 - lgamma(d/2))
}
curve((x >= a)*dchi(x/sigma, d) / (1-pchisq((a/sigma)^2, d))/sigma, add=TRUE, 
      lwd=2, col="Red", n=257)

1
To wspaniała odpowiedź! Ale czy możesz również uprzejmie rzucić nieco światła na to, dlaczego przedmiotowa propozycja zawodzi? (Xi'an odpowiedź nie jest wystarczająco zadowalająca, widzę jakiś problem z jego argumentem, np. Kiedy się integruje)
Loves Probability

1
Dziękuję Ci bardzo. Ale czy mogę prosić o odpowiedź na mój pierwszy komentarz powyżej? Wygląda na to, że moja propozycja daje również dobry histogram wystarczająco blisko. Jestem zdezorientowany!! Gdzie jest błąd? Zauważ, że jest to główny punkt pytania i JEŚLI PRAWIDŁOWO , metoda wymaga tylko jednej „okrojonej-gaussowskiej” próbki PLUS Dzięki dostępności istniejących szybkich algorytmów prowadzi do ogromnych oszczędności (unika podziałów i mnożenia, oprócz unikając potrzeby stosunkowo bardziej złożonego skróconego ChiSquare)
Loves Prawdopodobieństwo

2
Tak blisko, jak mogę powiedzieć, proponujesz narysować iid z rozkładu normalnego i X n z dwustronnego obciętego normalnego. To oczywiście nie jest skrócony rozkład MVN, ponieważ wykres rozproszenia dla n = 2 łatwo ujawni, że uważam, że nie byłem w stanie zrozumieć tej części twojego pytania. Mówiąc bardziej ogólnie, ciężar pytania, które pytają, dlaczego coś robi nie praca jest na pytającego do przedstawienia dowodów, że robi pracę. Być może, jeśli dostarczysz takie dowody, charakter twojego pytania stanie się jasny. X1,,Xn1Xnn=2
Whuber

1
Dziękuję za szczegóły. Dodałem dwuwymiarowy wykres rozrzutu, jak powiedziałeś, i naprawiłem kilka zdań. Nawiasem mówiąc, przepraszam, że tak naprawdę nie chciałem przenieść na ciebie całego ciężaru dowodu. Moja propozycja wydaje się działać dobrze ze wszystkimi prostymi kontrolami, dlatego jestem ciekawa, dlaczego jest błędna, co jest również głównym celem tego pytania.
Loves Prawdopodobieństwo

1
Przyglądanie się rozkładom krańcowym jest najprostszym sposobem na zilustrowanie różnic w procedurach. Dodałem cyfrę i trochę kodu, aby pokazać te marginesy.
whuber

7

Napisałem to, zakładając, że nie chcesz, aby jakiekolwiek punkty posiadały || y || > a, który jest odpowiednikiem zwykłego obcięcia jednowymiarowego. Jednak napisałeś, że chcesz zachować punkty posiadające | y || > = a i wyrzuć pozostałe. Niemniej jednak można dokonać oczywistej korekty mojego rozwiązania, jeśli naprawdę chcesz zachować punkty mające | y || > = a.

Najprostszym sposobem, który okazuje się być bardzo ogólną techniką, jest użycie odrzucenia akceptacji https://en.wikipedia.org/wiki/Rejection_sampling . Będzie dość szybki, dopóki Prob (|| X ||> a) będzie dość niski, ponieważ wtedy nie będzie wielu odrzuceń.

Wygeneruj wartość próbki x z nieograniczonej normalnej zmiennej wielowymiarowej (nawet jeśli twój problem mówi, że normalna wielowymiarowa jest sferyczna, można zastosować tę technikę, nawet jeśli nie jest). Jeśli || x || <= a, zaakceptuj, tzn. użyj x, w przeciwnym razie odrzuć go i wygeneruj nową próbkę. Powtarzaj ten proces, aż uzyskasz tyle zaakceptowanych próbek, ile potrzebujesz. Skutkiem zastosowania tej procedury jest wygenerowanie y w taki sposób, że jego gęstość wynosi c * f_X (y), jeśli || y || <= a, a 0 jeśli || y || > a, według mojej poprawki do części otwierającej pytania. Nigdy nie musisz obliczać c; jest to automatycznie określane przez algorytm na podstawie częstotliwości odrzucania próbek.


3
+1 Podoba mi się, że twoja propozycja działa z niesferycznie symetrycznymi MVN, że jasno opisałeś okoliczności, w których będzie ona skuteczna, i że podkreślasz potrzebę oceny współczynnika odrzucenia przy podejmowaniu decyzji, czy użyć próbkowania odrzucenia.
whuber

2
Tak, a także zauważ, że może działać dla dowolnie ukształtowanych regionów akceptacyjnych, nie tylko 2-normalnych powyżej lub poniżej progu, jak tutaj.
Mark L. Stone,

5

To niezła próba, ale nie działa z powodu „stałej normalizacji”: jeśli weźmie się pod uwagę gęstość połączenia rozkład fX(x)1

fX(x)1(2πσ2)n/2exp(||x||22σ2)I||x||>a=1(2πσ2)n/2exp(x12++xn22σ2)I||x||>a
fX(x)1(2πσ2)(n1)/2exp(||xn||22σ2)1(2πσ2)1/2exp(xn22σ2)I||x||>a
=1(2πσ2)(n1)/2exp(||xn||22σ2)1(2πσ2)1/2exp(xn22σ2)I||xn||2+xn2>a2
=P.(Xn2)>za2)-||x-n||2))(2)πσ2))(n-1)/2)exp(-||x-n||2)2)σ2))
×P.(Xn2)>za2)-||x-n||2))-1(2)πσ2))1/2)exp(-xn2)2)σ2))jaxn2)>za-||x-n||2)
który integruje się z
faX-n(x-n)P.(Xn2)>za2)-||x-n||2))(2)πσ2))(n-1)/2)exp(-||x-n||2)2)σ2))
w xn, pokazuje, że
  1. Rozkład warunkowy Xn biorąc pod uwagę inne elementy, X-n, jest obciętym rozkładem normalnym;
  2. Rozkład krańcowy pozostałych składników, X-n, nie jest rozkładem normalnym z powodu dodatkowego terminuP.(Xn2)>za2)-||x-n||2));

Jedynym sposobem, jaki widzę w korzystaniu z tej właściwości, jest uruchomienie samplera Gibbsa, jednego komponentu na raz, przy użyciu skróconych normalnych rozkładów warunkowych.


1
Bardzo dziękuję za szczegółową odpowiedź. Tylko wyjaśnienie, obszar pod twoją gęstościąfaX(x)(drugi ekwipunek) nie sumuje się do 1 !! --- Myślę, że po poprawieniu anuluje on „czynnik normalizacyjny”, o którym mówisz. jakieś pomysły?
Loves Prawdopodobieństwo

3

Pytanie pochodzi z pomysłu użycia - podstawowego rozkładu warunkowego rozkładów połączeń - w celu narysowania próbek wektorowych.

Pozwolić X być wielowymiarowym gaussowskim z komponentami iid.

Pozwolić Prob(||X||>za)T. i YX.ja||X||>za

Algorytm, o którym mowa, zaproponowano w oparciu o następującą (całkowicie poprawną, ale wprowadzającą w błąd interpretację) faktoryzację warunkową:

faY(y)=1T.1(2)πσ2))n/2)exp(-||y||2)2)σ2))ja||y||>za=1T.1(2)πσ2))n/2)exp(-y12)++yn2)2)σ2))ja||y||>za=(ja=1n-112)πσ2)exp(-yja2)2)σ2)))(1T.12)πσ2)exp(-yn2)2)σ2))ja||y||>za)=(ja=1n-112)πσ2)exp(-yja2)2)σ2)))Gaussians(1T.12)πσ2)exp(-yn2)2)σ2))jayn2)>(za2)-y12)-yn-12)))Skrócony gaussowski?

Najkrótsza odpowiedź jest taka, że ​​ten ostatni czynnik nie jest obciętym gaussowskim, (co ważniejsze) nawet rozkładem.


Oto szczegółowe wyjaśnienie, dlaczego sama powyższa faktoryzacja ma jakąś zasadniczą wadę. W jednym zdaniu: każda warunkowa faktoryzacja danego rozkładu połączeń musi spełniać pewne bardzo fundamentalne właściwości, a powyższa faktoryzacja ich nie spełnia (patrz poniżej).

Zasadniczo, jeśli kiedykolwiek uwzględnimy czynniki faXY(x,y)=faX(x)faY|X(y|x) następnie faX(x) jest na marginesie X i faY|X(y|x) jest rozkładem warunkowym Y. Co znaczy:

  1. Współczynnik fa(x,y) „zakładany jako” faX(x)musi być dystrybucją. I,
  2. Drugi czynnik „przyjęty jako” faY|X(y|x)musi być rozkładem dla każdego wyborux

W powyższym przykładzie próbujemy warunkować jako Yn|(Y1Yn-1). Oznacza to, że właściwość-1 powinna obejmować czynnik Gaussa, a właściwość-2 powinna utrzymywać się dobrze w drugiej części.

Oczywiste jest, że właściwość-1 dobrze trzyma się pierwszego czynnika. Ale problem dotyczy właściwości-2. Ostatni czynnik powyżej niestety nie jest wcale rozkładem (zapomnij o skróconym gaussowskim) dla prawie dowolnej wartości(Y1Yn-1)!!


Taka propozycja algorytmu jest prawdopodobnie wynikiem następującego błędnego przekonania: Gdy rozkład naturalnie odłączy się od wspólnego rozkładu (takiego jak powyżej Gaussa), prowadzi to do faktoryzacji warunkowej. ---- Nie ma! ---- Drugi (drugi) czynnik musi być również dobry.


Uwaga: Istnieje świetna odpowiedź @whuber wcześniej, która faktycznie rozwiązuje problem generowania normalnego skróconego wielowymiarowego Gaussa. Przyjmuję jego odpowiedź. Ta odpowiedź ma jedynie na celu wyjaśnienie i podzielenie się moim własnym zrozumieniem i genezą pytania.


2
+1 Dziękujemy za podzielenie się swoimi przemyśleniami: dodają cennego wglądu w ten wątek.
whuber
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.