Metodi Monte Carlo: numeri pseudo casuali e importance sampling

Slide dal Politecnico di Torino sui Metodi Monte Carlo. Il Pdf approfondisce i concetti di numeri pseudo casuali e la tecnica dell'importance sampling, con formule matematiche e simulazioni. Questo materiale di Matematica è adatto per l'Università.

Mostra di più

33 pagine

Metodi Monte Carlo
Vers. 1.0.1
Gianluca Mastrantonio
gianluca.mastrantonio@polito.it
Numeri Pseudo Casuali

Visualizza gratis il Pdf completo

Registrati per accedere all’intero documento e trasformarlo con l’AI.

Anteprima

Numeri Pseudo Casuali

Integrazione Monte Carlo Numeri pseudo casuali Prima di introdurre i vari metodi, chiariamo cosa funziona la simulazione di variabili aleatorie. Il punto fondamentale è che un computer non può simulare qualcosa che sia "random", ma solo valori pseudo-random, quindi deterministici (P.S .: esistono siti che vendono numeri "veramente" casuali, per esempio https: //www.random.org) Partiamo dal caso uniforme, possiamo dire che Definizione - uniform Pseudo Random generator Un generatore di variabili pseudo-casuali U(0, 1), è un algoritmo che partendo da un punto iniziale u0 (seed) e una trasformazione D(), produce una sequenza di valori (u1, ... , Un), con ui = D(ui-1) € [0, 1]. Il vettore (u1, ... , Un) riproduce le "caratteristiche" di un vero vettore di realizzazioni di variabili aleatoria 1,. , Vn) iid da U(0,1).

Integrazione Monte Carlo

Osservazioni sui numeri pseudo casuali

  • L'algoritmo è deterministico, e conoscendo il seme (seed) e la funzione D(), possiamo ricostruire il campione pseudo-casuale;
  • Con "riproduce le caratteristiche" si intende che nessun test del tipo Ho : 01, . . , Un id U(0,1) venga rifiutato.
  • Le sequenze sono periodiche.

L'idea è quindi che la sequenza di numeri pseudo casuali sono indistinguibili da numeri casuali. In R possiamo fare quest'esempio. set . seed (100) runif (10,0,1) set. seed (100) runif (10,0,1) runif (10,0,1)

Integrazione Monte Carlo: Generatore U(0,1)

Nel codice sopra, i primi 2 runif daranno lo stesso risultato (perchè risettate il seed), nel terzo i risultati sono diversi. Un semplice esempio di generatore pseudo casuale U (0, 1) si può ottenere creando le variabili di = (adi-1 + c) mod m dove 0 ≤ c ≤ m (incremento) e 0 < a < m (moltiplicatore), e dopo prendendo Ui = di / m. I valori m, a e c, vanno scelti in modo da non creare loop.

Integrazione Monte Carlo: Scopo

Integrazione In molti studi Monte Carlo, lo scopo è studiare delle caratteristiche delle variabili aleatorie X E X' nella forma E(h(X) =/ h(x)f(x)dx se i dati sono continui, oppure E(h(X)) => xEx h(x)P(X =x) se discreti e E(h(X)) = > XEXD h(x)P(X=x) + / Xc h(x)f(x)dx se la variabile è mista con X'D parte del dominio discreto e Ac continuo con XD UXC = X. Oppure, per scriverli in una forma unificata E(h(X)) = |h(x)f(x)d)(x) X con dx(x)

Integrazione Monte Carlo: Misure

  • misura di Lebesgue: d)(x) = dx nel caso continuo
  • misura di conteggio nel caso discreto.
  • misura ibrida in caso di variabili miste

Esempi di h(X)

  • h(X) = X - Media;
  • h(X) = X2 momento secondo . ..

Integrazione Monte Carlo: Convergenza

Dato un campione di variabili identicamente distribuite, ma non necessariamente indipendenti (hanno quindi la stessa marginale) (X1, ... , Xn), sappiamo che hn = Xi=1h(Xi) n converge quasi certamente a E(h(X)) per la legge dei grandi numeri => Questo è vero anche per h() diversa dall'identità' visto che se definiamo Y = h(x), e indichiamo con fy (y) la sua densità, allora Ix h(x)f(x)dx(x)= |yfy(y)d)(y) ~ Y 2 Se h2(X) ha attesa finita, possiamo calcolarne anche la varianza Un = var (hn) = var n Zi 1h(Xi) i=1 n ◆ = 1 n2 n i=1 var (h(Xi)) + i=1 j=1 >> cov (h(Xi), h(Xj)) n ))!

Integrazione Monte Carlo: Varianza

Nel caso in cui le variabili siano indipendenti abbiamo che var(hn) = var (h(Xi)) n = 1 n Jx (h(x)- E(h(X)))2f(x)dx(x) che può essere approssimato da Un = p2 2(h(xi) - hn)2 n.2 n i=1 Attenzione: i) Lo stimatore della varianza non è uno stimatore Monte Carlo. ii) Si può dimostrare che è distorto iii) Una versione non distorta dello stimatore della varianza si trova sostituendo(n - 1) a n nel denominatore Naturalmente più piccola è var(hn) e migliore sarà l'approssimazione di E(h(X)). Da ora in poi, a meno che non sia detto esplicitamente, assumeremo che le variabili siano anche indipendenti

Integrazione Monte Carlo: Funzioni Multivariabili

I Monte Carlo vale anche per funzioni di più variabile: E(h(X,Y) = h(x,y)f(x,y)d)(y)d)(x) ~ n n i=1 h(xi, yi) e anche nel caso in cui h(x, y) = h*(x): E(h*(X)) = | h*(x)f(x)d)(x) = X n i=1 h (xi, yi) n = >71 h* (xi) i=1 h(x,y)f(x,y)d)(y)d)(x) ~ XIV n

Integrazione Monte Carlo: Funzione di Ripartizione

Funzione di ripartizione La funzione di ripartizione per una variabile può essere scritta come F(a) = [° O f(x)dx(x) che non è nella forma che ci permette di usare un metodo Monte Carlo. Possiamo però introdurre la funzione 1a (x) che assume valore 1 se x < a, altrimenti zero, e usare f(x)dx(x) = -00 ra 1 -00 00 1a(x)f(x)d)(x)=E(1a(X)) ~ n Xi=1 1a (Xi) i=1 dove naturalmente Xi ~ F e in questo caso h(X) = 1a (X). Possiamo quindi stimare l'intera funzione di ripartizione con Ê(a) = i=1 2,1 1a (Xi) n ~ E(1a(X) = / 00 1a (x)f(x)dx = 1 a -00 f(x)dx = F(a) Ê(a) è una stima della funzione di ripartizione

Integrazione Monte Carlo: ECDF

1.0 0.8 0.6 ecdf 0.4 True n=10 0.2 n=50 n=100 0.0 0.0 0.2 0.4 0.6 0.8 1.0 X Figure: ecdf di una B(1,3) per diversi valori di n

Integrazione Monte Carlo: Codice ECDF

Code: Codice della figura # simuliamo dalla beta x1 = rbeta (10,1,3) x2 = rbeta (50,1,3) x3 = rbeta (100,1,3) # cacoliamo le funzioni di ripartizioni empiriche su xseq xseq= seq(0,1, by=0.001) ec1 = ecdf (x1) (xseq) ec2 = ecdf (x2) (xseq) ec3 = ecdf (x3) (xseq) plot (xseq, ec1, type="s", lwd=2, col=2, xlab="X", ylab="ecdf") lines (xseq,ec2, type="s", col=3, lwd=2) lines (xseq,ec3, type="s", col=4, lwd=2) lines (xseq, pbeta(xseq,1,3), type="s", col=1, lwd=2) legend ("bottomright ", c ( "True " , "n=10" , "n=50" , "n=100") , col=1:4, lwd=3, cex=2 )

Integrazione Monte Carlo: Quantili Empirici

Come si vede dalla figura la funzione è a scalini, con scalini di altezza 1/n e per Xi-1 < a ≤ Xi è costante. Dalla funzione di ripartizione stimata (chiamata anche funzione di ripartizione empirica), si possono calcolare i quantili empirici. Per esempio il quantile empirico di livello p è min{x; : i = 1, ... , n and F(x) = p}

Integrazione Monte Carlo: Stima di Densità

Stima di densità Un caso interessante è quando non sappiamo come è fatta f (x) (forma funzionale), però conosciamo f (x)y), dove Y ~ G è definita su ), e sappiamo campionare da G. Possiamo calcolare la densità f (x) in un punto specifico x *: f(x*) = f(x*|y)g(y)dx(y) Y e se indichiamo con Y1, ... , Yn campioni iid da G, e assumiamo h(X) = f(x*|y), allora _,_1f(x*|Yi) i=1 ⇡ Z Y f(x⇤|y)g(y)d n

Integrazione Monte Carlo: Densità Marginale

Esempio di densità marginale

Ipotizziamo che Y ~ Exp(X), e X|Y = y ~ G(expy, 1), come è fatta la densità marginale di X ?. Questo sopra è un semplice caso in cui non siamo in grado di dire qualcosa su una distribuzione e possiamo usare l'approssimazione MC 0.4 - d 0.3 fx_stima 0.2 0.1 0.0 7 - - O 0 2 4 6 8 10 a Figure: Esempio MC

Integrazione Monte Carlo: Codice Densità Marginale

Code: Codice della figura n = 1000 # valori di x su cui calcolare la densita' a = seq(0,10,by=0.1) lambda = 2 fx_stima = c () y = rexp (n, lambda) for(i in 1: length (a)) { # densita ' condizionata fzgiveny = dgamma(a[i],exp(y),1) # stima di fx nel punto a[i] fx_stima [i] = sum(fzgiveny) /n } plot (a, fx_stima) lines(a,fx_stima, col=2) Naturalmente non sappiamo determinare la forma funzionale, ma possiamo trovarla utilizzando qualche metodo interpolante, o usando funzioni a tratti.

Rao-Blackwellization

Prendiamo la seguente relazione E(h(X) = / h(x)fx(x)d)(x) = h(x)f(x|y)f(y)d)(x) dx(y) = Y Z Y Z X X h(x)f(x|y)d)(x) )f(y)d)(y) e quindi Ex (h(X)) = Y Ex(h(X)|y)f(y)d)(y) quindi questi valori attesi potremmo calcolarli usando i campioni di X, con Zi=1 h(Xi) i=1 n ~ E(h(X)) o con quelli di Y, con 27-1 Ex (h(X)|yi) i=1 ⇡ Ex(h(X)|y)f(y)d)(y) n

Rao-Blackwellization: Varianza

se siamo in grado di calcolare E(h(X)|Yi). Questa eguaglianza tra i valori attesi è la classica legge E(X) = Ey(Ex(X|Y)) Assumendo indipendenza, abbiamo che Zi=1 var x (h(Xi)) varx = i=1 n2 = e vary In i=1 Ex (h(X)|Yi) ◆ = Zi 1 vary (Ex (h(X)|Y;)) n2 Sebbene i due valori attesi stimano/calcolano la stessa cosa, abbiamo che varx (h(X)) = vary (Ex (h(X)|Y)) + Ey (varx (h(X)|Y))) ≥ vary(Ex(h(X)|Y)) (legge della varianza totale) Abbiamo quindi che varx i=1 Zi=1h(Xi) n ◆ z vary i=1 Ex (h(X)|Yi) n ) n Xi-1 h(Xi) n ◆

Rao-Blackwellization: Stimatore

e quindi l'approssimazione Ei=1 n n Ex (h(X)|Yi) è migliore in termine di varianza. Lo stimatore che utilizza la distribuzione condizionata per calcolare il valore atteso marginale di h(X), si chiama Rao-blackwell estimator.

Importance Sampling

Importance sampling Ritorniamo al problema del calcolo di attese E(h(x) = / h(x)f(x)dx(x) Questo integrale può essere scritto come E(h(X) = h(x)f(x)dx(x) = g(x) h(x)f(x) g(x)dx(x) dove g(x) è una qualsiasi funzione per cui g(x) > 0 per ogni x € X' tale che f (x) > 0. Nel caso in cui g(x) è una densità abbiamo che Z x h(x)f(x) g(x) g(x)dx(x) = Eg h(X)f(X) g(X) ◆ Come per l'esempio precedente, X h(x)f(x)dx(x)

Importance Sampling: Stimatori

e X h(x)f(x) g(x) g(x)dx(x) calcolano la stessa cosa, Eg h(X)f(X) g(X) ◆ = Ef(h(X)) Abbiamo quindi due possibili stimatori . con Xi ~ f Ei=1h(xi) i=1 ~ Ef(h(X)) n · con Xi ~ g Li=1 g(xi) in h(xi)f (xi) n ~ Eg h(X)f(X) g(X) ◆

Importance Sampling: Varianza

Possiamo vedere quale stimatore ha varianza minore, se assumiamo indipendenza, e calcoliamo varf(h(X) = E(h(X)2) - E2(h(X) = h2(x)f(x)d)(x)-E?(h(X)) e varg g(X) h(x)f(x) = Jx g2 (x) h2(x)f2(x) g(x)d)(x)- E}(h(X)) dove, nella seconda varianza, abbiamo usato la relazione Eq 12 h(X)f(X) g(X) ◆ = E3(h(X)) Abbiamo allora che l'importance sampling è migliore se varf (h(X)) - varg h(X)f(X) g(X) ) >0 Abbiamo che var f (h(X)) - varg g(X) h(x)f(x) = [ (1 - f(x) g(x) ◆ h2(x)f(x)dx(x)

Importance Sampling: Scelta di g(x)

visto che f (x) e g(x) sono densità, il rapporto f(x)/g(x) non può sempre essere <1 o >1. Quindi, per avere una differenza di varianze positiva (i.e., importance sampling migliore del vanilla), dobbiamo avere che · f(x)/g(x) > 1 se h2(x)f(x) è piccolo; 1 - f(x) g(x) negativo; · f(x)/g(x) < 1 se h2(x)f(x) è grande; 1 - g(x) f(x) positivo. quindi g(x) deve essere elevata (i.e., importante), per i punti dove h2 (x)f(x) è elevata. Si può dimostrare che la scelta migliore per g(x) è g(x) = |h(x)|f(x) Jx |h(x)|f(x)d)(x)

Simulazioni

Simulazione Se sappiamo generare da una distribuzione, con trasformazioni di variabili possiamo ottenere campioni da altre distribuzioni.

Esempio di simulazione

Se U ~U(0,1), allora X =- logU~Exp(1) e ~~ Exp(A) Soluzione: possiamo usare la regola della trasformazione di variabili: fx(x) = fu(u) du dx =- exp(-x)| = exp(-x) e fY(y) = fx (x) dy dx = exp(-Xy)|X|=Xexp(-Xy)

Non hai trovato quello che cercavi?

Esplora altri argomenti nella Algor library o crea direttamente i tuoi materiali con l’AI.