provtagning från normalfördelningen med Box-Muller Transform
Sekretess & Cookies
denna webbplats använder cookies. Genom att fortsätta godkänner du deras användning. Läs mer, inklusive hur du kontrollerar cookies.
normalfördelningen är arbetshästen för många vanliga statistiska analyser och att kunna dra prover från denna distribution ligger i hjärtat av många statistiska/maskininlärningsalgoritmer. Det har funnits ett antal metoder som utvecklats för att ta prov från normalfördelningen inklusive invers Transformationsprovtagning, Ziggurat-algoritmen och Förhållandemetoden (en avstötningsprovtagningsteknik). I det här inlägget kommer vi att fokusera på en elegant metod som kallas Box-Muller transform.
en snabb genomgång av kartesiska och polära koordinater.
innan vi kan prata om att använda Box-Muller-transformationen, låt oss uppdatera vår förståelse för förhållandet mellan kartesiska och polära koordinater. Du kanske kommer ihåg från geometri att om x och y är två punkter i det kartesiska planet kan de representeras i polära koordinater med en radie och en vinkel
med följande relationer:
, och därför
Observera att om och
, kartlägger vi värden som finns i enhetscirkeln, som visas i figuren nedan. Observera också att slumpmässiga variabler i en sådan cirkel kan genereras genom att omvandla värden som samplas från den enhetliga fördelningen. Specifikt kan radier samplas från
och vinkel kan samplas från
. En liknande mekanism (dvs. ritningspunkter i en cirkel med enhetliga variabler) är kärnan i Box-Muller-transformationen för provtagning av normala slumpmässiga variabler.

exempel på förhållandet mellan kartesiska och polära koordinater
Rita normalt distribuerade prover med Box-Muller transform
Ok, nu när vi har diskuterat hur kartesiska koordinater representeras i polära koordinater, låt oss gå vidare till hur vi kan använda detta förhållande för att generera slumpmässiga variabler. Box-Muller provtagning baseras på att representera den gemensamma fördelningen av två oberoende standard normala slumpmässiga kartesiska variabler och
i polära koordinater. Den gemensamma fördelningen (som är cirkulär-symmetrisk) är:
om vi märker att termen i exponentens täljare är lika med
(som ovan) kan vi göra sambandet mellan den kartesiska representationen av den gemensamma normalfördelningen och dess polära representation:
vilket är produkten av två densitetsfunktioner, en exponentiell fördelning över kvadrerade radier:
och en jämn fördelning över vinklar:
precis som de som nämns ovan när du genererar punkter på enhetscirkeln. Om vi nu gör en annan koppling mellan den exponentiella fördelningen och den enhetliga fördelningen, nämligen det:
sedan
detta ger oss ett sätt att generera poäng från den gemensamma gaussiska fördelningen genom provtagning från två oberoende enhetliga fördelningar, en för och en annan för
och omvandla dem till kartesiska koordinater via relationerna ovan. I detalj går proceduren enligt följande:
- Rita,
- omvandla variablerna till radie och vinkelrepresentation
och
- omvandla radie och vinkel till kartesiska koordinater:
vilka resultat är två oberoende normala slumpmässiga variabler, och
. En Matlab-implementering av Box-Muller-algoritmen visas nedan:
% 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-prover för normalfördelning
inslagning upp
utmatningen från MATLAB-koden visas ovan. Lägg märke till att de första, andra och fjärde centrala momenten (medelvärde, varians och kurtos) för de genererade proverna överensstämmer med standardnormalen. Box-Muller Trans är ett annat exempel på hur enhetliga variabler på intervallet (0,1) och kan transformeras för att ta prov från en mer komplicerad fördelning.
Write a Reply or Comment