Rejection sampling: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Creata dalla traduzione della pagina "Rejection sampling"
 
Fix formulas
Riga 13:
 
Questo algoritmo può essere utilizzato per campionare dall'area sotto qualsiasi curva, indipendentemente dal fatto che l'integrale della funzione abbia valore 1. In effetti, il ridimensionamento di una funzione con una costante non ha alcun effetto sulle posizioni x campionate. Pertanto, l'algoritmo può essere utilizzato per campionare da una distribuzione la cui [[Normalizzazione (matematica)|costante di normalizzazione]] è sconosciuta, che è comune nella [[statistica computazionale]] .
[[File:Circle_sampling.png|destra|141x141px|link=Special:FilePath/Circle_sampling.png]]
Come semplice esempio geometrico, supponiamo di voler generare un punto casuale all'interno del cerchio unitario. Il primo step è generare un punto candidato (<math>(x,y)</math><math>x,y </math>) dove <math>x </math> <math>x </math>e <math>y </math> <math>y </math>sono indipendenti e uniformemente distribuiti tra &#x2212; 1 e 1. Se <math>x^2+y^2 \leq 1 </math> allora il punto è all'interno del cerchio unitario ed è accettato. Altrimenti è rifiutato e viene generato un nuovo candidato.
 
Riga 19:
 
== Algoritmo ==
L'algoritmo di rejection sempling genera valori di campionamento da una distribuzione target <math>X </math> con [[funzione di densità di probabilità]] arbitraria <math>f(x) </math> utilizzando una [[proposal distribution]] <math>Y </math>con densità di probabilità <math>g(x) </math>.
 
L'algoritmo (usato da [[John von Neumann]] e risalente a Buffon e al [[Ago di Buffon|suo ago]]) per ottenere un campione dalla distribuzione <math>X </math>con densità <math>f(x)</math><math>f(x) </math>utilizzando campioni dalla distribuzione <math>Y </math>con densità <math>g(x) </math>è il seguente:
 
* Campiona <math display="inline">y</math>dalla distribuzione <math>Y </math>e un campione <math display="inline">u </math>a partire dal <math xmlns="http://www.w3.org/1998/Math/MathML"><mrow class="MJX-TeXAtom-ORD"><mstyle displaystyle="true" scriptlevel="0"><mrow class="MJX-TeXAtom-ORD"><mi mathvariant="normal">da <math>\mathrm{Unif}(0,1)</math> </mi><mi mathvariant="normal"> <math>\mathrm{Unif}(0,1)</math> </mi><mi mathvariant="normal"> <math>\mathrm{Unif}(0,1)</math> </mi><mi mathvariant="normal"> <math>\mathrm{Unif}(0,1)</math> </mi></mrow><mo stretchy="false"> <math>\mathrm{Unif}(0,1)</math> </mo><mn> <math>\mathrm{Unif}(0,1)</math> </mn><mo> <math>\mathrm{Unif}(0,1)</math> </mo><mn> <math>\mathrm{Unif}(0,1)</math> </mn><mo stretchy="false"> <math>\mathrm{Unif}(0,1)</math> </mo></mstyle></mrow> </math><math display="inline">\mathrm{Unif}(0,1) </math>(la distribuzione uniforme sull'intervallo <math>[0,1]</math>).
* Controlla se <math display="inline">u<f(y)/Mg(y) </math> con <math>1 < M < \infty</math>sul [[supporto]] di <math>X </math>:
** se ciò vale, accetta <math>y </math>come un campione tratto da <math>f(x)</math>;