Salta al contenuto
Jidian Stone
  • Home
  • / Articles
  • /
  • Campionamento dalla distribuzione normale utilizzando la trasformazione Box-Muller

Campionamento dalla distribuzione normale utilizzando la trasformazione Box-Muller

Agosto 14, 2021Articles
X
  • Privacy & Cookie
  • Una rapida revisione delle coordinate cartesiane e polari.
  • Disegno Normalmente distribuiti campioni con Box-Muller trasformare
  • Wrapping Up

Privacy & Cookie

Questo sito utilizza cookie. Continuando, accetti il loro utilizzo. Ulteriori informazioni, tra cui come controllare i cookie.

Capito!

Pubblicità

La distribuzione normale è il cavallo di battaglia di molte analisi statistiche comuni ed essere in grado di trarre campioni da questa distribuzione è al centro di molti algoritmi statistici/di apprendimento automatico. Ci sono stati un certo numero di metodi sviluppati per campionare dalla distribuzione normale incluso il campionamento della trasformazione inversa, l’algoritmo di Ziggurat e il metodo del rapporto (una tecnica di campionamento del rifiuto). In questo post ci concentreremo su un metodo elegante chiamato trasformazione Box-Muller.

Una rapida revisione delle coordinate cartesiane e polari.

Prima di poter parlare dell’utilizzo della trasformazione Box-Muller, aggiorniamo la nostra comprensione della relazione tra coordinate cartesiane e polari. Puoi ricordare dalla geometria che se x e y sono due punti nel piano cartesiano possono essere rappresentati in coordinate polari con un raggio r e un angolo \theta usando le seguenti relazioni:

r^2 = x^2 + y^2

\tan(\theta) = \frac{y}{x} e quindi

x = r\cos(\theta)

y = r\sin(\theta)

Si noti che se r \leq 1 e \theta \in , quindi abbiamo una mappa di valori contenuti nel cerchio unitario, come mostrato nella figura sottostante. Si noti inoltre che le variabili casuali in tale cerchio possono essere generate trasformando i valori campionati dalla distribuzione uniforme. In particolare, i raggi possono essere campionati da  r \sim Unif (0,1) e l’angolo può essere campionato da \theta \sim 2\pi \times Unif(0,1). Un meccanismo simile (cioè disegnare punti in un cerchio usando variabili uniformi) è al centro della trasformazione Box-Muller per campionare variabili casuali normali.

Esempio di relazione tra coordinate Cartesiane e coordinate polari

Disegno Normalmente distribuiti campioni con Box-Muller trasformare

Ok, ora che abbiamo discusso di come coordinate Cartesiane sono rappresentati in coordinate polari, passiamo a come possiamo utilizzare questo rapporto per generare variabili casuali. Il campionamento di Box-Muller si basa sulla rappresentazione della distribuzione congiunta di due variabili cartesiane casuali normali standard indipendenti X e Y

X \ sim N(0,1)

S \ sim N(0,1)

in coordinate polari. La distribuzione congiunta  p (x, y) (che è circolare-simmetrica) è:

p(x,y) = p(x)p(y) = \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}}\frac{1}{\sqrt{2\pi}}e^{-\frac{y^2}{2}}

= \frac{1}{2\pi}e^{-\frac{x^2 + y^2}{2}}

Se notiamo che il x^2 + y^2 termine al numeratore dell’esponente è uguale a r^2 (come sopra) si può fare la connessione tra la rappresentazione Cartesiana del giunto Normale la distribuzione e la sua rappresentazione polare:

p(x,y) = \left ( \frac{1}{2\pi} \right ) \left ( e^{\frac{-r^2}{2}} \right )

che è il prodotto di due funzioni di densità, una distribuzione esponenziale oltre al quadrato raggi:

r^2 \sim Exp(\frac{1}{2})

e una distribuzione uniforme negli angoli:

\theta \sim Unif(0,2\pi)

proprio come quelli di cui sopra, quando la generazione di punti sul cerchio unitario. Ora, se facciamo un’altra connessione tra la distribuzione esponenziale e la distribuzione uniforme, vale a dire che:

Exp(\lambda) = \frac{-\log (Unif(0,1))}{\lambda}

quindi r \sim \sqrt{-2\log (Unif(0,1))}

Questo ci dà un modo per generare punti dal comune Gaussiana di distribuzione per il campionamento da due indipendenti distribuzioni uniformi, uno per r e un altro per \theta, e la trasformazione in coordinate Cartesiane tramite le relazioni di cui sopra. In dettaglio, la procedura va come segue:

  1. Disegnare, u_1,u_2 \sim Unif(0,1)
  2. Trasformare le variabili in un raggio e l’angolo di rappresentanza r = \sqrt{-2\log(u_1)} , e \theta = 2\pi u_2
  3. Trasformare il raggio e l’angolo in coordinate Cartesiane: x = r \cos(\theta), y = r \sin(\theta)

Quali risultati sono due Normali indipendenti variabili casuali, X e Y. Di seguito viene mostrata un’implementazione MATLAB dell’algoritmo Box-Muller:

% NORMAL SAMPLES USING BOX-MUELLER METHOD% DRAW SAMPLES FROM PROPOSAL DISTRIBUTIONu = rand(2,100000);r = sqrt(-2*log(u(1,:)));theta = 2*pi*u(2,:);x = r.*cos(theta);y = r.*sin(theta);% DISPLAY BOX-MULLER SAMPLESfigure% X SAMPLESsubplot(121);hist(x,100);colormap hot;axis squaretitle(sprintf('Box-Muller Samples Y\n Mean = %1.2f\n Variance = %1.2f\n Kurtosis = %1.2f',mean(x),var(x),3-kurtosis(x)))xlim()% Y SAMPLESsubplot(122);hist(y,100);colormap hot;axis squaretitle(sprintf('Box-Muller Samples X\n Mean = %1.2f\n Variance = %1.2f\n Kurtosis = %1.2f',mean(y),var(y),3-kurtosis(y)))xlim()

Box-Muller Samples for Normal Distribution

Wrapping Up

L’output del codice MATLAB è mostrato sopra. Si noti che il primo, il secondo e il quarto momento centrale (media, varianza e curtosi) dei campioni generati sono coerenti con la norma standard. La trasformazione Box-Muller è un altro esempio di come variabili uniformi sull’intervallo (0,1) e possono essere trasformate per campionare da una distribuzione più complicata.

Pubblicità

Scrivi una risposta o commento. Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Articoli recenti

  • Burnham Pavilions
  • Borsite trocanterica calcifica: risoluzione delle calcificazioni e remissione clinica con trattamento non invasivo. Un caso clinico
  • Car Door Fonoassorbente
  • Sviluppo di allergie: Pericolo nascosto di ossigeno
  • Building Manager Job Description
  • Mozzarella e Pomodoro Caprese Flatbread
  • Vaniglia Brown Sugar Scrub ricetta! {Fai da te Scrub corpo}
  • Questo è quando il tuo mal di cancro è qualcosa di più serio

Copyright Jidian Stone 2022 | Theme by ThemeinProgress | Proudly powered by WordPress