Campionamento dalla distribuzione normale utilizzando la trasformazione Box-Muller
Privacy & Cookie
Questo sito utilizza cookie. Continuando, accetti il loro utilizzo. Ulteriori informazioni, tra cui come controllare i cookie.
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 e un angolo
usando le seguenti relazioni:
e quindi
Si noti che se e
, 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
e l’angolo può essere campionato da
. 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 e
in coordinate polari. La distribuzione congiunta (che è circolare-simmetrica) è:
Se notiamo che il termine al numeratore dell’esponente è uguale a
(come sopra) si può fare la connessione tra la rappresentazione Cartesiana del giunto Normale la distribuzione e la sua rappresentazione polare:
che è il prodotto di due funzioni di densità, una distribuzione esponenziale oltre al quadrato raggi:
e una distribuzione uniforme negli angoli:
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:
quindi
Questo ci dà un modo per generare punti dal comune Gaussiana di distribuzione per il campionamento da due indipendenti distribuzioni uniformi, uno per e un altro per
, e la trasformazione in coordinate Cartesiane tramite le relazioni di cui sopra. In dettaglio, la procedura va come segue:
- Disegnare,
- Trasformare le variabili in un raggio e l’angolo di rappresentanza
, e
- Trasformare il raggio e l’angolo in coordinate Cartesiane:
Quali risultati sono due Normali indipendenti variabili casuali, e
. 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.
Scrivi una risposta o commento.