Tecniche di Simulazione in Statistica

Transcript

Tecniche di Simulazione in Statistica
Tecniche di
Simulazione in
Statistica
Marcello Chiodi
Istituto di Statistica
Facoltà di Economia di Palermo
Viale delle Scienze-90128 - Palermo-Italy
(tel. xx39-0916626238; 0916626322; fax. xx39-091485726)
e-mail [email protected]
home page: http://ccrs.economia.unipa.it/ccrs1/chiodi/italianomenu.htm
2
Marcello Chiodi
Sommario
1. Presentazione __________________________________________ 3
2. Simulazioni e metodo Montecarlo _________________________ 11
2.1.
Simulazioni in statistica ________________________________15
2.2.
Simulazione di modelli deterministici _____________________17
3. Generazione di numeri pseudo-casuali da una
distribuzione uniforme __________________________________ 22
3.1.
Algoritmi di generazione di numeri pseudo-casuali
uniformi _____________________________________________24
3.1.1.
3.1.2.
3.1.3.
3.1.4.
3.1.5.
3.1.6.
3.2.
25
29
32
33
36
37
Test di casualità _______________________________________37
3.2.1.
3.2.2.
3.2.3.
3.2.4.
3.3.
Generatori congruenziali lineari_______________________________
La scelta dei parametri λ, b, c e a0 (cenni) _______________________
Combinazioni di generatori congruenziali lineari _________________
Generatori congruenziali non lineari ___________________________
Cenni su altri generatori_____________________________________
Altre tecniche di generazione di cifre casuali ____________________
Alcuni fra i test più comuni __________________________________
Esempio _________________________________________________
Test effettuati su sequenze di test di casualità ____________________
Numeri pseudo-casuali e numeri a scelta: un esempio _____________
38
41
44
45
Altri test di casualità ___________________________________47
4. Generazione di numeri pseudo-casuali da distribuzioni
qualsiasi _____________________________________________ 51
4.1.
Metodo dell’ inversione della funzione di
ripartizione___________________________________________53
4.1.1. Distribuzioni discrete qualsiasi: un esempio elementare ____________
4.1.2. Inversione della funzione di ripartizione: indicatori di
evento e numeri pseudo-casuali binomiali ______________________
4.1.3. Distribuzione geometrica ____________________________________
4.1.4. Distribuzione discreta uniforme_______________________________
4.1.5. Generazione di numeri casuali da una distribuzione
ipergeometrica____________________________________________
4.1.6. Generazione di permutazioni casuali ___________________________
4.2.
56
63
64
65
66
67
Inversione della funzione di ripartizione per
variabili continue______________________________________69
4.2.1. Distribuzione esponenziale __________________________________ 70
4.2.2. Distribuzione χ2 con 2 gradi di libertà __________________________ 70
Tecniche di Simulazione in Statistica.
3
4.2.3.
4.2.4.
4.2.5.
4.2.6.
4.2.7.
Distribuzione di Laplace (esponenziale doppia) ___________________ 71
Distribuzione di Cauchy _____________________________________ 72
Distribuzione di Weibull_____________________________________ 73
Altre distribuzioni elementari _________________________________ 74
Generazione di punti uniformi all'interno di
parallelogrammi ___________________________________________ 75
4.2.8. Generazione di punti uniformi in particolari regioni
triangolari ________________________________________________ 75
5. Metodi basati su trasformazioni di variabili aleatorie _________ 77
5.1.
Distribuzione normale: formula di Box-Muller ____________ 77
5.1.1. Trasformazione polare di Marsaglia ____________________________ 80
5.1.2. Distribuzione di Cauchy _____________________________________ 81
5.2.
Generazione di numeri pseudo-casuali da
distribuzioni Gamma e Beta ____________________________ 81
5.2.1. Distribuzioni Gamma con parametro di forma intero _______________ 82
5.2.2. Distribuzioni Beta __________________________________________ 83
5.2.3. Metodo di Johnk per la generazione di numeri casuali da
distribuzioni Beta qualsiasi __________________________________ 85
5.3.
Generazione di numeri casuali da distribuzioni
normali di ordine p (p > 1) ______________________________ 86
5.4.
Generazione di numeri aleatori da particolari
distribuzioni discrete __________________________________ 90
5.4.1. Distribuzione binomiale _____________________________________ 90
5.4.2. Distribuzione di Poisson _____________________________________ 90
5.5.
Test di casualità per sequenze non uniformi _______________ 92
6. Metodo di accettazione-rifiuto e tecniche collegate ___________ 95
6.1.
Metodo di accettazione rifiuto: caso generale ______________ 96
6.1.1. Tecniche di compressione____________________________________ 99
6.1.2. Altre tecniche collegate_____________________________________ 100
6.1.3. Tecniche di accettazione-rifiuto per funzioni qualsiasi_____________ 100
6.2.
Esempi sulle tecniche di compressione per variabili
continue ____________________________________________ 102
6.2.1. Distribuzione maggiorante uniforme: generazione da una
distribuzione Beta_________________________________________ 102
6.2.2. Distribuzioni maggioranti non uniformi: esempio sulla
curva normale____________________________________________ 105
6.2.3. Distribuzione Gamma (c < 1 e λ = 1) __________________________ 106
6.2.4. Distribuzione Gamma (c > 1 e λ = 1) __________________________ 109
6.2.5. Distribuzione normale di ordine p_____________________________ 109
4
Marcello Chiodi
6.3.
Metodo di accettazione-rifiuto per variabili discrete________112
6.3.1. Variabili discrete con un numero di modalità non finito ___________ 114
6.3.2. Esempio: generazione di numeri pseudo-casuali da una
distribuzione di Poisson ___________________________________ 115
6.4.
Metodi composti _____________________________________118
6.4.1. Miscugli di distribuzioni ___________________________________ 119
6.5.
Rapporto di uniformi _________________________________120
6.5.1.
6.5.2.
6.5.3.
6.5.4.
6.5.5.
6.5.6.
Distribuzione di Cauchy ___________________________________
Distribuzione Normale_____________________________________
Distribuzione Gamma (c > 1 e λ = 1) _________________________
Generalizzazione della tecnica del rapporto di uniformi ___________
Miglioramenti della tecnica del rapporto di uniformi _____________
Cenni su altre tecniche di accettazione-rifiuto ___________________
123
124
125
125
126
127
7. Generazione di vettori di numeri pseudo-casuali ____________ 128
7.1.
Distribuzioni a contorni ellissoidali ______________________129
7.2.
Generazione di vettori casuali da una distribuzione
normale multivariata qualsiasi _________________________131
7.3.
Miscugli di distribuzioni normali multivariate_____________133
7.3.1. Esempi _________________________________________________ 135
7.4.
Generazione di vettori casuali da una particolare
distribuzione beta multivariata (distribuzione di
Dirichlet) ___________________________________________137
7.5.
Generazione da distribuzioni multivariate di
variabili aleatorie discrete _____________________________140
7.5.1. Generazione da una distribuzione multinomiale _________________ 140
7.6.
Generazione di tavole di contingenza ____________________141
7.6.1. Generazione di tavole di contingenza con margini qualsiasi ________ 141
7.6.2. Generazione di tavole di contingenza con margini assegnati________ 142
8. Integrazione con tecniche di tipo Montecarlo in ℜ1 e in
ℜn 144
8.1.
Integrazione con la tecnica Montecarlo "hit or miss" _______144
8.2.
Tecnica Montecarlo pura ______________________________146
8.3.
Tecniche di riduzione della varianza _____________________146
8.3.1. Campionamento per importanza _____________________________ 147
8.3.2. Variabili di controllo ______________________________________ 149
8.4.
Integrazione di funzioni di più variabili __________________151
Tecniche di Simulazione in Statistica.
5
8.4.1. Valori medi di stimatori e livelli di significatività ________________ 152
8.5.
Metodo Montecarlo per catene di Markov _______________ 153
8.6.
Metodi quasi-Montecarlo _____________________________ 155
9. Simulazioni in statistica _______________________________ 157
9.1.
Simulazioni di distribuzioni campionarie di
stimatori e test_______________________________________ 158
9.1.1. Primo esempio di simulazione di distribuzione campionaria ________ 158
9.1.2. Ripetizione di un esperimento di simulazione con
condizioni iniziali diverse __________________________________ 161
9.1.3. Un esempio grafico di simulazione di distribuzioni
campionarie _____________________________________________ 163
9.2.
Schema di algoritmo di simulazione di distribuzioni
campionarie ________________________________________ 165
9.3.
Schemi di simulazione diversi dal campionamento
casuale semplice _____________________________________ 168
9.3.1. Estrazione di campioni da popolazioni finite ____________________ 168
9.3.2. Simulazione di modelli di regressione _________________________ 170
9.3.3. Simulazione di modelli ARMA(p,q) di serie temporali e/o
territoriali _______________________________________________ 174
9.4.
Distribuzione delle medie e delle varianze simulate e
relativi intervalli di confidenza _________________________ 174
9.4.1. Stima della distorsione e dell’errore medio di
campionamento __________________________________________ 176
9.4.2. Come stimare i parametri di una distribuzione campionaria? ________ 177
9.4.3. Confronti con varianze asintotiche ____________________________ 177
9.4.4. Esempio sulla distribuzione di Laplace_________________________ 179
9.5.
Simulazioni e inferenza _______________________________ 183
9.6.
Simulazione di distribuzioni campionarie di test __________ 187
9.6.1. Stima dei livelli di significatività e del potere di un test ____________ 188
9.6.2. Livelli di copertura empirici di intervalli di confidenza ____________ 193
9.6.3. Stima dei percentili ________________________________________ 193
9.7.
Banda di confidenza per la distribuzione di
frequenza simulata ___________________________________ 194
9.8.
Altri usi delle tecniche di simulazione in Statistica _________ 197
9.9.
Esempi _____________________________________________ 197
9.9.1. Verifica della validità di un'approssimazione teorica ______________ 197
9.9.2. Regressione non lineare ____________________________________ 198
6
Marcello Chiodi
10.
Appendice e complementi __________________________ 206
10.1. Simul2000: un programma didattico interattivo sulle
simulazioni statistiche. ________________________________206
10.1.1. Caratteristiche generali del programma. _______________________ 206
10.1.2. Brevissima descrizione dei moduli: __________________________ 207
10.2. Test di casualità su generatori congruenziali ______________210
10.3. Esercizi e temi di studio _______________________________217
10.4. RISPOSTE AD ALCUNI ESERCIZI ____________________219
10.5. TAVOLE ___________________________________________221
10.6. Algoritmo di compressione per la generazione di
numeri casuali da una distribuzione normale di
ordine p ____________________________________________223
10.7. RIFERIMENTI BIBLIOGRAFICI______________________225
10.8. Indice degli algoritmi _________________________________231
10.9. Indice degli Autori citati _______________________________232
10.10. Indice analitico degli argomenti_________________________234
Tecniche di Simulazione in Statistica.
7
1. Presentazione
Le tecniche di simulazione in statistica sono oggi largamente
impiegate, anche in lavori metodologici: é difficile sfogliare una rivista
scientifica di statistica che non contenga almeno un lavoro con delle
simulazioni. Io ho fatto largo uso, in diversi miei lavori, di metodi di tipo
Montecarlo: sebbene poco eleganti da un punto di vista formale,
rappresentano un modo efficace e comodo per ottenere risultati
approssimati sfruttando semplicemente la forza bruta di un elaboratore
per uno dei suoi compiti basilari: ripetere gli stessi calcoli un gran
numero di volte! In molte situazioni sono, almeno attualmente, l’unico
modo, o almeno il più comodo, per studiare il comportamento per piccoli
campioni di test o di stimatori di cui non si conoscano, o non si
sappiano ricavare le distribuzioni esatte, od anche per valutare
empiricamente la bontà di un’approssimazione analitica.
D'altra parte l'impatto dei metodi di tipo Montecarlo o comunque
delle tecniche di simulazione nel campo della Statistica è sempre
crescente: si pensi ai recenti sviluppi dei metodi Montecarlo per catene
di Markov, quali il Gibbs sampler, etc.
E’ mia opinione, inoltre, che le tecniche di simulazione forniscano un
supporto didattico rilevante per far vedere agli studenti delle
distribuzioni campionarie o, meglio, un campione simulato estratto da
una distribuzione campionaria, e per fornire esemplificazioni di risultati
analitici complessi relativi a particolari distribuzioni campionarie.
Anche con questa finalità ho sviluppato negli ultimi anni un software per
la visualizzazione, in ambiente grafico, di distribuzioni campionarie
simulate, cui comunque in questo lavoro faccio solo un breve cenno in
appendice.
La motivazione alla scrittura di questi appunti, rivolti agli studenti, è
scaturita dalla mia esigenza di dare una forma didatticamente utile a
materiale vario sulle tecniche di simulazione da me accumulato negli
anni in diversi corsi, fra cui: le mie esercitazioni del corso di Statistica
Metodologica tenuto dal Prof. Mineo; i miei corsi di Statistica
Matematica, di Teoria e Tecnica della Elaborazione Automatica dei dati
e di Statistica computazionale; seminari sulle tecniche di simulazione per
il dottorato di ricerca di Statistica Computazionale, con sede presso il
Dipartimento di Matematica e Statistica dell'Università Federico II di
8
Marcello Chiodi
Napoli, coordinato dal Prof. Lauro. La scelta degli argomenti e dei
particolari esempi, nonché l'ordine con cui sono presentati risente di
questa provenienza mista (in effetti questo scritto é nato da una
rielaborazione di una dispensa dispensa distribuita durante un ciclo di
miei seminari per gli studenti del dottorato di ricerca di Statistica
Computazionale).
L’esposizione degli argomenti concernenti le simulazioni e il metodo
Montecarlo é volutamente molto discorsiva, e le varie tecniche vengono
prevalentemente presentate, ove possibile, con esempi e con
rappresentazioni grafiche. Per le dimostrazioni, specie per la parte
relativa a tecniche per la generazione di numeri casuali da particolari
distribuzioni, ho preferito, quando possibile, approcci intuitivi o
geometrici che giustifichino lo scaturire di un certo risultato o di una
certa formula; questo è per esempio l’approccio utilizzato per la
presentazione della formula di Box-Muller, classicamente misteriosa a
prima vista; ho preferito di solito evitare di presentare formule
complesse (che non si sa da dove vengano fuori) che, come per incanto,
servono a generare numeri casuali provenienti da…..
La bibliografia sulla generazione di numeri casuali da una
distribuzione uniforme, sulla generazione di numeri casuali da
particolari distribuzioni e sull’uso delle tecniche di simulazione in
statistica è vastissima: la scelta degli argomenti da me operata è
volutamente parziale e personale e rispecchia essenzialmente gli aspetti
(pochi?) delle tecniche di simulazione che ho avuto modo, a vari livelli,
di studiare e di applicare e comunque comprende le parti che secondo
me possono costituire un bagaglio di conoscenze di base di uno studente
di Statistica, sia di un corso di laurea che di un corso di diploma.
Gli algoritmi suggeriti qui hanno semplicemente il valore di traccia:
ho preferito adottare una tecnica modulare, quando possibile, che fa
riferimento agli algoritmi citati in pagine precedenti, senza entrare nel
dettaglio di specifici linguaggi di programmazione.
Ho comunque cercato di riportare almeno una tecnica o un algoritmo
per la generazione di numeri casuali dalle distribuzioni più note e più
usate in statistica.
Le tecniche esposte per la generazione di numeri casuali da
particolari distribuzioni rispondono a requisiti di razionalità,
compattezza e facilità di comprensione; pertanto, per ciascuna
distribuzione esaminata, la tecnica (o le tecniche) di generazione
Tecniche di Simulazione in Statistica.
9
presentata quasi sicuramente non è la più efficiente dal punto di vista
computazionale, ma risulta di facile implementazione e/o di semplice
dimostrazione; do quindi per scontato che chi cercasse degli algoritmi
ottimi da un punto di vista computazionale, li troverà più facilmente, e
con maggior rigore, nei testi specializzati di calcolo numerico. D'altra
parte per ogni distribuzione esistono oggi numerosissimi algoritmi di
generazione di numeri casuali ed è presumibile che alcuni degli
argomenti qui esposti possano presto diventare obsoleti (o esserlo già
adesso!) ma è un rischio sempre presente per tutto ciò che è in qualche
modo legato non solo a sviluppi teorici, ma a sviluppi tecnologici;
l'incremento continuo delle velocità di elaborazione, e l'evoluzione dei
processori spesso vanificano (almeno per i PC) la necessità di
sottilissimi accorgimenti tecnici che servivano per risparmiare alcune
operazioni nell'esecuzione di un algoritmo di generazione di numeri
casuali!
Presuppongo che lo studente che legge queste pagine abbia una
discreta conoscenza di: analisi matematica; calcolo delle probabilità;
inferenza statistica; una familiarità con un linguaggio di
programmazione scientifico è opportuna, meglio ancora con linguaggi
dedicati matematico- statistici e con strumenti di calcolo simbolico.
Considero comunque poco rilevante il più delle volte la scelta di un
particolare linguaggio scientifico di programmazione: fra i linguaggi
dedicati ed i packages statistico-matematici ormai tutti in varia misura
contemplano numerose funzioni per la generazione di numeri casuali da
varie distribuzioni: esula dagli scopi di questo scritto un confronto ed
un’analisi del software esistente. Ritengo inoltre che il più delle volte
convenga impiegare le routines di generazione di numeri casuali già
implementate nel software che si usa abitualmente.
I vari capitoli hanno un certo grado di autonomia e non è quindi
necessario leggere tutto, se si è interessati solo ad aspetti specifici; direi
comunque che il 2° capitolo è opportuno; il 3° può anche essere saltato,
se si dà per scontata l'esistenza di buoni generatori (lineari e non
lineari) di numeri casuali da una distribuzione uniforme; le idee che
stanno alla base delle tecniche per la generazione di numeri casuali da
distribuzioni univariate qualsiasi sono esposte nel capitolo 4° per le
tecniche di inversione della funzione di ripartizione, nel capitolo 5° per
le tecniche basate su trasformazioni di variabili aleatorie e nel 6° per le
tecniche di accettazione rifiuto e del rapporto di uniformi; il 7° capitolo
10
Marcello Chiodi
dà dei cenni sulla generazione di vettori di numeri casuali da alcune
distribuzioni multivariate; nell'8° sono accennate le idee generali
sull'integrazione numerica mediante metodo Montecarlo; nel 9° capitolo,
sufficientemente autonomo rispetto ai precedenti, espongo i concetti che
stanno alla base dell'uso delle tecniche di simulazione in statistica,
insieme con molti esempi. Un possibile percorso di lettura è: cap.2,8,9
facendo riferimento, se e quando occorre, ai cap. 3,4,5,6,7.
Nel 10° capitolo ho inserito, oltre ai riferimenti bibliografici e agli
indici, alcune tavole che avrebbero appesantito il testo; vi é anche un
paragrafo su Simul2000, il mio programma didattico sulle simulazioni in
statistica: una versione aggiornata di tale software é scaricabile dalle
mie pagine web o richiedendomelo via e-mail, come spiegato nella
sezione 10.1.
Ringrazio tutti coloro, colleghi e studenti, che mi hanno incoraggiato
a scrivere questi appunti e ringrazio in anticipo tutti coloro che mi
segnaleranno i numerosissimi errori (talvolta, ahimè, non casuali!)
presenti in questa stesura.
Marcello Chiodi
Tecniche di Simulazione in Statistica.
11
2. Simulazioni e metodo Montecarlo
“….L’ idea era di sperimentare migliaia di tali possibilità
e, ad ogni stadio, selezionare a caso; in altre parole,
facendo ricorso ad un numero casuale con una opportuna
probabilità, si potrebbe indagare sulla sorte di certi tipi di
eventi, in modo da seguire, per così dire, una successione
lineare, anziché considerare tutte le ramificazioni. Dopo
aver esaminato i possibili andamenti soltanto in qualche
migliaio di casi, si avrebbe a disposizione un buon campione
ed una risposta approssimativa al problema. Tutto ciò che
occorre conoscere è la media degli andamenti dei campioni
prodotti. Un tale procedimento si rivelò particolarmente
adatto per essere eseguito automaticamente e la nascita dei
calcolatori elettronici fu proprio una conseguenza di tale
fatto.”
(Ulam, 1976.Trad.italiana 1995)
Le tecniche di simulazione, in statistica come in altri campi, sono
intimamente legate al calcolo automatico ed agli elaboratori elettronici:
basti pensare che le prime implementazioni del metodo Montecarlo1
dovettero attendere la nascita di una macchina automatica, ad opera
fondamentalmente di Von Neumann: anzi per alcuni scienziati, fra cui
Ulam e Von Neumann, proprio la possibilità di implementare in modo
rapido i calcoli ripetitivi necessari per condurre delle simulazioni (in
merito alla moltiplicazione molecolare, calcoli necessari a Los Alamos
nell'ambito del progetto Manhattan per la costruzione della prima bomba
atomica!) era un incentivo per la realizzazione materiale di una macchina
automatica da calcolo.
Simulare (nell’accezione di mimare più che in quella di fingere) un
processo significa sperimentare lo stesso processo in condizioni analoghe
un gran numero di volte, rilevando ogni volta lo stato finale del sistema.
Se lo stato del sistema é esprimibile da variabili numeriche, una prima
sintesi della simulazione é data, per esempio, dalla media aritmetica degli
1
Utilizzerò in queste pagine il termine italiano "Montecarlo", invece del termine inglese
"Monte Carlo": il termine originale era "Monte Carlo" e se lo intendiamo come sigla non
andrebbe tradotto in italiano; dal momento però che tale sigla traeva la sua origine dal nome
geografico, che nella trascrizione italiana (ma anche nell'originale) è "Montecarlo", userò
questo termine.
12
Marcello Chiodi
stati e dalla loro varianza. A questa tecnica non a caso é stato dato il
nome di metodo Montecarlo (Metropolis, Ulam, 1949), che
originariamente era il nome in codice dato per ragioni di segretezza, per
associarla non tanto al gioco d’azzardo, quanto al fatto che in una casa da
gioco, per esempio al tavolo della roulette, lo stesso esperimento
aleatorio viene ripetuto in condizioni analoghe un gran numero di volte2.
Se, per esempio, si volesse stimare la probabilità p di uscita di un numero
rosso alla roulette (supponendo di non conoscerne la composizione), si
potrebbero considerare gli esiti di n giocate e stimare p mediante la
frequenza relativa di successo p^ = v/n, essendo v il numero delle giocate
in cui è uscito un numero rosso.
In questo banale esperimento di simulazione, sono importanti due
caratteristiche comuni alle tecniche di tipo Montecarlo:
ƒl'analogia fra i vari esperimenti: la roulette é sempre la stessa;
ƒl'indipendenza fra i vari esperimenti.
L’esempio ora prospettato é però poco realistico per due motivi:
•
la situazione ipotizzata é troppo semplice, perché il risultato esatto
(per una roulette bilanciata, di cui si conosce la composizione) é
noto: p = 18/37 = 0,4865;
•
inoltre, pur con un numero limitato di prove (100 nell’esempio),
occorrerebbero alcune ore per condurre a termine l'esperimento in un
casinò con una roulette reale.
Se però si volesse valutare la probabilità di riuscita di un solitario
qualsiasi, il cui esito dipenda solo dalla fortuna e non dall’abilità del
giocatore, difficilmente si potrebbe ricavare un risultato per via analitica:
non resterebbe infatti che agire praticamente per enumerazione completa
verificando, per tutte le possibili 40! permutazioni di un mazzo di carte
regionali, quante portano alla riuscita del solitario. Oppure occorrerebbe
costruire un albero delle possibilità per tutti i possibili casi: il compito
risulterebbe a dir poco oneroso e non occorre entrare in ulteriori dettagli.
La tecnica di simulazione in questo caso consiste, molto semplicemente,
e molto poco elegantemente, nel giocare materialmente il solitario un
certo numero n di volte, stimando la probabilità teorica di riuscita
2
Ciò d'altra parte non deve stupire, se si pensa che i primi documenti scritti relativi al calcolo
delle probabilità sono riferiti proprio a problemi di giochi d'azzardo (carteggio PascalFermat); in ogni caso i giochi di carte o di dadi costituiscono degli schemi fisici di
meccanismi aleatori molto semplici che consentono di introdurre e giustificare un gran
numero di distribuzioni elementari.
Tecniche di Simulazione in Statistica.
13
mediante la frequenza relativa di successo p^ =v/n. Si potrebbe poi
costruire un intervallo di confidenza per p basandosi sui noti risultati in
merito ad esperimenti bernoulliani; naturalmente effettuando solo 100
simulazioni si otterrebbe un intervallo di confidenza piuttosto ampio, ma
sarebbe comunque un risultato.
Se si suppone però di far giocare un computer (avendo
opportunamente implementato un programma per il gioco automatico del
solitario, compito comunque per nulla banale), si può pensare di poter
giocare diverse migliaia di partite al minuto, e quindi ottenere una
precisione migliore nel risultato simulato. E’ ancora più semplice pensare
ad un’esecuzione al computer della simulazione riguardante la roulette.
Esempi più realistici, e più utili, riguardano la possibilità di controllare
processi reali che si svolgono in condizioni aleatorie: si supponga di
sapere che il processo degli arrivi dei clienti in un ufficio pubblico sia
regolato ad esempio nel caso più semplice da un processo di Poisson ad
incrementi indipendenti, e che i k sportelli dell’ufficio provvedano ad
effettuare il servizio in un tempo regolato da una certa legge di
probabilità, per esempio un altro processo di Poisson. Si vuole
determinare il numero medio di persone in coda dopo un certo periodo di
tempo T. Si può pertanto simulare mediante un computer il processo
degli arrivi ed il processo dei servizi corrispondenti; una simulazione
corrisponderà ad un periodo T: si conterà il numero delle persone in
coda, che sarà dato dal totale degli arrivi meno il totale dei servizi nel
periodo T, e si ripeterà quindi il procedimento un gran numero di volte,
per determinare la media e la varianza della lunghezza della coda, oppure
per valutare la media della lunghezza della coda durante l'intero processo
ossia la media, ponderata secondo i tempi corrispondenti, della lunghezza
della coda nell'intero periodo di tempo.
Con le semplificazioni fatte é però possibile trovare il risultato esatto
per via analitica; si pensi invece alla seguente situazione più realistica:
•
gli arrivi sono regolati da m processi diversi: persone che chiedono
un tipo di servizio fra m possibili, con leggi non necessariamente di
Poisson;
•
i processi non sono omogenei: la densità di probabilità degli arrivi
varia nel corso della giornata;
•
esistono k sportelli che effettuano ciascuno uno solo, o solo alcuni,
fra gli m servizi possibili;
14
Marcello Chiodi
ciascuno degli m servizi richiede un tempo che segue una diversa
distribuzione di probabilità;
•
gli utenti in arrivo scelgono lo sportello con la coda più corta fra
quelli disponibili per il proprio servizio, ma escono subito se tale
coda é più lunga di L, o escono se il tempo di attesa supera un
particolare valore.
Questa situazione é molto più realistica ma più complessa, e
presumibilmente é analizzabile solo mediante simulazione: i gestori del
servizio che vogliono rendere il servizio ottimale, possono simulare
diverse situazioni con diverse numerosità di sportelli e con diverse
assegnazioni degli m servizi ai k sportelli, scegliendo poi quella che dà i
migliori risultati su un gran numero di giornate simulate.
Altri esempi si trovano nella simulazione di flussi di traffico, o in
campo aziendale per simulare il comportamento di un insieme di
consumatori in funzione di differenti politiche di prezzo per il lancio di
un nuovo prodotto.
Un altro campo di applicazione frequente è quello delle verifiche sulla
robustezza e sulla velocità di esecuzione di programmi di calcolo: se una
certa routine, o un certo programma complesso richiede k variabili come
input, e ciascuna delle variabili può assumere valori in un certo
intervallo, nella fase di prova (o debugging) del programma occorre
saggiarne il funzionamento per diverse combinazioni di valori delle k
variabili di input, per verificare la correttezza dei risultati, la velocità di
esecuzione o altri aspetti dell'esecuzione del programma. Saggiare tutte le
possibilità in modo esaustivo è il più delle volte proibitivo, anche
imponendo il vincolo che ciascuna variabile possa assumere solo un
numero v di valori: infatti il numero delle k-ple possibili sarebbe vk.
Invece si possono generare a caso dei valori fra i v possibili per ciascuna
delle k variabili, e poi si utilizzano m (con m < vk) delle k-ple così
generate; si proveranno in questo modo solo questi m casi anziché tutti i
possibili vk casi, ma è da presumere che gli eventuali errori sistematici
vengano comunque identificati, e che la valutazione del tempo medio di
esecuzione sia attendibile; inoltre l'effettuazione del debugging mediante
attribuzione casuale degli input è di immediata programmazione.
•
Tecniche di Simulazione in Statistica.
2.1.
15
Simulazioni in statistica
Si pensi ora ad una situazione alquanto diversa: per la verifica di una
particolare ipotesi, si é costruito un test Y, ad esempio con il rapporto
delle verosimiglianze λ, ma non se ne conosce la distribuzione
campionaria se non per grandi campioni: sappiamo che sotto H0 la
quantità campionaria –2logλ asintoticamente si distribuisce secondo una
v.a. χ2, con gli opportuni gradi di libertà; analogamente Y potrebbe essere
lo stimatore di massima verosimiglianza di un parametro, che
asintoticamente si distribuisce normalmente nel caso regolare, ma di cui
non conosciamo la distribuzione per piccoli campioni.
Si può allora simulare l’estrazione di un gran numero m di campioni di
ampiezza n dalla distribuzione f(x;θ0) specificata da H0, calcolando y per
ciascuno dei campioni simulati3; l’insieme dei valori yj (j = 1,2,…,m),
costituisce un campione di ampiezza m estratto dalla distribuzione di Y!
Pertanto questo campione fornisce delle informazioni sulla vera
distribuzione di Y, tanto più precise quanto più m é grande.4 Nell’esempio
molto generale fatto, converrà ripetere la simulazione per diversi valori di
n, (ad es. 5,10,20,50,100,200,…) e vedere per quali valori di n la
distribuzione empirica degli m valori di y é ben approssimata dalla
distribuzione asintotica. Per i valori di n più piccoli ci aspetteremo una
certa divergenza dalla distribuzione asintotica; mediante la distribuzione
simulata potremo stimare tale divergenza.
Ad esempio5 nel 1978, per studiare le proprietà teoriche del metodo di
raggruppamento delle classi naturali (Mineo,1978), fu simulata
l'estrazione di campioni di ampiezza n = 50, 100 e 500 da una
distribuzione normale. Ciascuno di essi fu suddiviso in classi secondo il
metodo delle classi naturali, delle classi costanti e delle classi di
3
4
5
Gosset (alias Student) utilizzò un metodo empirico molto simile al metodo Montecarlo per
studiare la distribuzione di una media standardizzata, mediante 750 campioni di ampiezza 4,
ottenuti da una distribuzione empirica (reale) di 3000 misurazioni approssimativamente
normali. Si vedano Stigler (1991) e Piccolo (1998) per citazioni storiche sulle simulazioni in
statistica.
Non si confonda, nell'esempio, n con m; ossia l’ampiezza n dei singoli campioni da simulare,
costante per l'intera simulazione, ed il numero m di campioni, funzione fondamentalmente
della precisione che si vuole ottenere, della potenza di calcolo che si ha a disposizione e, non
ultimo, del tempo che si vuole impegnare nella simulazione.
L'esempio non è casuale, perché è stato il primo studio di simulazione in statistica che, da
studente, ho conosciuto.
16
Marcello Chiodi
18000
0,50
16000
0,45
14000
0,40
12000
0,35
1-F(t)=Prob(T>t)
Frequenze della distribuzione simulata
probabilità uguali calcolando ogni volta l'indice di bontà dell'adattamento
X2, per verificare l'ipotesi funzionale che il campione provenisse da una
distribuzione normale (ipotesi che si sapeva essere vera, dato che i
campioni erano formati da numeri casuali normali). L'esame degli
istogrammi costruiti sulla base delle distribuzioni simulate di frequenza
delle 3 serie di valori di X2 (una serie di valori per ciascun metodo di
raggruppamento), per ciascun valore dell'ampiezza campionaria n e del
numero delle classi k, permise di mostrare la superiorità del metodo di
raggruppamento delle classi naturali, in quanto la distribuzione dei valori
simulati di X2 fondati sui raggruppamenti in classi naturali, si accostava
maggiormente a quella teorica di una v.a. χ2 con k-3 gradi di libertà.
10000
8000
6000
4000
0,30
0,25
0,20
0,15
0,10
2000
0
0.0
Approssimazione mediante simulazione
Approssimazione normale
Approssimazione non normale
0,05
0.2
0.4
0.6
0.8
1.0
t
1.2
1.4
1.6
1.8
0,00
0,00
0,25
0,50
0,75
1,00
1,25
1,50
t
Figura 1. Distribuzione campionaria simulata di uno stimatore T ottenuta
simulando l'estrazione di 1.000.000 di campioni di ampiezza 5 (a sinistra) e
confronto con due approssimazioni analitiche (a destra).
Nella figura 1 è riportato un altro esempio di simulazione di
distribuzioni campionarie: si voleva studiare la distribuzione campionaria
dello stimatore Tn di massima verosimiglianza di un parametro θ sulla
base di un campione casuale semplice di n osservazioni, essendo Xi la
v.a. relativa all'i-esima osservazione campionaria, con Xi∼f(x;θ). La
distribuzione esatta di Tn nel caso generale non era nota, anzi era noto
che non era certamente esprimibile in forma chiusa: si conosceva
comunque l'approssimazione normale, valida però per grandi valori di n;
inoltre, nel caso particolare, avevo ricavato, seppure in modo non
elementare, una seconda approssimazione a tale distribuzione
Tecniche di Simulazione in Statistica.
17
campionaria6: una delle domande che mi ponevo era se l'approssimazione
normale, in particolare nelle code della distribuzione di Tn, si potesse
usare, senza commettere un grosso errore, anche per valori moderati di n.
In ogni caso volevo vedere se l'approssimazione più complessa sarebbe
risultata tanto migliore di quella normale, da giustificarne l'adozione
nonostante il maggior sforzo computazionale. Ovviamente occorreva una
stima della distribuzione campionaria di Tn: a tale scopo effettuai delle
simulazioni, i cui risultati, per n = 5, sono riportati nei grafici della figura
1; avevo simulato, mediante opportuni algoritmi, l'estrazione di
m = 1.000.000 di campioni di ampiezza 5, dalla distribuzione di densità
f(x;θ). Per ogni campione avevo calcolato t5j, ossia il valore assunto dallo
stimatore T5 nel j-esimo campione (j = 1,2,…,1.000.000): la distribuzione
di frequenza empirica degli m valori di t5j costituisce una stima della
distribuzione campionaria di T5!. L'istogramma di tale distribuzione
simulata è riportato nella figura 1, in cui è rappresentato solo il ramo
positivo7. Quindi si è calcolato il complemento all'unità della funzione di
ripartizione simulata di T5, ossia la frazione di campioni in cui t5 supera
un valore particolare. Nello stesso grafico sono rappresentate le analoghe
curve ricavate dalle due approssimazioni analitiche alla distribuzione di
T5: questo confronto ha permesso di vedere che l'approssimazione
normale per n = 5 è senz'altro carente, mentre l'altra approssimazione,
specialmente nella coda, risulta accostarsi benissimo alla distribuzione
simulata.
2.2.
Simulazione di modelli deterministici
Può sembrare un controsenso l’applicazione di tecniche di
simulazione a problemi deterministici, ma si consideri l’esempio
6
7
In questo contesto, ai fini dell'esempio, è irrilevante di quale particolare popolazione f(.), di
quale parametro θ e di quale stimatore si stia trattando: questo esempio verrà comunque
ripreso nel capitolo riguardante le applicazioni statistiche delle tecniche di simulazione; per
soddisfare la curiosità del lettore, chiarisco comunque che nella figura 1 si fa riferimento a
campioni provenienti da una distribuzione normale di ordine p, con p = 1,1; lo stimatore Tn è
lo stimatore di Massima Verosimiglianza del parametro di posizione µ = E(X);
l'approssimazione asintotica normale è ricavata dai risultati ordinari sugli stimatori di MV nel
caso regolare; l'altra approssimazione asintotica a cui si fa riferimento è basata sulla
determinazione del punto di sella (Chiodi,1994).
Si sapeva che in questo caso la distribuzione teorica di T era senz'altro simmetrica attorno allo
zero, per cui si potevano accorpare le frequenze relative alle classi equidistanti dal centro di
simmetria della distribuzione.
18
Marcello Chiodi
seguente: si vuole calcolare il valore Ι di un integrale definito su un
intervallo chiuso [a,b] di una funzione h(x) limitata, sempre positiva8 che
assume in [a,b] valore massimo H; si supponga ovviamente di non poter
ricavare il risultato esatto, né di volere usare approssimazioni basate su
opportune formule di quadratura.
y ≤h(x)
H
y>h(x)
H
h(x)
0
a
b
x
0
a
b
x
Figura 2
Integrale definito di una funzione limitata h(x) (a sinistra) e
integrazione (a destra) con il metodo Montecarlo: stima di un integrale
definito di una funzione limitata mediante rapporto fra punti sotto la curva e
totale dei punti lanciati.
Determiniamo ora a caso (o, meglio, con densità di probabilità
uniforme) dei punti nel rettangolo delimitato orizzontalmente dall’asse
delle x e dalla retta di ordinata H e verticalmente dalle due rette verticali
passanti per a e b. Si veda ora la figura 2: il rapporto fra il numero dei
punti che cadono sotto h(x) ed il totale dei punti lanciati, moltiplicato per
H•(b-a), area del rettangolo in cui sono stati estratti i numeri casuali,
fornisce una stima del valore dell’integrale. Senza bisogno di ricorrere ad
una dimostrazione teorica, il risultato é intuitivo e di una semplicità
disarmante in confronto alla complessità analitica del calcolo integrale!
Infatti il risultato cercato é un’area; inoltre la probabilità p che un punto
scelto a caso dentro il rettangolo cada all’interno della figura delimitata
superiormente da h(x) é data dal rapporto fra le rispettive aree. La
probabilità p viene stimata nel modo usuale, attraverso la stima di
massima verosimiglianza p^ , frequenza relativa di successo su un numero
m (possibilmente grande) di esperimenti bernoulliani!
8
La positività di h(x) non è necessaria, per l’applicazione di questa tecnica: è solo funzionale
all’esempio della figura.
Tecniche di Simulazione in Statistica.
19
Nella figura 2 è riportato un esempio di applicazione di questa tecnica
con m = 500. Vengono estratte m coppie di numeri casuali indipendenti
(Xi,Yi), con Xi uniforme in [a,b] e Yi uniforme in [0,H]; oppure possiamo
pensare che vengano lanciati a caso 500 punti nel rettangolo in cui è
contenuta h(x). Sia v il numero di punti che cade sotto h(x), per i quali
cioè si ha: Yi < h(Xi); la stima dell’integrale sarà data da:
Ι^ = H(b-a)v/m;
posto p = v/m, un intervallo di confidenza al 95% per I é dato da:
^
H(b-a)(p^ ± 1,96 p^ (1-p^ )/m )
Nell'esempio p^ = 335/500, b-a = 10; H = 8,686 e quindi Ι^ = 58,1962.
L’esempio riportato nelle figure ha solo un valore didattico per
evidenziare la semplicità dell’approccio: si vedranno più avanti, nel
capitolo 8, tecniche di integrazione con metodo Montecarlo più efficienti:
in realtà le tecniche di integrazione di tipo Montecarlo sono in pratica
utili per approssimare integrali multipli, specie con un numero di
dimensioni molto elevato: per integrare numericamente funzioni di poche
variabili esistono dei metodi molto più sofisticati e più precisi del metodo
Montecarlo.
Se pensiamo di valutare un integrale semplice in modo approssimato
suddividendo ad esempio l'intervallo di variazione della variabile
indipendente in k intervalli, occorrerà valutare la funzione in k+1 punti;
se però le dimensioni del dominio di integrazione sono n, e vogliamo
utilizzare una griglia con k intervalli per ciascuna dimensione, i punti
della griglia per i quali valutare la funzione saranno (k+1)n: questa
crescita esponenziale è detta anche curse of dimensionality (la
maledizione della dimensionalità) dato che per ricoprire densamente
spazi euclidei di dimensione crescente occorre un numero di punti che
cresce in modo esponenziale.
Riflettendo sull'esempio prima descritto, se si adotta una tecnica di
tipo Montecarlo per integrali multipli, l'errore standard della stima è
sempre lo stesso, e dipende solo dal numero dei punti impiegati!
20
Marcello Chiodi
&&RRQQ WWHHFFQQLLFFKKHH GGLL WWLLSSRR 0
0RRQQWWHHFFDDUUOORR EEDDVVDDWWHH VVXX P
P SSXXQQWWLL
HHVVWWUUDDWWWWLL FFDDVVXXDDOOP
PHHQQWWHH OO
HHUUUURRUUHH VVWWDDQQGGDDUUGG GGHHOOOODD VVWWLLP
PDD
LLQQYYHHFFHH qq LLQQ JJHHQQHHUUDDOOHH GGHHOOOO
RRUUGGLLQQHH GGLL P
P
LLQQGGLLSSHHQQGGHHQQWWHHP
PHHQQWWHH GGDDOO QQXXP
PHHUURR GGLL GGLLP
PHHQQVVLLRRQQLL GGHHOOOODD
IIXXQQ]]LLRRQQHHGGDDLLQQWWHHJJUUDDUUHH
Se si riflette attentamente, si possono vedere delle analogie con
l’esempio fatto per ricavare un’approssimazione ad una distribuzione
campionaria di uno stimatore. Infatti la speranza matematica di uno
stimatore T = T(X1,X2,…,Xn) é data da:
E(T) = ⌠
 t(x1,x2,…,xn)f(x1,x2…xn)dx1dx2…dxn
⌡ℜn
per cui il problema si riduce a quello del calcolo, mediante
simulazione, di un integrale, oltretutto multiplo. Del tutto analogo é il
problema della determinazione dei momenti della distribuzione di T.
Anche la valutazione mediante simulazione del livello di significatività e
del potere di un test, come vedremo nel capitolo 9, rientra formalmente
nell'ambito dei problemi di valutazione approssimata di integrali.
Per la valutazione approssimata di E(T) mediante simulazione si
impiega la relazione:
E(T) ≈
m
∑ t(xi1,xi2,…,xin)/m
i=1
essendo xi1,xi2,…,xin gli n elementi dell’i-esimo campione simulato di
ampiezza n.
Fra gli impieghi delle tecniche di simulazione mediante metodo
Montecarlo in problemi numerici, ricordo la risoluzione numerica di
equazioni differenziali o integro-differenziali, lo studio di particolari
processi stocastici, particolari tecniche di ottimizzazione fra cui ad
esempio quella del simulated annealing, per l'ottimizzazione di funzioni
su domini discreti che non verranno trattati in questo testo.
Le tecniche di integrazione di tipo Montecarlo qui accennate, insieme
ad altre utili in ambito statistico, verranno riprese nel capitolo 8, mentre il
capitolo 9 sarà dedicato all'applicazione di tecniche elementari di
simulazione a problemi squisitamente statistici.
Tecniche di Simulazione in Statistica.
21
Nei capitoli che seguono vengono invece esposte alcune delle tecniche
più note per la generazione di numeri casuali mediante computer, prima
da una distribuzione uniforme, nel capitolo 3, e poi da distribuzioni
qualsiasi nei capitoli 4, dedicato alle tecniche basate sull’inversione della
funzione di ripartizione, 5, relativo alle tecniche basate su trasformazioni
di variabili, 6, per varie tecniche di accettazione-rifiuto e 7, relativo alla
generazione di vettori di numeri casuali da particolari distribuzioni
multivariate.
22
Marcello Chiodi
3. Generazione di numeri pseudo-casuali da una
distribuzione uniforme
Anyone who considers arithmetical methods of producing
random digits is, of course, in a state of sin.
(Von Neumann, 1951, cit. da Knuth, 1981, pag.1)
Dagli esempi accennati nelle pagine precedenti si intuisce che una
premessa indispensabile per potere procedere materialmente
all’implementazione di una simulazione é quella di saper simulare
tramite computer l’estrazione di numeri casuali da particolari
distribuzioni, ossia determinazioni (indipendenti) di variabili casuali con
particolari distribuzioni.
I numeri casuali generati mediante particolari algoritmi sono detti
numeri pseudo-casuali9: infatti non é pensabile di poter generare dei
numeri veramente casuali mediante un algoritmo automatico. Anzi,
l’idea stessa di poter impiegare degli algoritmi (ossia dei procedimenti
automatici con delle regole precise) per simulare meccanismi casuali
sembra a prima vista un controsenso. Vedremo più avanti però come ciò
sia possibile: lo spirito della generazione di numeri pseudo-casuali é
quello di ottenere, mediante degli algoritmi, delle sequenze di numeri che
non sono certamente fisicamente casuali, perché ottenute mediante
procedimenti analitici, ma che somigliano per molti versi a delle
sequenze di numeri realmente casuali; ad esempio, la loro distribuzione
empirica presenta caratteristiche che non si discostano in modo
significativo da quelle della corrispondente distribuzione teorica.
Tecnicamente si fa ricorso a degli algoritmi che producono sequenze
caotiche, ossia opportune sequenze che si comportano in modo simile a
delle sequenze casuali.
In effetti il problema al giorno d'oggi é meno pressante che in passato,
perché quasi tutti i linguaggi scientifici hanno delle subroutines o
funzioni per generare numeri pseudo-casuali di discreta qualità da una
distribuzione uniforme, e tutti i software, packages o librerie, statistici e/o
matematici (SAS, SPSS, S-PLUS, GAUSS, STATISTICA, MATLAB,
MINITAB, PV-WAVE, ma anche EXCEL, MATHEMATICA, MAPLE,
9
In questa esposizione, quando scriverò “numeri casuali”, intenderò sempre “numeri pseudocasuali”.
Tecniche di Simulazione in Statistica.
23
librerie di programmi per FORTRAN e C, fra cui IMSL, NAG etc.)
hanno delle funzioni per generare numeri casuali da un gran numero di
distribuzioni, in modo più o meno efficiente. In effetti qui voglio solo
dare un’idea generale sulle tecniche e sui principi su cui si basano.
Prima vediamo, con alcuni esempi elementari, come il problema
essenziale sia quello di saper generare numeri casuali da una
distribuzione uniforme standard, ossia nell’intervallo [0;1), essendo tutti
gli altri casi in buona parte riconducibili a questo problema, o comunque
risolvibili solo se é risolvibile questo problema preliminare.
Negli esempi del capitolo precedente occorrevano dei numeri casuali
interi fra 0 e 36 (esempio della roulette), oppure una permutazione
casuale dei primi 40 numeri naturali (esempio del solitario) oppure dei
numeri uniformi10 in un certo range [a;b] (esempio dell’integrazione), o
nel caso più generale, dei numeri casuali da una generica distribuzione
quale la distribuzione di Poisson, o la normale, etc.
Se U é distribuito uniformemente in [0;1) ossia secondo una
distribuzione uniforme standard, con:
Prob{U≤u} = FU(u) = u, con densità: fU(u) = 1 (0 ≤ u < 1)
allora è immediato vedere che:
• J = int(U· 37) é un numero casuale che simula un numero estratto alla
roulette;
11
• V = a+(b-a)· U é un numero casuale uniforme nell’intervallo (a,b)
• Per generare invece X da una distribuzione qualsiasi, si consideri la
figura seguente: se U é generato da una uniforme standard allora X,
soluzione unica di F(X) = U, é un numero casuale generato dalla
distribuzione con funzione di ripartizione F(· ). Il metodo é applicabile
a qualsiasi variabile casuale, continua o discreta, come si vedrà nel
capitolo 4.
Questo capitolo è dedicato invece ai generatori di sequenze Ui di
numeri pseudo-casuali uniformi; se non si è interessati ad entrare in
ulteriore dettaglio, e si dà dunque per scontato che esistono dei metodi
efficienti per ottenere i numeri Ui, si può saltare al capitolo successivo,
10
11
Ovviamente qui e nelle pagine successive, con l'espressione: "numero uniforme" oppure:
"numero pseudo-casuale uniforme" intendo: "numero (pseudo) casuale proveniente da una
distribuzione uniforme"; senza questa intesa l'espressione "numero uniforme" sarebbe priva di
significato.
L'esempio sulle permutazioni casuali sarà sviluppato in seguito.
24
Marcello Chiodi
che inizia a trattare la generazione di numeri pseudo-casuali da
particolari distribuzioni non uniformi.
1
1) Si genera U uniforme
nell'intervallo [0-1]
F(x)
U
2) Si determina X,
tale che:
F(X)=U
F(x)
0
x
X
Figura 3
Generazione di numeri casuali da una generica distribuzione
discreta mediante inversione della funzione di ripartizione.
3.1.
Algoritmi di generazione di numeri pseudo-casuali
uniformi
In questo paragrafo descrivo alcuni metodi impiegati per la
generazione di numeri pseudo-casuali uniformi. Le tecniche si basano su
particolari algoritmi, piuttosto che su procedimenti meccanici o fisici, di
ardua implementazione su un computer.
In generale, gli algoritmi forniscono valori ai, appartenenti a Ζn,
l'insieme degli interi minori di n, sulla base di k precedenti valori di ai,
secondo il generico schema recursivo:
ai = g(ω
ω, ai-1, ai-2,…,ai-k).
Senza bisogno di entrare in dettagli, è ovvio che il tipo di sequenza è
determinato dalla funzione g(· ), che può essere lineare o non lineare, e
dai parametri ω. Gli elementi della sequenza verranno poi standardizzati
mediante Ui = ai/n.
Una caratteristica che si potrebbe richiedere ad un algoritmo di
generazione di numeri pseudo-casuali è quella della portabilità, ossia la
possibilità di riottenere esattamente la stessa sequenza di numeri su
macchine differenti, partendo dagli stessi valori iniziali. Non esaminerò
Tecniche di Simulazione in Statistica.
25
questo aspetto che necessiterebbe di un approfondimento sulla precisione
e sul tipo di aritmetica impiegati dal linguaggio e dalla macchina in un
uso.
3.1.1.
Generatori congruenziali lineari
L’algoritmo più usato, e più semplice, è il generatore congruenziale
lineare, introdotto da Lehmer (1951), che fornisce una sequenza di m
numeri Ui mediante la relazione recursiva:
Generatore congruenziale lineare
1)
2)
ai = λai-1+b (mod c)
Ui = ai/c
i = 1,2,…,m
λ,b,c, a0, sono dei numeri interi:
moltiplicatore,
λ,
0<λ<c
b,
incremento
0≤b<c
c,
modulo
c>0
a0
valore iniziale
0 ≤ a0 < c
Il seme iniziale a0 in generale é arbitrario. L’operazione m (mod n) (m
modulo n, m ed n interi), indica il resto della divisione intera m/n. I
numeri ai saranno pertanto compresi fra 0 e c-1.
I numeri Ui costituiscono una sequenza di numeri pseudo-casuali
uniformi nell'intervallo standard [0;1)
La logica dell’applicazione di questo metodo sta nella speranza che,
per opportuni valori di λ, b e c, si ottengano dei valori di ai che saltano
fra 0 e c-1 in modo poco prevedibile e molto disordinato; l'operazione
mod c (resto della divisione per c) può sembrare simile al determinare la
posizione di arrivo di una pallina nel piatto di una roulette con c caselle
dopo un certo numero di giri. Se b = 0 si ha il metodo congruenziale
moltiplicativo puro.
L’operazione Ui = ai/c ha semplicemente lo scopo di riportarsi
all’intervallo standardizzato [0;1).
Va sottolineato subito che nell’implementazione dell’algoritmo in un
qualsiasi linguaggio di programmazione, le operazioni che riguardano
26
Marcello Chiodi
l’aggiornamento di ai vanno effettuate con la precisione massima, ossia
senza errori di troncamento o di arrotondamento: in pratica deve essere
possibile rappresentare con esattezza numeri interi fino ad un massimo di
λc, e la divisione intera per c deve produrre un risultato ed un resto interi
esatti; casi particolari si hanno quando c = 2k, oppure c = 2k±1, con k
intero positivo, in particolare lavorando in linguaggio macchina (Knuth,
1981)
La sequenza di numeri Ui é una sequenza di numeri pseudo-casuali
uniformi soddisfacente, purché λ, b e c siano scelti in modo opportuno e
soddisfino certe condizioni: l'algoritmo congruenziale é un esempio di
algoritmo che genera un sistema caotico, ossia piccole modifiche negli
stati iniziali provocano una forte imprevedibilità degli stati futuri (Isham
1993, pag.183).
Un requisito importante é che la sequenza delle ai abbia un ciclo più
lungo possibile; il ciclo é il numero di ai distinti che si ottengono prima di
ripetere nuovamente la stessa sequenza. La massima lunghezza possibile
é c.
Ad esempio per la sequenza generata con i parametri λ=5, b = 7,
c = 16 e a0 = 1, i primi tre termini sono:
a1 = 5· 1+7 (mod 16) = 12 (mod 16) = 12;
a2 = 5· 12+7 (mod 16) = 67 (mod 16) = 3;
a3 = 5· 3+7 (mod 16) = 22 (mod 16) = 6.
La sequenza completa degli ai e Ui per questo esempio é riportata nella
tavola:
i
ai
Ui
i
ai
Ui
0
9
1
0,0625
4
0,2500
1
10
12
0,7500
11
0,6875
2
11
3
0,1875
14
0,8750
3
12
6
0,3750
13
0,8125
4
13
5
0,3125
8
0,5000
5
14
0
0,0000
15
0,9375
6
15
7
0,4375
2
0,1250
7
16
10
0,6250
1
0,0625
8
17
9
0,5625
12
0,7500
Tavola 1 Sequenza di numeri pseudo-casuali ottenuta con: λ = 5, b = 7, c = 16,
a0 = 1; la sequenza ha ciclo di lunghezza massima 16.
Tecniche di Simulazione in Statistica.
27
Si noti che la sequenza ha un ciclo di lunghezza 16, la massima
possibile dato che c = 16. Qualsiasi a0 si scelga come inizio, si ottengono
sempre 16 valori distinti prima di riottenere a0, ossia una permutazione
dei numeri fra 0 e 15.
Se però scegliamo valori differenti di λ e b, ad esempio λ = 11, b = 0,
c = 16, a0 = 1, otteniamo una sequenza con un periodo di 4, come si vede
dalla tavola di seguito riportata:
i
ai
Ui
i
ai
Ui
0
1
2
3
4
5
1
0,0625
11
0,6875
6
11
0,6875
9
0,5625
7
9
0,5625
3
0,1875
8
3
0,1875
1
0,0625
9
1
0,0625
11
0,6875
Tavola 2
Sequenza di numeri pseudo-casuali ottenuta con: λ = 11, b = 0,
c = 16, a0 = 1. La sequenza ha un ciclo di lunghezza 4 ossia si ripete uguale
dopo 4 numeri, qualunque sia la scelta di a0.
Altri esempi per diverse scelte di λ, b e c sono riportati nelle due
tavole che seguono:
i
ai
Ui
i
ai
Ui
0
4
1
0,0010
835
0,8154
1
5
27
0,0264
323
0,3154
2
6
547
0,5342
323
0,3154
3
7
707
0,6904
323
0,3154
Tavola 3 Sequenza di numeri pseudo-casuali ottenuta con: λ = 20, b = 7,
c = 1024, a0 = 1: i termini successivi ad a5 sono tutti uguali a 323.
28
Marcello Chiodi
i
ai
Ui
i
ai
Ui
1
0,0000
25673
0,7835
0
8
942
0,0287
4918
0,1501
1
9
6755
0,2061
5931
0,1810
2
10
15712
0,4795
14696
0,4485
3
11
22501
0,6867
13613
0,4154
4
12
5938
0,1812
1978
0,0604
5
13
14983
0,4572
16463
0,5024
6
14
25380
0,7745
20524
0,6263
7
15
Tavola 4. Sequenza di numeri pseudo-casuali ottenuta con: λ = 41, b = 901,
c = 32768, a0 = 1; (sequenza con un ciclo di lunghezza massima) .
Come si intuisce dai pochi esempi riportati, la scelta di λ, b e c
condiziona in modo sostanziale il comportamento delle sequenze.
Nell’ultimo esempio riportato (con λ=41, c = 32768, b = 901 e a0 = 1),
uno sguardo alla colonna delle Ui consente di pensare che questa colonna
(estesa mediante i termini successivi della sequenza delle ai), più di
quelle degli esempi precedenti, forse potrà essere presa in considerazione
come possibile sequenza di numeri pseudo-casuali uniformi,
considerando anche che questa sequenza ha un periodo di 32768 (e
quindi ha periodo massimo ossia pari a c). Per un’applicazione reale
comunque questa sequenza sarebbe insoddisfacente, perchè fornirebbe
gli stessi numeri Ui dopo 32768 iterazioni, troppo poche per la mole
attuale degli studi di simulazioni.
Le due tavole successive si riferiscono a sequenze migliori ottenute da
generatori moltiplicativi con un modulo c più elevato: in entrambe le
sequenze c è un numero primo e il periodo è massimo per un generatore
moltiplicativo.
Tecniche di Simulazione in Statistica.
i
ai
Ui
29
i
ai
Ui
0
1
0,0000001 503
6971745
0,4155854
1
32768
0,0019533 504
15120069
0,9013065
2
95552
0,0056958 505
217910
0,0129896
3
10763458
0,6416092 506
10792605
0,6433466
4
4191392
0,2498487 507
3064077
0,1826495
5
688855
0,0410626
…
…
…
6
9053205
0,5396611 960
15526229
0,9255177
6120451
0,3648398
…
…
… 961
502
7256143
0,4325383
…
…
…
Tavola 5 Sequenza di numeri pseudo-casuali ottenuta con: λ = 32768, b = 0,
c = 16775723, a0 = 1(sequenza con un ciclo di lunghezza massima).
i
ai
Ui
i
ai
Ui
0
1
0,0000000 503
20067290
0,2990674
1
8192
0,0001221 504
64449077
0,9604994
2
9317
0,0001389 505
27602988
0,4113737
3
9225317
0,1374870 506
65303853
0,9732384
4
19706942
0,2936971 507
51575092
0,7686355
5
64858329
0,9665986
…
…
…
6
25218022
0,3758300 960
9020804
0,1344391
21825121
0,3252648
…
…
… 961
502
12206835
0,1819213
…
…
…
Tavola 6 Sequenza di numeri pseudo-casuali ottenuta con: λ = 8192, b = 0,
c = 67099547, a0 = 1;(sequenza con un ciclo di lunghezza massima).
3.1.2.
La scelta dei parametri λ, b, c e a0 (cenni)
We choose four "magic numbers": …the modulus; …the
multiplier; … the increment; …the starting value;….
Knuth (1981, pag.1)
E' immediato rilevare, dai pochi esempi riportati, alcune caratteristiche
necessarie (ma non certo sufficienti!) che deve possedere una sequenza:
deve avere un ciclo lungo, in modo che la sequenza stessa si ripeta in
•
modo uguale solo dopo molte generazioni di elementi della
sequenza; se il ciclo è di lunghezza massima c, la sequenza dei
numeri ai (i = 0,1,…,c-1) costituisce una permutazione dei numeri
30
Marcello Chiodi
interi da 0 a c-1. Nel caso di generatori moltiplicativi, la lunghezza
massima è c-1 e si ottiene una permutazione degli interi da 1 a c-1.
deve essere fondata su un divisore c possibilmente elevato, in modo
•
che si possano ottenere numeri distinti fino ad una certa cifra
decimale: se ad esempio si scegliesse c = 100000, i numeri uniformi
ottenuti sarebbero distinguibili solo fino alla quinta cifra decimale.
Se per esempio occorrono dei numeri con distribuzione uniforme
discreta nell'intervallo [1,M], occorre basarsi su generatori
congruenziali con modulo c molto più grande di M, ad evitare di
avere un numero troppo piccolo di possibili valori.
il comportamento generale della sequenza deve essere poco sensibile
•
alla scelta di a0, che di solito nelle applicazioni viene scelto a caso, o
eventualmente mediante un altro generatore di numeri casuali, o sulla
base del timer o dai valori di un particolare registro della RAM o
altro.
Se b > 0, la sequenza ha lunghezza massima c se e solo se λ, b e c
soddisfano le seguenti condizioni:
1) b e c non hanno divisori comuni oltre l’unità;
2) λ−1 é multiplo di ogni fattore primo di c;
3) λ−1 é multiplo di 4 se c é multiplo di 4;
Se b = 0, nessun elemento ai deve assumere valore 0, altrimenti anche
tutti i numeri successivi si annullano. Esistono dei teoremi fondati su
proprietà dei numeri primi che stabiliscono le condizioni per avere
sequenze di ciclo massimo c-1, cui qui accenno e soltanto per il caso in
cui c é un numero primo.
Un generatore moltiplicativo congruenziale con modulo c primo,
assume tutti i valori fra 1 e c-1 se e solo se λ è una radice primitiva
modulo c, ossia se:
c-1 è il più piccolo12 valore di n per il quale vale l'uguaglianza: λn≡1
•
mod c.
Tale definizione è però poco utile per determinare materialmente delle
radici primitive modulo c, dal momento che in generale c è un numero
primo elevato. E' più utile operativamente il seguente teorema:
Se c è un numero primo, λ è una radice primitiva modulo c se e solo
se:
12
L’uguaglianza λc-1≡1 mod c é sempre verificata (Teorema di Fermat)
Tecniche di Simulazione in Statistica.
31
λ e c sono primi fra loro e
λ(c-1)/p≠1 mod c per ogni fattore primo p di c-1.
Condizioni sufficienti affinchè 2 sia una radice primitiva di c (primo)
sono:
•
•
(c-1)/2 è un numero primo
e
c≡3 mod 8.
Da una radice primitiva g (possibilmente piccola) di c se ne possono
trovare altre mediante la relazione:
λ≡ga mod c,
con a e c-1 primi fra loro.
In effetti l'attuale disponibilità di software consente di manipolare
piuttosto agevolmente problemi concernenti la determinazione di numeri
primi e di radici primitive13.
Altre proprietà interessanti dei generatori moltiplicativi sono le
seguenti:
Se b = 0 si può dimostrare che:
ai+k = λkai (mod c).
Inoltre, sempre se b = 0, l’ autocorrelazione ρ1(U) dell’intera
sequenza di lunghezza n è compresa in un intervallo che dipende solo da
λ e c:
ρ1(U)∈[1/λ±λ/c]
essendo al solito l'autocorrelazione di lag 1 definita da:
n-1
ρ1(U) = ∑ [Ui-M(U)] [Ui+1-M(U)] / [n S2(U)],
i=1
2
con M(U) e S (U) media e varianza della sequenza dei valori Ui. Da
questa relazione sono scaturiti in passato generatori in cui λ risultasse
vicino a c ; tuttavia una simile scelta minimizza soltanto la stima del
limite superiore di ρ1(U), e non ρ1(U).
Si badi bene che questi limiti, o altri più precisi riportati da Knuth
(1981) si riferiscono soltanto all’autocorrelazione del primo ordine ed
all’intera sequenza, mentre l’autocorrelazione di una sottosequenza dallo
stesso generatore può risultare anche molto elevata.
13
Ad esempio il modulo Numbertheory di Mathematica.
32
Marcello Chiodi
Altri valori di λ e c utilizzati da alcune routine di pacchetti
matematico-statistici sono riportati nella tavola che segue (SanchezBruno, San Luis-Costas, 1995 riportano i risultati di alcuni test estensivi
condotti sulle sequenze di modulo 231-1, per verificarne l'utilità come
generatori di numeri casuali uniformi). Gli ultimi tre riportati nella tavola
sono fra quelli con modulo c primo che soddisfano una serie di test
statistici di casualità riportati da Downham, Roberts (1966). Molti
generatori interni di packages statistico-matematici sono basati su un
modulo di 231-1: si tratta di un numero primo di Mersenne ossia del tipo
c = 2p-1, con p primo; inoltre corrisponde al massimo numero intero
positivo rappresentabile con 4 byte, per i linguaggi che hanno il tipo di
variabile LONG INTEGER.
λ
c
5
31
7 = 16.807
2 -1 = 2.147.483.647
742.938.285
231-1
950.706.376
231-1
1.343.714.438
231-1
1.226.874.159
231-1
62.089.911
231-1
397.204.094
231-1
13
13 = 302.875.106.592.253
259-1
8192
67.101.323
8192
67.099.547
32768
16.775.723
Tavola 7 Alcuni valori di λ, c (con b = 0) utilizzati da alcuni packages o
comunque citati in letteratura.
3.1.3.
Combinazioni di generatori congruenziali lineari
Un risultato utile per combinare sequenze ottenute da generatori
differenti, e che a mio avviso risulta di intuitiva dimostrazione é il
seguente:
se U1e U2 sono due variabili uniformi standard indipendenti, la parte
frazionaria di U1+U2 é ancora una uniforme standard: infatti U1+U2 ha
una distribuzione triangolare nell’intervallo [0;2]; per ottenere la densità
di Y = frac(U1+U2) occorre sommare la densità relativa a u1+u2 = y alla
densità relativa a u1+u2 = 1+y: si otterrà comunque f(y) = 1; questo
Tecniche di Simulazione in Statistica.
33
risultato si estendere immediatamente alla parte frazionaria della somma
di un numero qualsiasi k di variabili uniformi standard indipendenti. Se
inoltre U1 e U2 sono numeri pseudo-casuali ricavati da generatori
congruenziali moltiplicativi di periodo massimo e con moduli c1 e c2
primi fra loro, si può dimostrare che la sequenza risultante
U = frac(U1+U2) ha periodo c1c2. (Wickman, Hill, 1982).
Un ’altra tecnica di combinazione di generatori di numeri casuali, che
in generale dovrebbe migliorare le caratteristiche della sequenza
risultante, consiste nel generare k-ple di numeri casuali Ui da un
generatore e poi rimescolarli (shuffling) secondo l’ordine fornito da una
k-pla di numeri casuali Vi ottenuti da un altro generatore indipendente. La
sequenza di numeri Vi serve solo per fornire una permutazione dei k
elementi Ui. Si veda nel capitolo successivo il paragrafo relativo alla
generazione di permutazioni casuali.
3.1.4.
Generatori congruenziali non lineari
Come verrà puntualizzato più avanti, i numeri pseudo-casuali
uniformi [Ui,Ui+1…,Ui+k-1] ottenuti mediante generatori congruenziali
lineari, possono presentare alcune caratteristiche poco desiderabili, anche
se a tutt'oggi rappresentano lo strumento più diffuso per la generazione di
numeri casuali mediante calcolatore. Tuttavia negli ultimi anni sono stati
proposti e studiati alcuni generatori congruenziali non lineari che,
sebbene ancora poco diffusi e poco impiegati in studi di simulazione
(almeno a mia conoscenza!), sono suscettibili di sviluppi promettenti,
perlomeno perchè rappresentano una classe di generatori più ampia di
quella dei generatori lineari. In generale lo sforzo computazionale sarà
superiore, ma va tenuto presente che negli odierni studi di simulazione
condotti con metodo Montecarlo il tempo di calcolo necessario per la
generazione di numeri casuali uniformi tende in assoluto a diventare
trascurabile, a causa della capacità di calcolo enormemente incrementata;
inoltre in termini relativi diminuisce comunque l'influenza del tempo
necessario per il calcolo degli Ui in rapporto al tempo complessivo
richiesto da una simulazione in campo statistico (Ripley, 1983).
In questa sezione faccio un breve cenno ad una importante classe di
generatori non lineari, i generatori congruenziali inversi (EichenauerHerrmann, 1992).
34
Marcello Chiodi
Tali generatori si basano sul concetto di inverso moltiplicativo modulo
c e su risultati di teoria dei numeri concernenti i polinomi primitivi per i
quali rimando senz'altro alla bibliografia.
Sia Ζn l'insieme degli interi minori di n, per qualsiasi intero n. Sia p≥5
un numero primo, e sia z un intero; si definisce inverso moltiplicativo di z
modulo p, quell'elemento unico z̄ di Ζp tale che:
z⋅ z̄ ≡1 (mod p)
se z≡/ 0 (mod p);
z̄ = 0
se z≡0 (mod p).
(col vincolo: z̄∈Ζp )
Una sequenza congruenziale inversa di elementi di Ζp è definita dalla
relazione recursiva (Eichenauer-Herrmann, 1992):
ai≡λāi-1+b (mod p)
Ui = ai/p
λ,b,a0 , numeri interi; p numero primo; λ≠0:
Un' altra tecnica è quella che permette di calcolare una sequenza
congruenziale inversa esplicita di elementi di Ζp, definita dalla relazione
recursiva:
ai≡ λ¯ ¯i+
Ui = ai/p
¯ ¯ b¯ ; i≥0
λ,b numeri interi; p numero primo; λ≠0:
Le proprietà teoriche di queste sequenze14 in funzione dei parametri
λ,b e p sono ricavate dalle proprietà dei polinomi primitivi e dei polinomi
di permutazione15 (Eichenauer-Herrmann, 1992, 1995; Lidl, Niederreiter,
1983), e non verranno trattate in queste pagine. Accenno solo qualche
aspetto relativo all'implementazione di tali algoritmi.
Per quanto riguarda la valutazione di z̄, necessaria per entrambi gli
algoritmi, si sa che z̄≡zp-2 (mod p). Questa proprietà non è però utile per
il calcolo, poichè p in generale sarà elevato, in modo da avere sequenze
con un periodo elevato, e quindi sarebbe impossibile calcolare zp-2 (mod
p) con la necessaria precisione. Si può comunque calcolare in modo
efficiente z̄, inverso moltiplicativo di z modulo p , per z≠0, mediante un
algoritmo simile a quello euclideo per il calcolo del massimo comun
denominatore, che non richiede alcuna operazione trascendente:
14
15
Ossia periodo delle sequenza, autocorrelazioni, proprietà distributive, etc.
Qui basta segnalare che i polinomi di permutazione rappresentano delle funzioni φ:Zp→Zp e
definiscono quindi una permutazione di interi.
Tecniche di Simulazione in Statistica.
35
Algoritmo 1. Calcolo di z̄, inverso moltiplicativo di z (mod p)
Se z ≡0 mod p
l'algoritmo termina con z̄ = 0;
Caso generale: Inizializzazione
m0 = p, m1 = z, b0 = 0, b1 = 1; i = 1
Corpo dell'algoritmo
Se mi = 1 allora si pone z̄≡bi (mod p) e l'algoritmo termina;
altrimenti si prosegue.
Si aggiorna la sequenza degli mi mediante la relazione:
mi+1≡mi-1 (mod mi) con mi+1∈Zmi;
si aggiorna la sequenza dei bi mediante la relazione:
bi+1 = bi-1-(mi-1-mi+1)bi/mi.
porre i = i+1 e tornare al passo b).
Il numero medio di passi necessari per determinare z̄ mediante questo
algoritmo è proporzionale a log p.
È immediato dalla definizione che: 1̄ = 1 e ¯p-1
¯ ¯ = p-1 per qualsiasi
numero primo p
La tavola seguente riporta, come esempio, la serie degli inversi
moltiplicativi modulo 13.
z
z̄
0
0
Tavola 8.
1
1
2
7
3
9
4
10
5
8
6
11
7
2
8
5
9
3
10
4
11
6
12
12
Tavola degli inversi moltiplicativi modulo 13 degli interi fra 0 e 12
Come si vede la sequenza degli inversi z̄ modulo 13 rappresenta una
permutazione degli elementi di Ζ13.
Nella tavola più avanti sono riportati gli inversi moltiplicativi modulo
231-1 dei primi 12 numeri naturali.
1
2
3
4
5
6
z
1
1073741824
1431655765
536870912
858993459
1789569706
z̄
7
8
9
10
11
12
z
z̄ 1840700269 268435456 1908874353 1503238553 1952257861 894784853
Tavola 9.
12
Tavola degli inversi moltiplicativi modulo 231-1 degli interi fra 1 e
36
Marcello Chiodi
I generatori non lineari non sono ancora molto diffusi e studiati, ma
ritengo che valga la pena di usarli, anche da un punto di vista
esclusivamente operativo, eventualmente in coppia con generatori lineari.
3.1.5.
Cenni su altri generatori
Fra le altre tecniche di generazione di numeri casuali uniformi, va
citata quella dello feedback shift register (Tausworthe, 1965) ed altre
tecniche collegate basate ancora su sistemi dinamici caotici. La base è
data dalla relazione recursiva:
k
ai = ∑ λj ai-j (mod c)
k > 0; i > k.
j=1
I λj (j = 1,2,…,k) sono dei coefficienti non tutti nulli; gli ai
(i = 1,2,…,k) sono dei valori iniziali non tutti nulli; c è in genere un
numero primo; il periodo della sequenza non potrà ovviamente essere
superiore a ck-1. In particolare se c = 2, ovviamente si ottiene una
sequenza di cifre binarie (0,1); accostando poi gruppi di s cifre binarie ai,
si ottengono le parti frazionarie di numeri Ui compresi fra 0 e 1
rappresentati in notazione binaria:
s
Ui = ∑ 2-j ais+j-s
i>0
j=1
I vantaggi di questa tecnica sono fondamentalmente due:
Non è necessario effettuare la standardizzazione per riportarsi
all'intervallo [0,1), perché si ottengono direttamente le cifre binarie a
destra della virgola che compongono il numero pseudo-casuale Ui;
•
Si può impiegare lo stesso generatore per ottenere numeri Ui con la
precisione desiderata: è sufficiente aumentare il numero s di cifre
binarie.
Con opportune modifiche si può anche ottenere direttamente un
numero pseudo-casuale con distribuzione uniforme discreta in un range
qualsiasi.
Altri generatori, quali quello di Mathematica, sono basati su algoritmi
simili (automi cellulari) che producono flussi di cifre binarie (Wolfram,
1986).
Particolare sviluppo hanno avuto negli ultimi anni anche le tecniche
per la generazione di sequenze parallele di numeri uniformi, utili per le
applicazioni di calcolo parallelo.
•
Tecniche di Simulazione in Statistica.
37
Nel caso dei generatori lineari formalmente l'estensione è semplice:
ai = Λ ai-1 (mod c),
in cui ai, ai-1 sono dei vettori di h elementi e Λ è una matrice di h×h
elementi. Ovviamente occorre poi standardizzare (ai/c).
3.1.6.
Altre tecniche di generazione di cifre casuali
Altre tecniche si basano sull’impiego di cifre di numeri trascendenti,
che hanno delle buone caratteristiche di casualità. Recentemente per
esempio Dodge (1996) ha riproposto l’uso delle cifre di π per simulare la
generazione di cifre casuali (da 0 a 9). Si sono infatti sviluppati negli
ultimi anni degli algoritmi e degli elaboratori che consentono il calcolo di
alcuni miliardi di cifre decimali di π, che rispettano molto bene diversi
test di casualità; non è però plausibile pensare all’uso generale di queste
tecniche perché molto onerose in termini di tempi di calcolo: si può solo
pensare di memorizzare un gran numero di cifre (alcuni miliardi) su
supporto fisso, ad esempio su CD-Rom; personalmente non la ritengo
una soluzione pratica, almeno allo stato attuale dello sviluppo dei
supporti di memoria di massa.
Per quanto riguarda invece le tavole di numeri casuali, sono strumenti
in parte superati: è vero che sono numeri casuali genuini, e in genere non
ottenuti mediante algoritmi, ma è anche vero che le tavole di numeri
casuali usate sono sempre le stesse, e la memorizzazione di cifre casuali
in un elaboratore sarebbe utile solo potendo immagazzinare un gran
numero di cifre (nell'ordine dei miliardi, data l'attuale dimensione delle
indagini basate su simulazioni). Inoltre vi è sempre il problema dei tempi
di accesso: è molto più veloce la generazione di numeri casuali mediante
una formula recursiva che non mediante accesso ad una memoria di
massa.
3.2.
Test di casualità
The authors of many contributions to the science of
random number generation were unaware that particular
methods they were advocating would prove to be
inadequate. Perhaps further research will show that even the
random number generators recommended here are
38
Marcello Chiodi
unsatisfactory; we hope this is not the case, but the history
of the subject warns us to be cautious.
Knuth (1981, pag.173)
Come già accennato prima, i numeri [Ui,Ui+1,…,Ui+m-1] costituiscono
una sequenza soddisfacente di numeri pseudo-casuali uniformi, se gli m
numeri Uj si comportano, per molti aspetti, in modo simile a una serie di
m veri numeri aleatori16 estratti da una distribuzione uniforme, qualsiasi
sia la lunghezza m della sequenza, e qualsiasi sia il numero iniziale Ui
della sequenza in esame.
Se é accertata questa analogia di comportamento, risulta irrilevante il
fatto che i numeri siano stati ottenuti da un processo fisico reale, o da un
algoritmo congruenziale, purché di ciclo molto elevato, per far sì che non
si lavori sempre con gli stessi numeri nel corso di esperimenti successivi.
Quanto detto ovviamente va riferito sempre all’uso che si vuole fare dei
numeri casuali: per quanto ben verificata possa essere una sequenza di
numeri casuali, difficilmente un giocatore accetterebbe di veder sostituita
al casinò una roulette vera con un calcolatore che generi numeri fra 0 e
36; anzi immagino che non riporrebbe molta fiducia nella casualità di
sequenze ottenute mediante una moltiplicazione ed il resto di una
divisione! In fondo quando si gioca a carte contro un computer, se non si
conosce la bontà dell’algoritmo impiegato dal videogame per simulare il
mescolamento delle carte, é come giocare con qualcuno che mischia le
carte, le guarda, e poi le distribuisce!
3.2.1.
Alcuni fra i test più comuni
Quali sono le analogie di comportamento fra sequenze di numeri
pseudo-casuali e determinazioni di v.a. reali che occorre accertare?
Ovviamente se ne potranno verificare, mediante opportuni test statistici,
solo alcune, poiché la casualità complessiva di una sequenza non può
essere verificata (direi quasi per definizione stessa di casualità!). Ciò che
potremo fare, ed é bene sottolinearlo ancora una volta, sarà soltanto la
verifica che la sequenza non si discosti da particolari aspetti della
casualità. Per le sequenze di numeri uniformi chiederemo, come minimo,
che i primi momenti empirici siano vicini a quelli teorici, che per una
uniforme standard sono dati da:
16
Ossia, m determinazioni indipendenti di una variabile casuale con distribuzione uniforme!
Tecniche di Simulazione in Statistica.
39
E(X) = 1/2 ; V(X) = 1/12; β1 = 0; β2 = 9/5.
Per valutare lo scostamento fra i momenti empirici e quelli teorici si
possono usare i risultati asintotici, in quanto la lunghezza m della
sequenza sarà sempre elevata. Sarà opportuno anche verificare che le
autocorrelazioni seriali, anche di lag molto elevati, risultino vicine a zero.
Occorrerà verificare che la distribuzione di frequenza empirica degli m
numeri generati non sia significativamente diversa da quella di una
distribuzione uniforme standard. Suddiviso l’intervallo[0;1) in k intervalli
Ch (h = 1,2…,k) di ampiezza uguale, si impiegherà un test X2 per la
verifica dell’ipotesi in oggetto:
2
X =
k
∑ (nj-m/k)2/(m/k)
j=1
essendo nj la frequenza empirica e m/k la frequenza teorica di ciascuna
classe Cj.
In alternativa, per valutare la discrepanza fra la distribuzione empirica
e quella teorica, si può usare il test Dmax di Kolmogorov-Smirnov sulla
sequenza non raggruppata in classi:
Dmax = max |F(x(i)) - i/m|
i
in cui F(x(i)) è la probabilità integrale relativa all'i-esima statistica
d'ordine, e quindi nel nostro caso di test di uniformità F(x(i)) = x(i), mentre
i/m è la corrispondente funzione di ripartizione empirica; questo test
richiede l’ordinamento degli m numeri, cosa che può risultare
computazionalmente onerosa, in termini di tempi di calcolo o di
fabbisogno di memoria, se m é grande.
Alcuni valori critici di Dmax sono riportati di seguito:
α
D
α max√n
0,900
0,5712
0,750
0,6764
0,500
0,8276
0,250
1,0192
0,100
1,2238
0,050
1,3581
0,010
1,6276
0,001
1,9495
Tavola 10. Valori critici asintotici di αDmax √n in corrispondenza di alcuni
valori di α. (valori che hanno una probabilità α di essere superati per effetto
del caso sotto H0).
Si faccia attenzione al fatto che per entrambi i test X2 e Dmax l'ipotesi
nulla H0 è che il campione provenga da una distribuzione uniforme
standard, contro l'ipotesi H1 che la distribuzione da cui ha origine il
40
Marcello Chiodi
campione sia non uniforme; l'indipendenza fra le estrazioni campionarie
è implicita sia in H0 che in H1 perchè è una delle assunzioni di base dei
test di bontà dell'adattamento X2 e Dmax e pertanto va accertata mediante
altri test.
E’ opportuno anche verificare che le coppie di numeri casuali (Ui,Ui+1)
(i = 1,3,5,…) si distribuiscano uniformemente sul quadrato di superficie
unitaria: si userà ancora il test X2, con k2 classi. In generale é utile
verificare che n-ple (Ui,Ui+1,…,Ui+n-1) (i = 1, n+1, 2n+1,…) di numeri
casuali si distribuiscano uniformemente nell’ipercubo unitario a n
dimensioni: il valore di k stavolta non dovrà essere troppo grande, per
evitare di avere troppe classi. In ogni caso, se é K = kn il numero totale di
classi ad una o più dimensioni, e m/n é il numero delle sequenze di
lunghezza n, occorre fare in modo che m/(nK), valore atteso della
frequenza di ciascuna classe (segmento, quadrato, o ipercubo che sia),
non sia troppo piccola, per potere approssimare la distribuzione di X2 con
quella di una v.a. χ2 con K-1 gradi di libertà.
Va sottolineato ancora che, se si effettua il test sulle m sequenze di
lunghezza n (n = 1,2,…), queste devono essere costituite da elementi tutti
diversi, per potere applicare il test X2 nel modo usuale (osservazioni
indipendenti). Per il test sulle coppie (n = 2), si prenderanno le coppie del
tipo (U1;U2), (U3;U4), (U5;U6), etc., e non le coppie, (U1;U2), (U2;U3),…,
perché in questo modo le osservazioni sarebbero dipendenti!
Si può comunque anche verificare che le coppie di numeri casuali
(Ui,Ui+r) (i = 1,2,…) si distribuiscano uniformemente sul quadrato di
superficie unitaria, per alcuni valori di r: questo serve per verificare che
non vi siano autocorrelazioni seriali indesiderate per lags superiori al
primo; in questo caso però il test X2 andrà modificato per la dipendenza
fra le osservazioni (Downam,Roberts, 1967).
S2 =
k
k
k
∑ ∑ (nhj-m/k2)2/(m/k2)- ∑ (nh.-m/k)2/(m/k)
h=1 j=1
i=1
in cui:
nhj è la frequenza empirica della classe (h,j), ossia il numero di coppie
(Ui, Ui+r) tali che Ui∈Ch ∩ Ui+r∈Cj;
nh. è la frequenza empirica marginale della classe h, ossia il numero di
singoli elementi Ui tali che Ui∈Ch; è stato dimostrato che, sotto l'ipotesi
nulla che i numeri provengano da estrazioni indipendenti da una
Tecniche di Simulazione in Statistica.
41
distribuzione uniforme, S2 si distribuisce asintoticamente come una v.c.
χ2 con k(k-1) gradi di libertà.
Numerosissimi altri test (test dei segni, il run test, test sulle
permutazioni) di casualità sono stati proposti, ma ometto di riportarli per
brevità, e perchè quelli già citati, insieme con quelli segnalati nei
paragrafi che seguono, sono sufficienti per dare dei giudizi empirici sul
comportamento di una sequenza di numeri pseudo-casuali.
3.2.2.
Esempio
Come esempio si consideri la generazione di 5000 numeri casuali
uniformi standardizzati. Per la costruzione dell’esempio abbiamo
impiegato una routine interna del package STATISTICA 5.0. In ogni
caso mediante questo esempio, basato su soli 5000 numeri e su un
numero limitatissimo di test, non saremmo mai in grado di dire qualcosa
di definitivo sul generatore nel suo complesso!
E' evidente che la dimensione campionaria scelta è molto piccola:
l'esempio ha solo un valore didattico, anche per dare un'idea delle
discrepanze che è plausibile osservare fra valori osservati e valori attesi.
Di questi n = 5000 numeri abbiamo calcolato la media e la varianza
s2 = 0,08391.
empiriche: M = 0,50335;
Il test su µ per un grande campione è:
kM = (M- µ)n1/2/s = (0,50335-0,5)×√(5000/0,08391) = 0,8178
Pertanto la sequenza ha una media empirica che non si discosta
significativamente da quella teorica (il test kM ha distribuzione asintotica
normale; dato il valore di n piuttosto grande, n = 5000, senz’altro si può
valutare la significatività del valore di kM mediante le tavole della curva
normale standardizzata).
Se ora vogliamo saggiare l’ipotesi concernente la forma della
distribuzione di provenienza, suddividiamo l’intervallo unitario in 10
sottointervalli di ampiezza uguale (ho scelto un numero di classi pari a 10
solo a scopo esemplificativo, per poter riportare semplicemente l’intera
tavola) ottenendo la seguente tavola delle frequenze empiriche e teoriche:
42
Marcello Chiodi
Classe
Frequenze
assolute
empiriche
Frequenze
percentuali
empiriche
Frequenze
percentuali
teoriche
Contributi a X2
(emp.-teo.)2/teo.
1
2
3
4
5
6
7
8
9
10
Totali
488
522
470
483
521
477
531
483
494
531
5000
9,76
10,44
9,40
9,66
10,42
9,54
10,62
9,66
9,88
10,62
100,00
10,00
10,00
10,00
10,00
10,00
10,00
10,00
10,00
10,00
10,00
100,00
0,288
0,968
1,800
0,578
0,882
1,058
1,922
0,578
0,072
1,922
X2 = 10,068
p = 0,345
Tavola 11. Confronto fra la distribuzione di frequenza empirica e quella teorica
di 5000 numeri pseudo-casuali uniformi suddivisi in 10 classi di ampiezza
uguale.
600
522
Numero di osservazioni
500
488
531
521
470
483
2
3
477
531
483
494
7
8
400
300
200
100
0
0
1
4
5
6
9
Figura 4
Distribuzione di frequenza empirica di 5000 numeri casuali
uniformi suddivisi in 10 classi di ampiezza uguale (a sinistra) e distribuzione
di frequenza empirica delle 2500 coppie distinte ricavate dalla stessa
sequenza suddivise in 100 classi di ampiezza uguale (a destra)
Anche questo test non fornisce un valore significativo (X2 = 10,068; 9
gradi di libertà; p = 0,345).
Possiamo effettuare un altro test X2 sulle 2500 coppie di numeri
casuali consecutivi, del tipo (Ui;Ui+1), i = 1,3,5,…,4999. L’ipotesi da
verificare è che queste coppie siano equidistribuite sul quadrato unitario;
Tecniche di Simulazione in Statistica.
43
pertanto suddividiamo l’intervallo di ciascuna delle due componenti in
dieci classi, ottenendo complessivamente 100 classi, di frequenza teorica
25 (25 = 2500/102). Non riporto per brevità la tavola con le 100
frequenze empiriche, ma soltanto l’istogramma bivariato nella figura
riportata più avanti.
Per questa distribuzione bivariata risulta: X2 = 106,56 (99 gradi di
libertà; p = 0,284). Tutti questi test risultano non significativi, per cui la
sequenza esaminata può considerarsi somigliante ad una sequenza
realmente casuale, almeno con riferimento agli aspetti della casualità
saggiati dai test effettuati.
Ho ripetuto l’esempio con una sequenza più lunga (100.000 numeri
uniformi) ottenuta dallo stesso generatore. I risultati sintetici sono i
seguenti:
M = 0,49929; s2 = 0,08285; kM = (M- µ)n1/2/s = 0,7780
Il test X2 condotto sulla distribuzione il 10 classi dei 100.000 valori
fornisce il risultato: X2 = 14,120; 9 gradi di libertà; p = 0,118).
Il test X2 sulle 50.000 coppie di numeri casuali consecutivi, suddivisi
in 100 classi di valori fornisce il risultato X2 = 129,1 (99 gradi di libertà;
p = 0.0237).
10006 9808 10102 10168 9997 10065 10063 10091 9896 9804
Numero di osservazioni
10000
0
0
1
2
3
4
5
6
7
8
9
Figura 5
Distribuzione di frequenza empirica di 100.000 numeri casuali
uniformi suddivisi in 10 classi di ampiezza uguale (a sinistra) e distribuzione
di frequenza empirica delle 50000 coppie distinte ricavate dalla stessa
sequenza suddivise in 100 classi di ampiezza uguale (a destra)
Un altro piccolo esempio è riportato nella tavola seguente, dove si
sono riportate la media M, la varianza S2, ed il valore standardizzato kM
44
Marcello Chiodi
per 5 sequenze, ciascuna composta da 200.000 numeri casuali uniformi
ottenuti dal generatore interno di Mathematica:
M(U)
0,499263
0,499438
0,501277
0,500110
0,499608
V(U)
0,0831022
0,0833444
0,0830842
0,0832867
0,0836175
kM
-1,1427
-0,8711
1,9818
0,1709
-0,6069
In appendice sono riportati altri esempi e test più estensivi relativi a
sequenze più lunghe di numeri pseudo-casuali uniformi.
3.2.3.
Test effettuati su sequenze di test di casualità
E’ però il caso di riflettere sul fatto che è possibile sottoporre una
sequenza di numeri pseudo-casuali a numerosissimi test (tali test in
generale saranno correlati perché eseguiti sugli stessi dati); va notato che
per la natura stessa dei test di significatività ci si dovrà aspettare che su m
sequenze di numeri veramente casuali, mediamente α· m di tali sequenze
falliscano un particolare test di casualità ad un livello α di significatività!
Pertanto considereremo insoddisfacente un algoritmo di generazione
di numeri pseudo-casuali che fornisca troppo spesso sequenze per le
quali uno o più test particolari sono significativi, ad un livello α di
significatività anche basso (Rizzi, 1992). Si può anche sottoporre ad un
test di casualità la sequenza di h valori di test di casualità ottenuti da h
sequenze di numeri casuali ciascuna di lunghezza m. Ad esempio se si
generano 100 sequenze di lunghezza 10000 mediante un particolare
generatore, su ciascuna si può calcolare l’indice X2 di bontà
dell’adattamento in k classi. I 100 valori di X2 possono essere poi
sottoposti ad un test globale (mediante il test di Kolmogorov) per
verificare l’ipotesi che provengano da una distribuzione χ2 con k-1 gradi
di libertà! Oppure si può effettuare un test per verificare l'uniformità della
distribuzione dei valori di Prob{X2≤χ2}; operando sulle trasformate di
probabilità per ciascun test, si possono mettere insieme anche risultati
relativi a test differenti. Questo tipo di test, effettuato su gruppi di
sequenze di numeri pseudo-casuali uniformi, serve per dare un giudizio
globale sulle caratteristiche di un generatore; i test effettuati su singole
sequenze servono invece per valutazioni locali su particolari sequenze. Si
Tecniche di Simulazione in Statistica.
45
riveda l'esempio riportato alla fine del paragrafo precedente: i cinque
valori di kM ottenuti possono considerarsi come un campione di cinque
osservazioni da una distribuzione normale standard. Nell'appendice sono
riportati esempi di test per alcuni generatori congruenziali.
3.2.4.
Numeri pseudo-casuali e numeri a scelta: un esempio
Come contro-esempio di numeri pseudo-casuali, riporto i risultati di
un esperimento condotto con i miei studenti (che non conoscevano
l'esatta finalità dell'esperimento). Ho chiesto a 78 studenti di scrivere su
un bigliettino, in forma anonima e senza consultarsi con i vicini, una cifra
a caso, ossia un numero intero compreso fra 0 e 9, come se fosse stata la
determinazione di una variabile casuale uniforme discreta. Raccolti i
bigliettini, è stato effettuato lo spoglio. Già dopo i primi bigliettini avevo
conferma di quanto pensavo: i numeri raccolti, contrariamente a ciò che
si può pensare a prima vista, sono ben lungi dal distribuirsi in modo
uniforme. In altri termini la discrepanza fra le frequenze relative è tale da
non poter mai accettare l'ipotesi che il campione di 78 cifre provenga da
un universo di cifre distribuite uniformemente. Questa mancanza di
uniformità invariabilmente si verifica con qualsiasi classe o gruppo di
studenti sottoposto per la prima volta all'esperimento. Molto
probabilmente il 7 e poi il 3 saranno le cifre più estratte.
Nell'esperimento fatto con i miei studenti, queste due cifre sono state
scritte quasi dalla metà della classe! Nella tavola (e nell'istogramma) è
riportata la distribuzione di frequenza di queste cifre casuali.
22
frequenza osservata
20
16
15
frequenza
teorica!
(f=7,8)
9
10
4
5
0
3
2
1
0
8
7
6
1
2
3
4
5
6
7
8
9
cifra
Figura 6
Istogramma della distribuzione di frequenza empirica di cifre
scelte da 78 studenti
46
Marcello Chiodi
Cifra
0
1
2
3
4
5
6
7
8
9
Totale
Tavola 12
Numero di
scelte
1
6
2
16
7
9
4
22
8
3
78
Frequenze
percentuali
empiriche
1,28
7,69
2,56
20,51
8,97
11,54
5,13
28,21
10,26
3,85
100,00
Frequenze
percentuali
teoriche
10
10
10
10
10
10
10
10
10
10
100
Contributi a X2
(emp.-teo.)2/teo.
5,928
0,415
4,313
8,621
0,082
0,185
1,851
25,851
0,005
2,954
2
X = 50,21
(χ20,001 = 27,88)
Distribuzione di frequenza di cifre scelte da 78 studenti.
La non uniformità è manifesta. L'esperimento mi è stato suggerito da
un collega scandinavo, che mi anticipava questo tipo di risultati. Perchè
questa tendenza bimodale assolutamente non uniforme con preferenza al
7 e al 3? La spiegazione ovviamente non è nè probabilistica nè statistica,
ma psicologica, dal momento che io ho chiesto dei numeri a caso, ma gli
studenti, nello scriverli, ovviamente li hanno scelti, consciamente o
inconsciamente. Dai processi individuali di scelta scaturiscono le
stranezze di questa distribuzione: forse i numeri alle estremità (0 e 9)
sono poco scelti perchè sembrano poco casuali in quanto dotati della
particolarità di essere proprio gli estremi; i numeri centrali possono pure
inconsciamente sembrare sistematici proprio perchè centrali; anche i
numeri pari sono considerati poco casuali. Il 7 e il 3, se si riflette, sono le
uniche cifre che non hanno proprietà notevoli; forse sono le uniche che,
ingenuamente, sembrano cifre a caso, nel senso che sono cifre qualsiasi,
senza particolari connotazioni aritmetiche! Quando gli studenti hanno
visto la distribuzione finale, hanno in buona parte confermato quanto
avevo intuito, ossia che le loro scelte casuali erano in realtà ragionate.
Questo esempio, oltre ad essere un gioco didatticamente utile che può
sorprendere chi non l'abbia personalmente sperimentato, mostra come
possa essere fallace una tecnica di estrazione di numeri casuali basata su
concetti soggettivi quali: "la prima cifra che viene in mente" o "un
numero a caso" o "un numero qualsiasi".
Tecniche di Simulazione in Statistica.
47
Mi chiedo cosa succederebbe effettuando l'esperimento con una classe
di studenti che abbia già letto questo paragrafo!
3.3.
Altri test di casualità
Un test molto importante, ma di notevole complessità computazionale,
e che qui mi limito a citare, é il cosiddetto test spettrale (Knuth 1981),
con il quale si verifica in realtà non la bontà di una particolare sequenza
anche molto lunga, ma le caratteristiche teoriche di un algoritmo, dato un
moltiplicatore λ ed un modulo c, per verificare la cosiddetta risoluzione
della distribuzione di sequenze di numeri consecutivi.
In effetti per numeri uniformi ottenuti da un generatore
congruenzialemoltiplicativo, è facile vedere che, dato l’algoritmo base:
Ui = ai/c,
ai = λai-1 (mod c),
si ha, ponendo τi = Int(λai-1/c):
ai = λai-1-τi c e quindi, dividendo ambo i membri per c:
Ui = λUi-1 - τi,
essendo sempre τi < λ, perchè ai-1/c < 1.
Pertanto se rappresentiamo sul piano cartesiano le coppie di numeri
casuali consecutivi (Ui-1,Ui), queste giacciono sempre su linee parallele di
inclinazione λ, ma esistono al più λ di tali rette, ossia i possibili valori di
τi.. Questo esempio mostra come sia importante la scelta sia di c che di λ.
Relazioni simili possono trovarsi per terne o n-ple di numeri
consecutivi (che giacciono in generale su iperpiani paralleli).
Un’algoritmo efficiente (codificato in FORTRAN) per il test spettrale è
fornito da Hopkins (1983).
Nelle tre figure che seguono sono illustrati i concetti esposti: le prime
due figure sono relative a coppie e a terne di numeri casuali generati
mediante un generatore di moltiplicatore λ = 5 e modulo c = 1024; si
osserva come nella rappresentazione bidimensionale i punti giacciono
solo su 5 rette, mentre nella rappresentazione tridimensionale i punti di
coordinate (Ui, Ui+1, Ui+2), giacciono solo su 25 rette.
48
Marcello Chiodi
1.0
0.9
0.8
0.7
Ui+1
0.6
U i+2
0.5
0.4
0.3
0.2
0.1
0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Ui
U i+1
Ui
Figura 7
Rappresentazione di 200 coppie di numeri casuali uniformi
consecutivi, ottenuti mediante un generatore congruenziale con: λ = 5,
b = 7, c = 1024, a0 = 1 (a sinistra) e di 998 terne di numeri casuali uniformi
consecutivi(a destra), ottenuti dallo stesso generatore
Aumentando la risoluzione grafica, qualsiasi generatore lineare
presenta la stessa caratteristica, per quanto grande possa essere il modulo
c: si vedano per esempio i due grafici della figura successiva, relativi ad
un generatore di buona qualità, con λ = 75 e c = 231-1, da cui ho generato
500.000 numeri uniformi: nella prima figura sono rappresentate 10.000
coppie di numeri consecutivi (soltanto 10.000, e non 500.000, perché il
grafico sarebbe apparso come una macchia nera); nella figura successiva
vi è il particolare della sequenza di tutte coppie (Ui,Ui+1), con
i = 1,2,…,499.999 per 0,5 < Ui < 0,5005. Le due figure si commentano
da sole!
Tecniche di Simulazione in Statistica.
49
Figura 8
Distribuzione di 10.000 coppie di numeri pseusocasuali
consecutivi Ui, Ui+1, (a sinistra) ottenuti mediante un generatore con λ = 75
e modulo c = 231-1. A destra particolare per 0,5 < Ui ≤0,5005 della
distribuzione di 500.000 di coppie di numeri pseusocasuali consecutivi Ui,
Ui-1, ottenuti mediante lo stesso generatore: λ = 75, c = 231-1.
Va fatta comunque qualche osservazione sui test di casualità di cui
poi non mi occuperò oltre, dando per scontato, nelle sezioni successive,
che si operi con generatori di numeri casuali uniformi di buona qualità
(verificata da noi o, meglio, riscontrata in letteratura); si é già detto che é
impossibile verificare la casualità complessiva di una sequenza. A mio
avviso si può parlare a rigore di verifica di casualità solo per sequenze
infinite di numeri, poiché nel finito non é possibile farlo; un esempio può
aiutare a chiarire quanto detto in modo meno criptico. Si considerino le
seguenti quattro sequenze di 12 numeri casuali compresi fra 1 e 6:
possono essere generati da un computer, o possono essere i risultati (veri
o ipotetici, non importa!) di 12 lanci di un dado:
a) 1,2,3,4,5,6,1,2,3,4,5,6
b) 1,1,2,2,6,6,5,5,4,4,3,3
c) 5,1,2,6,3,2,2,1,4,4,3,6
d) 1,2,3,1,1,1,1,5,5,5,5,5.
Si potrebbe ingenuamente dire che la sequenza a) é poco casuale (i
numeri sono ordinati e poi si ripetono), come la sequenza b) (coppie di
numeri uguali), sebbene entrambe presentino ciascuna cifra esattamente 2
50
Marcello Chiodi
volte: sembrerebbero equidistribuite! Analogamente potremmo dire che
la c), sebbene non equidistribuita, sembra più casuale, perché più
assortita, mentre la d) ha troppe cifre uguali.
Nulla di più falso! Le quattro sequenze hanno tutte la stessa
probabilità (a priori) di verificarsi secondo uno schema bernoulliano
(p = (1/6)12)! Anzi, in un esperimento bernoulliano di durata illimitata,
devo aspettarmi di trovare infinite di tali sequenze e di ciascuna delle 612
possibili sequenze di lunghezza 12!
Nessuna particolare sequenza finita può dirsi più o meno casuale; é
quella e basta!
Quel che importa é in effetti cercare di verificare le caratteristiche
dell’algoritmo di generazione di numeri pseudo-casuali (ed ora va
sottolineato il prefisso pseudo) nel suo complesso, per essere certi (o
quasi) che qualsiasi sottosequenza generata somigli il più possibile ad
una sequenza generata con meccanismi fisici. Con riferimento
all’esempio in oggetto, potremmo dire che:
un algoritmo di generazione di numeri casuali interi compresi fra 1 e 6
è soddisfacente se, data una qualsiasi sequenza anche molto lunga di
m numeri interi compresi fra 1 e 6, risulta difficile o addirittura
impossibile stabilire se tale sequenza é stata generata mediante un
algoritmo o mediante m veri lanci indipendenti di dadi bilanciati!
La definizione ora data, sebbene formalmente poco rigorosa, ha il
vantaggio, a mio avviso, di non fare confusione fra sequenze finite ed
infinite o fra variabili aleatorie e particolari realizzazioni di v.a. Ciò che
importa é se noi, operativamente, sapremmo capire se un certo risultato
proviene da un procedimento analitico o da un vero esperimento
aleatorio. Se sappiamo capirlo, allora quello non é un buon algoritmo!17
A tal proposito si veda anche il primo esercizio in appendice.
17
Presumibilmente, guardando le 4 sequenze di 12 numeri, verrebbe istintivo pensare che la a) e
la b) sono ottenibili mediante un algoritmo semplice!
Tecniche di Simulazione in Statistica.
4. Generazione di numeri
distribuzioni qualsiasi
51
pseudo-casuali
da
Sono già stati accennati alcuni semplici esempi di generazione di
numeri pseudo-casuali da una qualsiasi distribuzione. Nelle sezioni e nei
capitoli successivi espongo delle tecniche generali che consentono di
risolvere in modo opportuno classi piuttosto ampie (teoricamente tutte) di
problemi di generazione di numeri casuali, sia da distribuzioni discrete
che da distribuzioni continue di v.a. singole; il capitolo 7 è invece
dedicato alla generazione di vettori di numeri pseudo-casuali da
particolari distribuzioni multivariate.
Ho distinto sommariamente i metodi di generazione di numeri casuali
in quattro gruppi:
a) inversione della funzione di ripartizione;
b) trasformazioni di v.a.;
c) accettazione-rifiuto (e tecniche collegate);
d) rapporti di numeri uniformi.
In effetti tutte queste tecniche potrebbero rientrare nell’ambito delle
trasformazioni di v.a. in senso lato, o come funzioni di variabili aleatorie
a una o più componenti, o come distribuzioni condizionate di v.a., come
è il caso delle tecniche di accettazione-rifiuto.
E’ intuitivo che se si sa generare un numero casuale X da una certa
distribuzione con densità fX(x), data una sua trasformata Y definita da
Y = g(X), oppure da una serie di operazioni su X mediante qualche
algoritmo, Y avrà una particolare distribuzione con densità fY(y) che si
può ricavare da fX(· ) e dalle operazioni definite da g(· ).
Figura 9
Corrispondenza fra le masse di probabilità di X e di Y = g(X).
52
Marcello Chiodi
Il nostro problema in generale è inverso: vogliamo generare Y, da una
distribuzione di densità fY(y) e abbiamo a disposizione delle tecniche che
consentono di generare numeri X1, X2,…,Xk da diverse distribuzioni.
Quali trasformazioni Y = g(· ) occorre applicare, ed a quali Xi, per ottenere
numeri casuali Y dalla distribuzione desiderata? O, meglio ancora, qual è
l’algoritmo migliore? E' difficile dare una risposta generale a
quest’ultima domanda: va senz’altro anticipato che, di solito, gli
algoritmi più semplici sono computazionalmente meno efficienti;
viceversa risulta quasi sempre più veloce l’esecuzione di algoritmi di
generazione di numeri casuali basati su sequenze di trasformazioni molto
complesse e a prima vista astruse.
Sarà il caso, prima di passare alle sezioni successive, di fare un rapido
cenno ad alcuni noti teoremi di calcolo delle probabilità la cui
conoscenza nel seguito sarà data per scontata.
Se X è una v.a. dotata di densità fX(x) e Y = g(x) è una sua
trasformazione monotona, dotata di derivata prima, e per la quale esiste
quindi sempre la funzione inversa X = g-1(Y) = h(Y), la densità di Y è data
da:
fY(y) = fX[h(y)]
d h(y)
dy
La figura illustra la corrispondenza fra le aree (ossia fra le masse di
probabilità) di due v.a. X e Y, in cui Y è funzione monotona di X.
Per vettori di variabili aleatorie si ha l’ovvia estensione:
fY(y) = fX(h(y)) Jx,y
ove ora X e Y sono vettori di variabili casuali (con lo stesso numero di
componenti); g(· ) è un vettore di funzioni per la trasformazione X Æ Y e
h(· ) è il vettore delle corrispondenti trasformazioni inverse Y Æ X (attesa
l’esistenza di tali funzioni inverse) e Jx,y è lo Jacobiano della trasformata
inversa da Y a X, ossia di h(· ).
Per alcuni metodi, tipicamente per il metodo di accettazione rifiuto e
altre tecniche simili, si fa ricorso a distribuzioni condizionate, per le quali
basterà qui ricordare che, per due v.a. X e Y dotate di densità, si ha:
f(x,y) = f(x|y)f(y),
con le ovvie estensioni al caso di vettori di v.a.
Tecniche di Simulazione in Statistica.
53
E’ appena il caso di avvertire che tutti gli esempi che faremo sono in
buona parte dedicati alla generazione di numeri casuali da distribuzioni
standardizzate di variabili casuali. Infatti:
se si sa generare X da una qualsiasi distribuzione, si può generare
sempre una sua trasformata lineare Y = a+bX.
Pertanto se si sa per esempio generare un numero pseudo-casuale X da
una normale standardizzata, Y = µ+σX è un numero pseudo-casuale da
una N(µ;σ2).
Va ancora precisato che i numeri pseudo-casuali X da distribuzioni
non uniformi vengono sempre ricavati mediante trasformazioni di numeri
pseudo-casuali Ui provenienti da una distribuzione uniforme. Pertanto se
i numeri Ui sono numeri pseudo-casuali, ossia ottenuti mediante uno
degli algoritmi visti nel capitolo precedente, allora X è un numero
pseudo-casuale non uniforme; se invece Ui è un vero numero casuale,
anche solo teorico, allora X è un numero casuale non uniforme.
4.1.
Metodo dell’ inversione della funzione di ripartizione
Sia F(x) la funzione di ripartizione di una qualsiasi variabile aleatoria
X (é irrilevante che X sia continua, discreta, con supporto limitato o
illimitato, etc.) e sia G(· ) la sua funzione inversa, tale cioè che
G(F(x)) = x; G(· ) esiste sempre per la monotonicità di F(x).
1
1
1) Si genera U uniforme
nell'intervallo [0-1]
U
F(x)
F(x)
U+dU
U
F(x)
2) Si determina
X tale che:
F(X)=U
0
x
X
0
X X+dX
x
Figura 10. Generazione di numeri casuali mediante inversione della funzione
di ripartizione: a sinistra da una distribuzione discreta, a destra da una
distribuzione continua qualsiasi, dotata di densità.
54
Marcello Chiodi
Si consideri l’evento {X ≤ y} di probabilità F(y); questo é equivalente
all’evento: {F(X) ≤ F(y)}; pertanto:
Prob{X ≤ y} = Prob{F(X) ≤ F(y)}=F(y);
per cui, posto U = F(X), U é distribuito uniformemente in [0;1].❏
Oppure, considerando una v.a. U uniforme standard, si ha:
Prob{U ≤ F(x)} = F(x),
per cui applicando la funzione G(· ) si ha:
Prob{G(U) ≤ G(F(x))} = Prob{G(U) ≤ x} = F(x),
(G(U) si distribuisce come X)
Pertanto si può generare U da una uniforme standard e quindi calcolare
X = G(U), che sarà un numero casuale da una distribuzione con funzione
di ripartizione F(· ).B
Nella figura precedente è rappresentata anche una generica funzione
di ripartizione di una v.a. continua dotata di densità, insieme con la
corrispondenza fra gli eventi relativi agli intervalli di valori di X e quelli
relativi agli intervalli di valori di U.
L’applicabilità di questo metodo é universale, dato che non é neanche
richiesto che la distribuzione in questione sia dotata di densità. In effetti
però il metodo dell’inversione può risultare molto oneroso dal punto di
vista computazionale; in generale infatti, per ottenere una sequenza di m
numeri pseudo-casuali non uniformi, occorre, per i=1,2,…,m, generare
un numero pseudo-casuale uniforme Ui e quindi risolvere l’equazione, in
Xi:
F(Xi) = Ui
oppure, per le distribuzioni dotate di densità:
⌠ xi f(t)dt = Ui

⌡-∞
Se la funzione di ripartizione non é espressa in forma chiusa, e come
esempio basta la distribuzione normale, o se in ogni caso la sua funzione
inversa non è esplicitabile rispetto a x, occorrerà ricorrere a metodi
iterativi per risolvere l’equazione, e ad ogni passo occorrerà valutare un
Tecniche di Simulazione in Statistica.
55
integrale, in generale mediante formule di quadratura, o mediante
opportuni sviluppi in serie.
Ad esempio per una distribuzione Gamma di parametro di forma c = 2
e parametro di scala λ = 1, si ha:
f(x) = xe-x,
x≥0
F(x) = 1-(x+1) e-x,
x ≥ 0.
Sebbene la funzione di ripartizione risulti esprimibile in forma chiusa
(per questo particolare valore di c), l’ equazione in X:
U = 1-(X+1) e-X,
non risulta esplicitabile rispetto ad X; pertanto, generato U, occorrerà
procedere con metodi numerici per trovare X. Nella maggior parte dei
casi per le distribuzioni dotate di densità, il metodo di Newton, o metodi
da esso derivati, risulta di facile implementazione, data la peculiarità del
problema quali la monotonicità di F(· ). La formula di aggiornamento da
una soluzione approssimata X ad un'altra approssimazione X* col metodo
di Newton è:
X*= X -
F(X) - U
f(X)
Nell’esempio della figura, generato U = 0,65, si trova X = 2,2188.
Va notato che gli attuali pacchetti statistici o linguaggi dedicati,
consentono spesso di ottenere numeri casuali da qualsiasi distribuzione
mediante inversione, data la grande disponibilità di algoritmi efficienti
per il calcolo approssimato delle funzioni di ripartizione inverse di
diverse distribuzioni e comunque per la grande facilità di ottenere
soluzioni approssimate di equazioni e di tecniche di quadratura per
integrali definiti. Sicuramente si otterranno dei programmi di facilissima
implementazione, che potranno essere in generale poco efficienti ed
onerosi in termini di tempi di calcolo, almeno in confronto con altri
metodi di generazione specifici che saranno esposti più avanti. Questo é
per esempio il modo più semplice per generare numeri pseudo-casuali da
distribuzioni qualsiasi in un file dati del software STATISTICA 5.0. 18
18
Nel campo della generazione di numeri pseudo-casuali, come in altri campi applicativi, vale
sempre la regola generale che il tempo risparmiato nella fase di studio di un algoritmo e di
conseguente realizzazione di un programma, viene perso in termini di tempo di calcolo.
56
Marcello Chiodi
Anche Mathematica fornisce (in uno dei package) la funzione
Random[Tipo_Distribuzione], essendo Tipo_distribuzione un parametro che
identifica la particolare distribuzione non uniforme da cui si vogliono
generare numeri casuali: l'uso della routine è semplicissimo e di
immediata programmazione ma non necessariamente fornisce la routine
più veloce per la generazione di numeri pseudo-casuali all’interno di quel
package. Anche il package MAPLE V possiede analoghe routines:
stats(random)[tipo_distribuzione]: anche qui i tempi di calcolo possono
essere non ottimali.
Vediamo alcuni esempi di applicazione del metodo dell’inversione della
funzione di ripartizione, prima a distribuzioni di variabili discrete, poi a
distribuzioni di variabili continue.
1
F(x)
F(x)
U=0,65
f(x)=x e - x
F(x)=1-(x+1) e
0
x
-x
X=2,2188
Figura 11 Generazione di numeri casuali da una distribuzione Gamma di
parametri c = 2 e λ = 1, mediante inversione della funzione di ripartizione;
dato U, si determina X, tale che F(X) = U, con metodi numerici.
4.1.1.
Distribuzioni discrete qualsiasi: un esempio elementare
Si abbia per esempio la seguente distribuzione di una v.a. X discreta
che può assumere tre sole modalità:
Tecniche di Simulazione in Statistica.
xi
57
P(X=xi)=pi
F(xi)
0
0,1
0,1
1
0,7
0,8
2
0,2
1,0
Tavola 13 Distribuzione di una v.a. X discreta con tre modalità
Per generare una determinazione pseudo-casuale di X si procede come
segue:
a) si genera un numero casuale U da una distribuzione uniforme
standard.
b) se U≤0,1 si pone X = 0 altrimenti
c) se U≤0,8 si pone X = 1 altrimenti si pone X = 2
L’intervallo dei possibili valori di U è stato suddiviso in 3 segmenti
ciascuno di lunghezza pi. Spesso per variabili discrete delle più generali
questo é l’unico metodo disponibile per la generazione di numeri pseudocasuali, o comunque quello di immediata implementazione.
In generale se X é una variabile discreta che assume k modalità
distinte xi, (i = 1,2,…,k) con probabilità pi = Prob(X = xi), e funzione di
i
ripartizione Fi = F(xi) =
∑ pj, per generare numeri pseudo-casuali col
j=1
metodo dell’inversione della funzione di ripartizione, occorre:
•
•
generare un numero casuale U da una distribuzione uniforme
standard.
determinare i e quindi xi in modo che i sia il più piccolo indice
per il quale
U ≤ F(xi)
Si veda la figura riportata in precedenza: xi é l’ascissa dello scalino di
F(· ) corrispondente a U.
Le Fi possono essere calcolate dalle relazioni:
Fi = pi+ Fi-1,
i = 1,2,…,k;
Se per le pi esiste una relazione recursiva del tipo:
pi = pi-1Ai-1,
con F0 = 0.
58
Marcello Chiodi
sarà conveniente utilizzare quest’ultima per il calcolo delle probabilità
e della funzione di ripartizione (esempio: distribuzione binomiale e di
Poisson). Se comunque occorre generare una sequenza relativamente
lunga di numeri pseudo-casuali Xi dalla stessa distribuzione, converrà
preventivamente calcolare tutte le pi e le Fi in una fase di inizializzazione.
Se X é una v.a. discreta che può assumere infiniti valori converrà
adottare una strategia mista:
•
valutare esplicitamente tutte le probabilità fino a xk, con F(xk) = 1-ε ed
ε piccolo;
•
solo se risulta U > 1-ε si calcoleranno le probabilità che occorrono
caso per caso.
Un’alternativa é quella di effettuare comunque un troncamento
definitivo della distribuzione se ε é l’ordine di approssimazione
impiegato per la rappresentazione dei numeri e per la generazione dei
numeri U. Se ad esempio si sta lavorando con una precisione alla quinta
cifra decimale (ε = 0,00001), si potrà determinare k in modo che
F(xk-1)≤0,99999 e F(xk)>0,99999. Data l’approssimazione impiegata, non
sarebbe possibile determinare modalità di x superiori ad xk, poiché il
massimo valore possibile per U sarà 0,99999.
Ritornando comunque al metodo dell’inversione per distribuzioni con
un numero finito di modalità, la velocità dell’algoritmo é determinata
dalla strategia impiegata per determinare xi: l’algoritmo più semplice é
quello nel quale si inizia dalla prima modalità x1 e si procede poi
sequenzialmente finché non si verifica la condizione:
U ≤ F(xi).
Il numero massimo di confronti é ovviamente k-1, poiché se dopo k-1
confronti si ha: F(xk-1)≤U, allora é certamente F(xk-1) < U≤F(xk), perché
F(xk) = 1.
Si noti però come si potrebbe accelerare l’esecuzione dell’algoritmo
esposto per l’esempio relativo alla variabile discreta descritta nella tavola
precedente, se si effettuasse subito il test:
0,1 < U≤ 0,8
relativo alla modalità 1 (valore modale di X) o meglio se si
ridisponessero le modalità della tabella nel seguente modo:
Tecniche di Simulazione in Statistica.
59
i
xi
Hi =
p(xi)
∑ p(xj)
j=1
1
2
0
0,7
0,2
0,1
0,7
0,9
1,0
Tavola 14 Modalità della v.a. X riordinate secondo probabilità decrescenti.
e modificando il passo b dell’algoritmo in modo conseguente:
b) se U≤0,7
si pone X = 1 altrimenti
se U≤0,9
si pone X = 2 altrimenti si pone X = 0.
In effetti con questa variante l’intervallo dei possibili valori di U è
sempre suddiviso in 3 segmenti ciascuno di lunghezza pi, con
l’accorgimento di avere permutato i segmenti in modo tale che i più
lunghi precedano i più corti.
p1
p2
p3
p2
p3
p1
La permutazione operata delle modalità non altera la distribuzione
finale: le P(X=xi) sono sempre le stesse, sebbene evidentemente in
corrispondenza della stessa sequenza di valori di U corrispondano
sequenze diverse di X, secondo che si impieghi l’algoritmo con
ordinamento delle xi o quello con l’ordine naturale. Esempio:
0,234
U
1
X algoritmo senza ordinamento
1
X algoritmo con ordinamento
0,751
0,514
0,413
0,920
1
2
1
1
1
1
2
0
Tavola 15. Esempio di generazione di numeri casuali X da una distribuzione
discreta con e senza ordinamento delle probabilità.
Ciò non deve stupire: quello che importa é che le caratteristiche
teoriche delle due sequenze ricavate sono sempre quelle della stessa v.a.
X: il fatto che due variabili aleatorie abbiano la stessa distribuzione non
vuol certo dire che le loro determinazioni siano uguali!
60
Marcello Chiodi
Nella tabella che segue sono riportati i possibili valori ci della variabile
C che rappresenta il numero di confronti necessari per ottenere un
numero casuale insieme con le probabilità per i due casi: modalità non
ordinate secondo le pi oppure ordinate. E’ evidente il vantaggio in termini
di numero medio di confronti derivante dall’avere riordinato le modalità
xi:
P(C=ci)
P(C=ci)
Numero di
confronti ci
modalità non ordinate
modalità ordinate
1
0,1
0,7
2
0,9
0,3
E(C)
1.9
1.3
Tavola 16. Numero di confronti per i due algoritmi, e relative probabilità
Si può dimostrare che per una variabile discreta X che assume le
modalità 0,1,2,…,k il numero medio di confronti per l'algoritmo senza
ordinamento é E(C) = 1+E(X)-pk
Per generare numeri casuali da una variabile discreta che assume k
modalità distinte, con probabilità molto variabili, conviene quindi:
•
preliminarmente ordinare le xi secondo probabilità pi decrescenti,
ottenendo così un vettore di probabilità decrescenti p(i) ed il vettore
delle modalità x(i) conseguentemente riarrangiate
i
•
porre
Hi =
∑ p(j);
j=1
•
quindi effettuare nello stesso ordine i test del tipo:
U ≤ Hi
in modo tale da fare prima i confronti che con maggiore probabilità
daranno esito positivo.
Si osservi ancora, come esempio, la tavola che segue, in cui sono
riportate, nella parte sinistra, le modalità e le probabilità della
distribuzione binomiale di parametri n = 6 e p = 0,7. Nella parte destra
della stessa tavola sono riportate le modalità e le probabilità riordinate
secondo probabilità decrescenti; è evidente la maggiore efficienza in
quanto per esempio vi è ora una probabilità di circa il 32% che il primo
confronto dia subito esito positivo, generando la modalità x(1) = 4, mentre
la probabilità di esito positivo del primo confronto senza ordinare le
modalità sarebbe appena dello 0,07% per la modalità x1 = 0.
Tecniche di Simulazione in Statistica.
Distribuzione Binomiale
n = 6; p = 0,7
xi
p(x)
0
0,0007
1
0,0102
2
0,0595
3
0,1852
4
0,3241
5
0,3025
6
0,1176
61
i
1
2
3
4
5
6
7
Distribuzione riordinata secondo p(i)
decrescenti
x(i)
p(i)
4
0,3241
5
0,3025
3
0,1852
6
0,1176
2
0,0595
1
0,0102
0
0,0007
Tavola 17 Distribuzione di probabilità binomiale per n = 6 e p = 0,7: ordine
naturale (parte sinistra della tavola) e riordinamento delle modalità secondo
probabilità decrescenti (parte destra della tavola).
Il numero medio di confronti da effettuare per ottenere un singolo
numero casuale X è di 4,38 senza ordinamento delle pi, mentre scende a
2,31 se si adotta l'algoritmo con ordinamento delle pi.
,O ULRUGLQDPHQWR GHOOH PRGDOLWj q FRQYHQLHQWH VROR VH VL GHYRQR
PROWL QXPHUL SVHXGRFDVXDOL GDOOD VWHVVD GLVWULEX]LRQH H
IRUWH
HWHURJHQHLWj IUD OH SUREDELOLWj WHRULFKH
JHQHUDUH
SRUWD PDJJLRUL JXDGDJQL GL WHPSR SHU GLVWULEX]LRQL FRQ
Ovviamente per l'impiego del metodo con riordinamento delle
modalità occorre una fase di inizializzazione prima di iniziare a generare
una sequenza di numeri pseudo-casuali da una stesssa distribuzione.
Nella tavola della pagina seguente è abbozzato una schema di algoritmo
per la generazione di numeri casuali da generiche distribuzioni di
probabilità discrete. Evidentemente non sarà necessario implementarlo in
modo completo se si hanno a disposizione subroutines efficienti per la
risoluzione dell'equazione F(X) = U per funzioni F a scalino.
Altri algoritmi si basano su opportuni cammini di ricerca fra le varie
modalità, partendo dal valore modale per le distribuzioni per le quali esso
è ottenibile dai valori dei parametri senza necessità di calcolare tutte le k
probabilità pi (o eventualmente dal valore mediano se questo è più
comodo da trovare), e procedere poi verso l’alto o verso il basso secondo
il valore di U; ancora si può minimizzare il numero medio di confronti
mediante tecniche di ricerca ad albero. In effetti per la distribuzione
binomiale si sa che il valore modale si ha in corrispondenza di
x=Int(np+p), per cui si può anche evitare di calcolare preliminarmente
62
Marcello Chiodi
tutte le pi se si devono generare numeri casuali per valori di n e p che
variano fra le diverse chiamate dell'algoritmo (Fishman, 1979). Per la
distribuzione di Poisson di parametro λ Fishman (1976) propone
tecniche basate ssu una ricerca che parte dal valore modale h=Int(λ) e poi
continua con h-1, h+1,etc.
Nel capitolo dedicato al metodo di accettazione-rifiuto, vedremo come
é possibile generare numeri casuali da distribuzioni discrete in modo
efficiente quando invece le probabilità pi non sono troppo diverse fra loro
e senza dovere calcolare la funzione di ripartizione. Un altro metodo é
quello degli alias (Walker, 1977), collegato alle tecniche di accettazione
rifiuto, e che comunque non tratterò in queste pagine.
Tecniche di Simulazione in Statistica.
63
Algoritmo 2 Generazione di numeri casuali da distribuzioni
discrete qualsiasi, con ordinamento delle modalità secondo
probabilità decrescenti:
Inizializzazione
¾ i passi da a) a c) sono necessari solo per v.a. discrete con un
numero infinito di modalità;
¾ per v.a. discrete con un numero k finito di modalità si può passare
al passo d)
a) Fissare ε;
b) determinare il più piccolo valore di k per il quale 1-Fk ≤ε;
c) porre Fmax = Fk;
d) calcolare le pi (i = 1,2,…k);
e) ordinare le k probabilità pi in senso discendente, e riarrangiare
conseguentemente le xi ottenendo i due vettori x(i) e p(i)
f)
porre H0 = 0;
g) calcolare Hi = Hi-1+p(i) (i = 1,2,…,k) (Hk sarà uguale a Fk);
Corpo dell'algoritmo per la generazione di un singolo numero
h) Generare U da una distribuzione uniforme standard;
i)
Se U < 1-ε proseguire, altrimenti andare al passo m);
j)
porre i = 1;
k) se U < Hi, porre X = x(i) e tornare a h) per ottenere un altro
numero casuale; altrimenti proseguire;
l)
porre i = i+1 e tornare a k);
coda della distribuzione:
m) Porre i = k+1 e C = Fk;
n) calcolare pi e porre C = i+pi;
o) se U < C porre X = xi e tornare a h) per ottenere un altro
numero casuale; altrimenti proseguire;
p) porre i = i+1 e tornare a n).
4.1.2.
Inversione della funzione di ripartizione: indicatori di evento
e numeri pseudo-casuali binomiali
Per generare un indicatore di evento E, tale che:
P(E = 1) = p; P(E = 0) = 1-p,
si può procedere per inversione della funzione di ripartizione in modo
semplicissimo:
64
Marcello Chiodi
Generazione di un indicatore di evento
•
si genera un numero pseudo-casuale U da una
distribuzione uniforme standard;
se U ≤ 1-p allora E = 0, altrimenti E = 1.
•
Per simulare l'estrazione di un numero pseudo-casuale X da una
distribuzione binomiale di parametri p ed n si possono generare n
indicatori di evento Ei, (i=1,2,…,n) e quindi porre:
n
X=
∑ Ei.
i=1
La tecnica non è molto efficiente, a meno che n non sia piccolo, ma si
programma immediatamente, semplicemente richiamando la subroutine
che fornisce gli indicatori di evento. La tecnica può essere estesa
facilmente al caso non bernoulliano in cui le singole probabilità di
successo sono differenti.
4.1.3.
Distribuzione geometrica
Un altro esempio di applicazione del metodo dell’inversione della
funzione di ripartizione per generare numeri pseudo-casuali da
distribuzioni discrete è dato dalla distribuzione geometrica.
Come è noto questa distribuzione è definita per variabili intere x≥1 ed
ha probabilità:
px = P(X = x) = p(1-p)x-1,
x ≥ 1 , 1≥ p > 0,
e speranza matematica E(X) = 1/p, ed esprime la probabilità che in un
esperimento bernoulliano di probabilità elementare p, il primo successo
si presenti dopo x tentativi.
Per la funzione di ripartizione è facile ricavare un’ espressione
semplice:
F(x) =
x
x
i=1
i=1
∑ pi = p ∑ (1-p)i-1 = p[1-(1-p)x]/[1-(1-p)] = 1-(1-p)x
L’esplicitazione della sommatoria viene effettuata grazie alle note
relazioni che forniscono la somma dei primi termini di una progressione
geometrica. Si può ottenere F(x) con un ragionamento molto più
semplice, ragionando sulla genesi della distribuzione geometrica: la
Tecniche di Simulazione in Statistica.
65
probabilità che il primo successo si verifichi ad una prova compresa fra
la prima e la x-esima è complementare alla probabilità che in queste x
prove si abbiano sempre insuccessi, per cui: F(x) = 1-(1-p)x
Pertanto, indicato al solito con U un numero casuale da una
distribuzione uniforme standard, X deve essere determinato in modo che:
U = 1-(1-p)X e quindi:
X = log(1-U)/log(1-p).
Ovviamente occorrerà arrotondare X all’intero superiore.
Possiamo osservare che 1-U si distribuisce come U, proprietà che
useremo anche in seguito; pertanto l’algoritmo si può così sintetizzare:
Algoritmo 3
Generazione di numeri casuali da una
distribuzione geometrica
Inizializzazione
a) calcolare K = 1/log(1-p);
Corpo dell'algoritmo per la generazione di un singolo numero
b) generare U da una uniforme standard;
c) porre X = K log U;
d) arrotondare X all’intero superiore.
e) tornare a b) per la generazione di un nuovo X.
E' interessante da un punto di vista teorico notare che si potrebbe
ricorrere alla generazione di numeri uniformi Ui indipendenti,
arrestandosi la prima volta che se ne trova uno minore di p. Il numero X
delle Ui così generate è un numero aleatorio da una distribuzione
geometrica.
4.1.4.
Distribuzione discreta uniforme
E' già stato accennato che per generare numeri pseudo-casuali X da
una distribuzione discreta uniforme nell'intervallo [a;b], con a e b interi,
per cui P(X=x)=1/(b-a+1), si impiega la relazione:
X = a+Int[(b-a+1) U]
essendo U un numero casuale uniforme standard. Se si impiega un
generatore congruenziale lineare per generare i numeri uniformi U,
occorre utilizzare un modulo c grande rispetto a (b-a). Eventualmente si
possono impiegare tecniche per la generazione diretta di numeri interi
66
Marcello Chiodi
pseudo-casuali in un range assegnato, come accennato nel capitolo
precedente.
4.1.5.
Generazione di numeri casuali da una distribuzione
ipergeometrica
Supponiamo di volere generare numeri casuali X da una distribuzione
ipergeometrica di parametri:
• N, numero totale delle unità della popolazione;
• V, numero delle unità della popolazione in possesso di una certa
caratteristica A;
• n, ampiezza del campione estratto in blocco.
X è la variabile casuale le cui modalità sono date dal numero degli
elementi dotati della caratteristica A in un campione di n elementi estratti
in blocco (ossia senza reimmissione) dalla popolazione di N elementi.
Si possono calcolare esplicitamente tutte le px (x = 0,1,…,n) e quindi
generare X mediante inversione della funzione di ripartizione. Oppure, un
metodo più semplice, se n non è troppo grande, è quello di simulare
materialmente l’estrazione in blocco (ossia senza reimmissione) di n
indicatori di evento ottenendo poi X dalla loro somma. La particolarità
del problema risiede nel fatto che questi indicatori non sono indipendenti,
ma hanno probabilità che variano in funzione delle estrazioni precedenti.
Il primo indicatore E1 si genera per inversione della funzione di
ripartizione con una probabilità teorica p = V/N. Al passo successivo E2
va generato con probabilità teorica p = (V-1)/(N-1), se E1 = 1 (perchè è
diminuito il numero degli elementi disponibili nella popolazione); se
invece E1 = 0, E2 andrà generato con probabilità teorica p = V/(N-1); per i
passi successivi si proseguirà diminuendo sempre il denominatore di una
unità e diminuendo il numeratore di una unità ogni volta che Ei
(i = 1,2,…,n) è uguale ad uno (perchè diminuisce la probabilità di un
ulteriore successo).
Pertanto possiamo impostare il seguente algoritmo:
Tecniche di Simulazione in Statistica.
67
Algoritmo 4
Generazione di numeri casuali da una
distribuzione ipergeometrica di parametri N,V,n.
Inizializzazione
a)
porre M = 0;
b)
porre X = 0.
Corpo dell'algoritmo
c) Generare un indicatore di evento E con probabilità teorica
p = (V-X)/(N-M) (si genera U da una uniforme standard e si
pone E = 0 se U < 1-p altrimenti E = 1)
d) Aggiornare X = X+E;
e) Aggiornare M = M+1;
f)
Se M < n tornare al passo c) altrimenti arrestare l’algoritmo,
ottenendo X come risultato desiderato oppure tornare ad
a) per generare un’altro numero casuale X.
4.1.6.
Generazione di permutazioni casuali
Supponiamo di volere generare una permutazione a caso di n oggetti,
ad esempio per simulare il mescolamento di un mazzo di n carte, oppure
l'assegnazione casuale di n trattamenti sperimentali ad n unità. Occorre
scegliere, con uguale probabilità, una fra le n! permutazioni. Una
possibilità potrebbe essere quella di elencare in modo esplicito tutte le n!
permutazioni e poi generare a caso un numero fra 1 e n! Inutile dire che
se n è già maggiore di 6 o 7 il metodo non è di alcuna utilità, poiché
elencare e memorizzare ad esempio 8!(ossia 40320) permutazioni è
molto oneroso. Diversamente si potrebbero generare n numeri casuali
interi compresi fra 1 ed n; ogni volta occorrerà però controllare che
l’i-esimo numero generato non sia già stato ottenuto fra i primi i-1, nel
qual caso occorre scartarlo e ripetere l’operazione finché non si ottiene
un numero diverso dai precedenti. Evidentemente, se n è grande, per
generare gli ultimi numeri della permutazione occorrerà fare mediamente
molti scarti: approssimativamente occorre generare una media di n log n
numeri casuali, con un numero medio di confronti proporzionali a
n2 log n.
Il metodo più efficiente è invece quello della sostituzione, che si basa
sulla seguente considerazione: il primo elemento della permutazione può
essere scelto senza limitazioni fra gli n numeri compresi fra 1 ed n: sia N1
questo numero scelto a caso; il numero successivo va scelto a caso fra
n-1 numeri, ossia i primi n numeri interi, con l’esclusione di N1: sia N2
68
Marcello Chiodi
questo numero casuale; il terzo numero va scelto fra n-2 numeri, avendo
escluso i primi due, e così via. Si può impostare l’algoritmo seguente che
risponde allo scopo predetto:
Algoritmo 5
Generazione di una permutazione
casuale dei primi n numeri naturali:
Inizializzazione
a) Porre Ni = i,
per i = 1,2,…,n;
b) porre i = 1.
Corpo dell'algoritmo
c) porre k = n -i+1;
d) generare j intero uniforme fra 1 e k; basta calcolare:
j = int(k U)+1, essendo U generato da una uniforme
standard;
e) scambiare Nj con Nk ;
f)
porre i = i+1; se i = n terminare l’algoritmo, altrimenti
continuare col passo c);
Si noti come al passo e) lo scambio serva ad eliminare Nj dalla
successiva generazione di un elemento della permutazione, ed ogni volta
al passo d) si genera in un range sempre più piccolo.
Per esempio se si vuole generare una permutazione di 5 elementi,
possiamo riassumere le 4 iterazioni nella tabella che segue, in cui nelle
colonne Ni è indicato il valore corrente per ciascuna iterazione:
N1
N2
N3
N4
N5
valore di valore di j
U
generato
generato j=int(k U)+1
inizializzazione:
1
2
3
4
5
1
5
0,67
4
1
2
3
5
4
2
4
0,11
1
5
2
3
4
1
3
3
0,38
2
5
3
1
4
2
4
2
0,70
2
5
2
1
4
3
Tavola 18 Esempio di esecuzione dell'algoritmo dello scambio per la
generazione di una permutazione casuale dei primi 5 numeri naturali.
i
k
Tecniche di Simulazione in Statistica.
69
La permutazione casuale è dunque: (5,3,2,1,4); è irrilevante che si
prenda la permutazione in quest’ordine o nell’ordine di generazione, che
produrrebbe la permutazione (4,1,2,3,5).
Se si lavora in un ambiente software in cui è già disponibile una
routine per l'ordinamento indicizzato di un vettore, ossia se, dato in input
un vettore di elemento generico xi (i = 1,2,…,n), l'algoritmo di
ordinamento restituisce un vettore di indici ji (i = 1,2,…,n), tali che xji
rappresenta l'i-esimo valore nel vettore ordinato, allora è consigliabile un
altro algoritmo, utilizzato per esempio in un package di Mathematica. Si
potrà generare un vettore di n numeri pseudo-casuali uniformi
indipendenti Ui, e quindi prendere gli indici risultanti dalla routine di
ordinamento del vettore dei numeri Ui come permutazione casuale dei
primi n numeri naturali! La logica è la stessa di quella dell'algoritmo
dello scambio. La tecnica può servire anche per rimescolare
periodicamente gli elementi di una sequenza di numeri casuali ottenuta
con un altro generatore, come accennato nel capitolo precedente.
Per questo tipo di problemi, come per la generazione di campioni in
blocco che si vedrà nel capitolo 9, occorre però riflettere sul fatto che un
generatore congruenziale può fornire al massimo c sequenze distinte di
numeri, mentre il numero di permutazioni di n elementi o di campioni in
blocco cresce esponenzialmente con n; ad esempio 1000!≅102567,6, per
cui la cardinalità del problema (Gentle,1998) sarebbe ben superiore a
quella di qualsiasi generatore disponibile: soltanto una minima frazione
delle 1000! permutazioni sarebbero effettivamente ottenibili, lavorando
con un unico generatore.
4.2.
Inversione della funzione di ripartizione per variabili
continue
Per quanto detto prima, é raro ottenere relazioni semplici ed esplicite
nell’applicazione del metodo dell’inversione della funzione di
ripartizione per generare variabili continue; tratto qui solo alcune
distribuzioni che risultano basilari per altri problemi di generazione di
numeri casuali per le quali l'inversione della funzione di ripartizone
conduce a formule molto semplici, ossia se F(x) è esprimibile in forma
chiusa e se l'equazione F(X)=U risulta esplicitabile rispetto a X.
70
Marcello Chiodi
4.2.1.
Distribuzione esponenziale
Si consideri come primo esempio una distribuzione esponenziale di
parametro λ, con funzione di ripartizione F(x) e densità f(x) date da:
F(x) = 1-e-λx;
f(x) = λe-λx
x≥0
Essa esprime, come è noto, la distribuzione di probabilità dei tempi di
attesa fra due arrivi consecutivi (o per il primo arrivo) in un processo di
arrivi di Poisson ad incrementi indipendenti; risulta pertanto utile per la
simulazione di componenti di modelli relativi a problemi di code, come
quelli accennati nell’ introduzione.
Per generare un numero aleatorio X da tale distribuzione col metodo
dell’inversione della funzione di ripartizione, occorre generare un
numero casuale U da una uniforme standard, e quindi risolvere rispetto
ad X l’equazione:
U = 1-e-λX.
Pertanto si ha:
e-λX = 1-U,
e quindi:
X = -log(1-U)/λ.
Considerando che 1-U si distribuisce come U, si può considerare la
relazione definitiva:
Generazione di X da una esponenziale di parametro λ
X = -(log U)/λ
4.2.2.
Distribuzione χ2 con 2 gradi di libertà
Il metodo descritto per ricavare un numero casuale esponenziale va
tenuto presente, anche perché la distribuzione esponenziale costituisce la
base per la generazione di altri particolari numeri casuali.
In particolare se λ=1/2, é noto che si ottiene una v.c. χ2con 2 gradi di
libertà, per cui per ottenere un numero casuale Χ da tale distribuzione
occorre generare al solito U da una uniforme standard e quindi calcolare:
Tecniche di Simulazione in Statistica.
71
Generazione di X da una χ2 con 2 gradi di libertà
X = - 2 log U
4.2.3.
Distribuzione di Laplace (esponenziale doppia)
Se invece vogliamo generare numeri casuali da una esponenziale
doppia, ossia da una distribuzione di Laplace standardizzata, di densità:
f(x) = e-|x|/2
in cui x può assumere qualsiasi determinazione reale, potremmo
generare X da una distribuzione esponenziale di parametro λ=1, con il
metodo prima descritto, poi generare un altro numero casuale uniforme V
e cambiare di segno X se risulta V < 0,5. Per evitare la generazione di un
altro numero casuale uniforme potremmo ricorrere al seguente
espediente, schematizzato nell'algoritmo che segue:
Algoritmo 6
Generazione di numeri casuali da una
distribuzione di Laplace standardizzata (esponenziale
doppia)
generare V da una uniforme standard
•
se V < 0,5, porre U = 2V e S = -1 altrimenti porre U = 2(1-V) e
•
S = 1. (U ed S risulteranno indipendenti)
Calcolare X = S log U
•
Un’ implementazione in Mathematica:
❏ UnifVect=Compile[{n},Table[Random[ ],{n}]]
la funzione UnifVect genera un vettore di n numeri casuali uniformi;
❏ LaplaceVect[n_]:=
Module[{s,x},x=UnifVect[n];s=Sign[x-.5];
Return[-s Log[2. x-.5*(s+1.)]]]
la funzione LaplaceVect genera un vettore di n numeri casuali da una
distribuzione di Laplace standardizzata;
La chiave dell’accorgimento sta nello sfruttare U sia per la
generazione di una variabile uniforme che per la generazione di un segno
casuale; si dimostra che le variabili casuali U ed S sono indipendenti.
Se si vogliono poi ottenere determinazioni pseudo-casuali Z da una
distribuzione di Laplace qualsiasi con parametro di posizione µ e
parametro di scala σ1, di densità:
72
Marcello Chiodi
1 -|z-µ|/σ1
e
,
con E(Z) = µ e E(|Z-µ|) = σ1,
2σ1
basterà generare una determinazione standardizzata X, con l'algoritmo
prima esposto, e quindi porre:
f(z)=
Z = µ+σ1X.
4.2.4.
Distribuzione di Cauchy
Si consideri la generazione di numeri casuali da una distribuzione di
Cauchy di densità:
1
π (1+x2)
la cui funzione di ripartizione é data da:
f(x) =
F(x) = 1/2+arctg(x)/π.
La distribuzione di Cauchy da un punto di vista teorico é importante
poiché per essa, essendo a varianza non finita, non vale il teorema limite
centrale; come è noto è la distribuzione del rapporto di due v.a. normali
standardizzate indipendenti.
Per generare X da tale distribuzione, essendo sempre U un numero
casuale da una distribuzione uniforme standard, occorre risolvere
l’equazione in X:
U = 1/2+(arctg X)/π,
da cui:
arctg(X) = π(U-1/2), ed infine: X = tg[π(U-1/2)].
Non è detto che il metodo dell’inversione della funzione di
ripartizione, qualora conduca ad espressioni esplicite per X, conduca
sempre all’algoritmo più veloce. Per la distribuzione esponenziale e per
la distribuzione di Cauchy esistono infatti algoritmi, fondati su altri
metodi, più veloci, sebbene meno intuitivi, per ridurre al minimo la
necessità di valutare funzioni trascendenti. Per la distribuzione di Cauchy
si vedrà più avanti un metodo basato sul rapporto di uniformi, meno
intuitivo di quello visto prima, ma computazionalmente più efficiente.
Tecniche di Simulazione in Statistica.
4.2.5.
73
Distribuzione di Weibull
Come altro esempio si consideri la generazione di numeri casuali da
una distribuzione di Weibull di densità:
α
f(x) = λα xα−1 e-λx ,
la cui funzione di ripartizione é data da:
x≥0
α
F(x) = 1- e-λx ,
x≥0.
Tale distribuzione, anche con diverse parametrizzazioni, è spesso
impiegata nelle applicazioni concernenti problemi di affidabilità e
problemi di durata di materiali sottoposti a sforzo; λ è un parametro di
scala e α è un parametro di forma.
2.0
α=5
1.5
f(x)
α=0,5
f(x)= α x
1.0
α
exp(-x )
α=2
α=1
0.5
0.0
α−1
0.5
1.0
1.5
2.0
x
Figura 12 Densità di distribuzioni Weibull al variare del parametro di forma
α e con parametro di scala λ=1.
Per generare X da tale distribuzione, è sufficiente osservare che Y = Xα
ha una distribuzione esponenziale di parametro λ, per cui è sufficiente
generare Y da tale distribuzione e poi ottenere X mediante la
trasformazione inversa X = Y1/α, per cui in definitiva:
X = ((-logU)/λ) 1/α,
è un numero casuale da una distribuzione di Weibull, essendo al solito
U un numero casuale generato da una distribuzione uniforme standard.
74
Marcello Chiodi
4.2.6.
Altre distribuzioni elementari
Un esempio molto elementare servirà a chiarire il fatto, che
sfrutteremo nelle sezioni successive, che spesso una trasformazione di
v.a. o una simulazione di un qualche processo generatore di v.a. produce
risultati soddisfacenti, sebbene in modo meno immediato rispetto al
metodo dell'inversione della funzione di ripartizione.
Si consideri il problema di generare un numero aleatorio X da una
distribuzione con funzione di ripartizione:
F(x) = x2,
e densità: f(x) = 2x,
0 ≤x ≤1
(ramo crescente di una distribuzione triangolare).
Si genera X, per inversione di F(· ), mediante la relazione:
X= U
Si può procedere però in modo diverso:
Date due v.a. uniformi V1,V2 standard indipendenti si vuole
determinare la distribuzione di probabilità di Y = max(V1 ,V2).
Ricordo che se Z1, Z2, …,Zn sono n variabili aleatorie indipendenti con
uguale distribuzione, indicato con Y il loro massimo si ha19:
FY(y) = [FZ(y)]n
Nel nostro caso otteniamo:
FV(v) = v, (V1 e V2 sono distribuiti uniformemente) e quindi:
FY(y) = FV(y) FV(y) = y2
Per cui Y = max(V1,V2) è distribuito come X dell’esempio precedente.
Per generarlo possiamo generare due numeri uniformi e quindi prendere
il maggiore. L’algoritmo è leggermente più lungo di quello diretto, ma
evita la valutazione di una radice quadrata! In particolare è questo il
metodo base che si impiega tutte le volte che occorre generare un numero
aleatorio con densità lineare. Il risultato può essere generalizzato al caso
del massimo di k numeri uniformi: se k però non è piccolo (k > 4)
converrà operare generando per inversione dalla distribuzione con
funzione di ripartizione xk.
19
Questo risultato, insieme ad altri collegati, viene impiegato per la determinazione della
distribuzione del valore massimo in un campione casuale semplice.
Tecniche di Simulazione in Statistica.
4.2.7.
75
Generazione di punti uniformi all'interno di parallelogrammi
Supponiamo di volere generare punti con distribuzione uniforme
all'interno di un parallelogramma del tipo indicato in figura:
a+b
y
+b
y=a
b
x
y=b
x
a
0
x x+dx
1
Figura 13. Densità uniforme entro un parallelogramma.
La regione C dei punti all'interno del parallelogramma è costituita dai
punti di coordinate x,y tali che:
0≤ x ≤1 , b x ≤ y ≤ b x+a;
•
•
Pertanto per generare punti casuali in C si può:
generare l'ascissa X con un numero pseudo-casuale uniforme
standard,
generare l'ordinata Y mediante un numero pseudo-casuale uniforme
nell'intervallo [bX,bX+a]. Se X e V sono numeri pseudo-casuali
uniformi standard, si otterrà Y con la trasformazione lineare:
Y = a V+b X.
4.2.8.
Generazione di punti uniformi in particolari regioni
triangolari
Supponiamo di volere generare punti con distribuzione uniforme
all'interno di un triangolo del tipo indicato in figura, che per semplicità
supponiamo circoscritto in un rettangolo.
76
Marcello Chiodi
a
a
b
y
y=
ax
y=b
0
x
x x+dx
1
Figura 14. Densità uniforme in una regione triangolare.
La regione C dei punti all'interno del triangolo è costituita dai punti di
coordinate x,y tali che:
oppure:
•
•
0≤x≤1 , b ≤y/x≤ a;
0≤x≤1 , b x ≤ y ≤ a x.
Pertanto per generare punti casuali in C si può
generare l'ascissa X con un numero pseudo-casuale uniforme
standard,
l'ordinata Y con un numero pseudo-casuale uniforme nell'intervallo
[bX, aX]. Se X e V sono numeri pseudo-casuali uniformi standard, si
otterrà Y con la trasformazione lineare: Y = X[(a-b)V+b].
Tecniche di Simulazione in Statistica.
77
5. Metodi basati su trasformazioni di variabili
aleatorie
I metodi di generazione di numeri casuali basati su trasformazioni di
variabili aleatorie si fondano sui noti teoremi del calcolo delle probabilità
per ottenere la distribuzione di una funzione di variabili aleatorie, come
già accennato nell'introduzione del capitolo precedente.
Se si sa che X = g(Y), e si sanno generare numeri casuali dalla
distribuzione di Y, con un qualsiasi metodo, per ottenere un numero
casuale dalla distribuzione di X basta generare un numero y e poi
calcolare x = g(y). In questo contesto é irrilevante che X e Y siano
variabili continue o discrete o che siano vettori di v.a.(nel qual caso g(· )
potrebbe essere un vettore di funzioni).
Ad esempio se si sanno generare numeri pseudo-casuali da
distribuzioni χ2 con ν gradi di libertà, se X1 é un numero pseudo-casuale
generato da una χ2 con ν1 gradi di libertà e X2 é un numero pseudocasuale indipendente dal precedente generato da una χ2 con ν2 gradi di
libertà, F = X1ν2/(X2 ν1) è un numero pseudo-casuale generato da una
distribuzione F con ν1 e ν2 gradi di libertà.20
5.1.
Distribuzione normale: formula di Box-Muller
Il primo esempio é forse uno dei più classici nell’ambito della
generazione di numeri casuali, ed é la formula di Box-Muller per
generare coppie di numeri pseudo-casuali normali standardizzati
indipendenti.
Piuttosto che esporre prima la formula, e poi dimostrarne la validità
con procedimenti più o meno complessi, preferisco qui fornire una
dimostrazione, che ricalca da vicino quella originaria di Box-Muller
(1958), fondata su proprietà geometriche della distribuzione normale
bivariata, che fa scaturire la formula in modo naturale.
20
Non è ovviamente detto che sia questo il modo più conveniente per generare determinazioni
pseudo-casuali dalla distribuzione F di Snedecor!
78
Marcello Chiodi
ρ=
p √χ 2
P ( X p ;Y p )
f( θp )=1/(2 π)
Y
θp
0
1
2
3
4
X
Figura 15 Generazione di coppie di numeri casuali indipendenti da una
distribuzione normale standardizzata mediante la formula di Box-Muller.
Supponiamo di voler generare un punto casuale P, di coordinate XP e
YP, da una normale bivariata standardizzata.
Si rappresenti P in un sistema di riferimento in coordinate polari ed in
questo sistema siano ρP il modulo di P e θP l’anomalia di P (vedere
figura).
Invece di generare XP e YP, generiamo ρP e θP: ρP e θP risultano
ancora indipendenti per simmetria radiale della distribuzione normale
bivariata a componenti indipendenti. Sappiamo che ρP2 = XP2+YP2, per
cui ρP é la radice quadrata di una v.a. χ2 con due gradi di libertà, che
sappiamo generare, perché é una v.a. esponenziale di parametro λ = 1/2,
per cui genereremo ρP mediante la relazione:
ρp = χ2² = -2 log U
essendo U come sempre un numero casuale da una distribuzione
uniforme standard.
Per la generazione dell’anomalia θP, é sufficiente constatare che, per
variabili normali standardizzate indipendenti, la densità dei punti lungo
una circonferenza con centro nell'origine é costante, per cui θP é
distribuito uniformemente nell’intervallo [0, 2π). Pertanto per generare
θP si ricorre all’ elementare trasformazione lineare:
Tecniche di Simulazione in Statistica.
79
θP = 2πV,
essendo V un numero casuale indipendente da U estratto da una
uniforme standard.
Ottenute quindi due determinazioni casuali di ρP e θP, per ottenere i
due numeri casuali XP e YP, occorre ritrasformare in coordinate
cartesiane:
XP = ρP cos θP
YP = ρP sen θP
Indicando ora semplicemente con X e Y le coordinate cartesiane, si
ottiene infine la formula di Box-Muller:
formula di Box-Muller per generare X,Y da una normale standard
bivariata a componenti indipendenti
X = -2 log U cos(2πV)
Y = -2 log U sen(2πV)
essendo U e V due numeri casuali indipendenti generati da una
uniforme standard.
La peculiarità di tale formula, che la rende a prima vista sorprendente,
é che si ottengono coppie di numeri casuali normali indipendenti.
Sebbene questo non sia il metodo più veloce per generare numeri casuali
normali, non conosco formule di tale compattezza per la generazione di
singoli numeri casuali normali. Di seguito sono riportate alcune coppie di
valori di U,V e le corrispondenti coppie X,Y ottenute mediante la formula
di Box-Muller.
U
0,989
0,446
0,119
0,005
0,009
0,378
V
0,166
0,663
0,451
0,352
0,057
0,608
X
0,076
-0,661
-1,965
-1,961
2,877
-1,088
Y
0,131
-1,086
0,628
2,625
1,078
-0,874
Una dimostrazione della validità della formula di Box-Muller, più
complessa e più lunga di quella fornita, si ottiene applicando i noti
teoremi del calcolo delle probabilità per le trasformazioni di variabili
aleatorie alla trasformazione dalle v.a. (U,V) alle variabili (X,Y). Si
80
Marcello Chiodi
calcola prima lo Jacobiano di questa trasformazione; oppure, più
comodamente, si calcola l'inverso dello Jacobiano della trasformazione
diretta da (X,Y) alle variabili (U,V); risulta comunque comodo
considerare Y/X = tan(2πV) e X2+Y2 = -2 log U. Si noti come se si effettua
il rapporto Y/X, si deve ottenere un numero casuale distribuito secondo
una Cauchy, che é infatti ottenibile come rapporto fra due v.a. normali
standard indipendenti. Si otterrà una formula del tutto simile a quella
ottenuta per via diretta per inversione della funzione di ripartizione della
distribuzione di Cauchy.
5.1.1.
Trasformazione polare di Marsaglia
Un miglioramento di tale tecnica dovuto a Marsaglia (1964) è il
seguente:
siano T e W due numeri casuali indipendenti generati da una uniforme
standard e le loro trasformate lineari:
U = 2· T-1,
V = 2· W-1,
così che U e V sono uniformi (e indipendenti) nell’intervallo [-1;1).
Posto Z = U2+V2, allora, condizionatamente a Z≤1, Z si distribuisce
uniformemente e indipendentemente da U e quindi:
Trasformazione polare di Marsaglia per generare X,Y normali standard
X = -2 log(Z)/Z U
Y = -2 log(Z)/Z V
condizionatamente a Z≤1 X e Y sono due numeri casuali normali
standardizzati indipendenti.
Il metodo è simile al precedente e si può dimostrare con argomenti
analoghi, con la variante che viene prima generato un punto in un
quadrato, e si procede con la trasformazione solo se tale punto risulta
interno al cerchio trigonometrico. In pratica alle due funzioni
trigonometriche cos(· ) e sen(· ) della formula originaria di Box-Muller
vengono sostituite le quantità U/ Z e V/ Z con la stessa distribuzione.
Ometto la dimostrazione per brevità, ma si pensi comunque al fatto che il
rapporto U/V ha una distribuzione di Cauchy,…
Tecniche di Simulazione in Statistica.
81
E’ evidente che la tecnica di Marsaglia comporti un numero inferiore
di calcoli, o quanto meno calcoli di complessità inferiore. L’efficienza
del metodo è data da:
P(U2+V2≤1) = π/4 = 0,7854
Questo è un esempio di metodo fondato su trasformazioni di v.a. e su
distribuzioni condizionate: l’espediente del condizionamento ad un
particolare evento è molto usato nelle tecniche di generazione di numeri
casuali, e consente spesso di ottenere algoritmi veloci a prezzo del
condizionamento ad un certo evento.
Nel caso appena visto l’evento condizionante è U2+V2≤1, la cui
probabilità è di circa 0,7854: ciò significa che in media il 78,5% circa
delle volte i numeri casuali U e V verranno utilizzati per la
trasformazione in X e Y; nell'altro 21,5% delle volte (sempre in media!) i
numeri U e V verranno scartati ed occorrerà generarne un’altra coppia
finche non si realizza la condizione U2+V2≤1. L’efficienza teorica del
metodo è data proprio dalla probabilità di accettazione.
5.1.2.
Distribuzione di Cauchy
Similmente si può dimostrare che: se T e W sono due v.a. uniformi e
indipendenti nell’intervallo [-1;1), allora posto Z = T2+W2:
condizionatamente a Z≤1, T/W ha una distribuzione di Cauchy.
Questa è l’idea base del metodo detto del rapporto di uniformi, che
viene poi generalizzato per variabili con distribuzione qualsiasi e di cui
farò cenno nel prossimo capitolo.
5.2.
Generazione di numeri pseudo-casuali da distribuzioni
Gamma e Beta
Metodi elementari per generare numeri aleatori da distribuzioni
classiche sono dati dalle relazioni che legano alcune v.a. Il ruolo delle
distribuzioni Gamma e Beta è centrale, perchè da esse è possibile
ricavare, per trasformazioni elementari, numerosissime v.a. molto usate
in statistica21: quasi tutti i software statistici hanno routines efficienti per
la generazione di numeri pseudo-casuali Gamma e Beta.
21
Si veda D’Ambra (1996), per uno schema molto più ampio sulle relazioni fra diverse v.a.
82
Marcello Chiodi
* X∼ Esponenziale(λ)
* Y∼ Weibull(α,λ)
* X∼ Chi-quadro(ν)
X∼ Erlangiana di
*
indice c
c=1
c = 1; Y=X1/α
c = ν/2; λ = 1/2
c intero
Xi∼Gamma(ci,λi)
Z = (X1+X2)
con λ1 = λ2 = λ
Z = X1/(X1+X2)
con λ1 = λ2 = λ
c = 1/p; λ = 1/p;
p
X = Y
c→∞,µ=c/λ,σ2=c/λ2
* Z∼ Gamma(c1+c2,λ)
* Z∼ Beta(c1,c2)
Y∼Normale di ordine
p standardizzata
* X∼N(µ,σ2)
*
Tavola 19. Alcune relazioni fra la distribuzione Gamma ed altre distribuzioni in
funzione dei valori dei parametri e di particolari trasformazioni di variabili
aleatorie con distribuzione Gamma.
Ad esempio si è già visto come generare numeri casuali da una
distribuzione esponenziale di parametro di scala λ: ricordo appena che
tale distribuzione è un caso particolare della distribuzione Gamma con lo
stesso parametro di scala λ, e con parametro di forma c = 1.
5.2.1.
Distribuzioni Gamma con parametro di forma intero
Nel caso generale la densità di una v.c. con distribuzione Gamma di
parametri c e λ, è data da:
f(x) = λ cxc-1e-λx/Γ(c)
c > 0; λ>0; x≥0;
∞ c-1 -x
essendo Γ(c) la funzione Gamma completa, Γ(c) = ⌠
x e dx.

⌡
0
Per questa v.c. si ha come è noto:
E(X) = c/λ
e V(X) = c/λ2
Allora, per la proprietà additiva della distribuzione Gamma, se
vogliamo generare numeri casuali da una distribuzione Gamma di
parametro c intero, possiamo sommare c numeri casuali generati da una
Tecniche di Simulazione in Statistica.
83
distribuzione esponenziale di parametro di scala λ; per ridurre il numero
dei calcoli conviene usare la relazione:
 c

X = ∑ –(log Ui)/λ = -log ∏ Ui /λ.


i=1
i = 1 
c
Va però sottolineato che questo metodo molto semplice è però poco
versatile, sia perché limitato ai valori di c interi e sia perché risulta veloce
solo per valori di c piccoli. Si vedranno in seguito metodi più efficienti
basati su tecniche di accettazione-rifiuto.
5.2.2.
Distribuzioni Beta
Se sappiamo generare numeri casuali da distribuzioni Gamma, allora
possiamo generarli anche da distribuzioni Beta, con densità data da:
f(x) = xα-1(1-x)β-1 / Β(α,β)
0≤x≤1
essendo Β(α,β) la funzione Beta completa, definita da:
1 α-1
β-1
Β(α,β) = ⌠
 x (1-x) dx = Γ(α)Γ(β)/Γ(α+β) (α,β>0)
⌡
0
Per questa v.c. si ha come è noto:
E(X) = α/(α+β)
e V(X) = α β/(α+β)2(α+β+1)
Sappiamo che se X1 e X2 sono due variabili indipendenti con
distribuzione Gamma con lo stesso parametro di scala e parametri di
forma rispettivamente c1 e c2, allora Z = X1/(X1+X2), ha una distribuzione
Beta di parametri c1 e c2. La distribuzione Beta è, come è noto, legata
anche alla distribuzione F di Snedecor; infatti se F è una v.a. con
distribuzione F di Snedecor con ν1 e ν2 gradi di libertà, si sa che la v.a.
X = (1+ ν1F/ν2)-1 segue una distribuzione Beta di parametri α=ν1/2 e
β=ν2/2.
Vale la pena di citare un metodo a prima vista poco intuitivo, ma
semplice come meccanismo, per generare numeri casuali da una
distribuzione Beta di parametri α e β interi, che sfrutta le proprietà delle
statistiche d'ordine di campioni provenienti da una distribuzione
uniforme: si sa che in un campione casuale semplice di ampiezza
n = α + β − 1 estratto da una distribuzione uniforme standard, la
distribuzione della α-esima statistica d’ordine (ossia dell’elemento di
84
Marcello Chiodi
posto α nel campione ordinato) è una Beta di parametri α e β. Pertanto
basterà generare α+β−1 numeri casuali uniformi indipendenti Ui,
ordinarli, e poi prendere quello di posto α!
1.50
1.25
f(x)
1.00
c = 0,5
c=1
0.75
c=2
c = 20
c=5
0.50
0.25
0.00
0.5
1.0
1.5
2.0
2.5
3.0
3.5
x
Figura 16 Densità di distribuzioni Gamma per alcuni valori del parametro c
(per rendere più significativo il confronto grafico, si è scelto per ciascuna
distribuzione λ = c/2, in modo che le distribuzioni abbiano tutte la stessa
speranza matematica E(X) = 2)
3.5
3.0
2.5
f(x)
2.0
α=0,5
β=3
α=1
β=2
α=1,2
β=2
1.5
1.0
0.5
0.0
α=7
β=3
α=5
β=5
α=0,6
β=0,4
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
x
Figura 17 Densità di distribuzioni Beta per alcuni valori dei parametri α e β.
Tecniche di Simulazione in Statistica.
5.2.3.
85
Metodo di Johnk per la generazione di numeri casuali da
distribuzioni Beta qualsiasi
Un metodo efficiente per generare numeri casuali da una distribuzione
Beta, con α e β qualsiasi, è dovuto a Johnk (1964). Sebbene poco
intuitivo, lo cito comunque, in quanto conduce ad un algoritmo molto
semplice, di base per generare numeri pseudo-casuali da altre
distribuzioni:
numeri casuali da una distribuzione Beta: metodo di Johnk
Ç
Ç
Ç
Siano U e V due v.a. uniformi standard indipendenti, si ponga:
Y = U1/α; Z = V1/β e X = Y/(Y+Z)
Condizionatamente a Y+Z≤1, X ha una distribuzione Beta di
parametri α e β
Per la dimostrazione occorre prima la distribuzione di Y e Z. Si ricava
immediatamente:
fY(y) = α yα-1;
fZ(z) = β zβ-1
Posto ora X = Y/(Y+Z) e W = Y+Z, si hanno le trasformazioni inverse:
y = wx
e
z = w(1-x)
per cui è facile vedere che lo Jacobiano della trasformazione da (Y,Z) a
(X,W) è dato da: J = w.
Pertanto la densità, non condizionata, di X e W è data da:
fX,W(x,w) = αβxα-1(1-x)β-1wα+β-1,
0≤x≤1, 0≤w≤2.
Per trovare la densità di X, subordinatamente a W≤1, applichiamo il
teorema delle probabilità condizionate:
1
⌠
⌡0 fX,W(x,w)dw
fX,W(x,0≤W≤1)
fX(x|0≤W≤1) =
= 1 1
P(0≤W≤1)
⌠
⌡0 ⌠
⌡0 fX,W(x,w)dwdx
Per il numeratore è immediato vedere che:
⌠1 f (x,w)dw = αβxα-1(1-x)β-1/(α+β).
 X,W
⌡
0
Il denominatore è solo una costante di normalizzazione data da:
86
Marcello Chiodi
1 ⌠1
P(0≤W≤1) = ⌠
  fX,W(x,w)dwdx = αβΓ(α)Γ(β)/(α+β)Γ(α+β) =
⌡ ⌡
0
0
= B(α,β) αβ/(α+β),
per cui si ha infine:
fX(x|0≤W≤1) = xα-1(1-x)β-1/ B(α,β).
L’efficienza di tale metodo è data dalla probabilità di accettazione, che si
può anche esprimere come:
P(0≤W≤1) = Β(α,β) αβ/(α+β) =
Γ(α+1)Γ(β+1)
Γ(α+β+1)
Tale efficienza tende a 0 al divergere di α e β, o anche di uno solo dei
due, purchè l'altro non tenda a zero. Nella tavola sono riportati i valori di
tale efficienza teorica in corrispondenza di alcune coppie di valori di α e
β. Si vede che il metodo risulta conveniente per valori piccoli di tali
parametri.
β
0,25
0,50
1,00
2,00
5,00
α
0,927
0,874
0,800
0,711
0,588
0,25
0,874
0,785
0,667
0,533
0,369
0,50
0,800
0,667
0,500
0,333
0,167
1,00
0,711
0,533
0,333
0,167
0,048
2,00
0,588
0,369
0,167
0,048
0,004
5,00
Tavola 20. Efficienza teorica per il metodo di Johnk per la generazione di
numeri casuali da una distribuzione Beta, per alcune coppie di valori dei
parametri α e β.
5.3.
Generazione di numeri casuali da distribuzioni normali di
ordine p (p > 1)
La famiglia delle curve normali di ordine p (citata spesso nella
letteratura scientifica anglosassone come exponential power distribution)
fu introdotta da Subbotin (1923) ed ha densità (Vianelli, 1963, Lunetta,
1963, Mineo, 1978,1986):
Tecniche di Simulazione in Statistica.
87
−
1
f ( z) =
2σ p
p
 1
pΓ1 + 
p

|z − µ | p
p
e σp
p
p > 0, z∈ℜ
Posta in questa forma, µ è il vero valore di una quantità, i cui valori
osservati z sono affetti da errori, con dispersione data da σp, scarto medio
assoluto di ordine p. Per ogni valore di p si ha una diversa distribuzione
di errori. Le curve risultano unimodali, simmetriche e, per p > 1,
campanulari; come casi particolari includono: la distribuzione di Laplace
(p = 1), la normale (p = 2) e l’uniforme (p→∞).
Il parametro di forma p è collegato con la kurtosi, in quanto si ha:
β2 = E(| Z - µ|4) / E2(| Z - µ|2) = Γ(1/p)Γ(5/p)/[Γ(3/p)]2.
I valori di β2 in corrispondenza di alcuni valori di p sono
riportati nello schema che segue:
p
0+
1
1,5
2
4
8
∞
6,00
3,76
3,00
2,19
1,92
1,80
β2
∞
Inoltre:
µ = E[Z];
σp = [E(| Z - µ|p)]1/p.
per cui µ è un parametro di posizione e σp è un parametro di scala.
Ponendo X = (Z-µ) /σp, otteniamo la forma standardizzata:
f ( x) =
1
e

1
p
2 pΓ1 + 
p

−
| x| p
p
,
p > 0, x∈ℜ
Un esame di tale densità mostra che il metodo dell’inversione della
funzione di ripartizione non può essere adottato, se non con un eccessivo
carico computazionale.
88
Marcello Chiodi
0.5
p=1
p=1.5
p=2
p=4
p=30
p →∞
0.4
f(x)
0.3
0.2
0.1
0.0
-3
-2
-1
0
1
2
3
x
Figura 18
Densità di curve normali di ordine p, per alcuni valori di p.
In un mio lavoro (Chiodi, 1986), ho mostrato che si possono ottenere
numeri casuali dalla distribuzione normale standardizzata di ordine p, per
valori di p > 1, generalizzando la formula di Box-Muller; per p = 1 si
ottiene la distribuzione di Laplace o esponenziale doppia da cui abbiamo
già visto nel capitolo 4 come generare numeri pseudo-casuali. Per il caso
generale (p > 1), pur omettendo i dettagli, espongo la chiave del
ragionamento:
si consideri la formula per generare un singolo numero da una
distribuzione normale standard secondo la formula di Box-Muller:
X = -2 log U sen (2πV);
essa viene generalizzata nel modo seguente:
generalizzazione della formula di Box-Muller per generare X da una
normale di ordine p standardizzata
X=W
p
-p Y log U
dove:
W è un segno attribuito casualmente, tale che:
•
ƒP(W = 1) = P(W = -1) = 1/2;
U è una variabile uniforme standard e
•
Tecniche di Simulazione in Statistica.
89
Y è una v.a. con distribuzione Beta di parametri: α=1/p e β = 1-1/p,
che si può generare con la tecnica di Johnk vista prima (conveniente
perché in questo caso α e β risultano minori di 1).
Il termine Y1/p risulta una generalizzazione della funzione sen(· ), se si
considera che la densità di tale variabile risulta proporzionale a
•
p
1 / (1-yp), mentre la densità di S = sen(k· V) risulta proporzionale a
1/ (1-s2). Per i dettagli analitici è meglio consultare il lavoro completo
(Chiodi, 1986).
Seguendo una tecnica simile a quella della trasformazione polare di
Marsaglia ho ottenuto (Chiodi, 1995) un altro metodo, basato pur sempre
sulla generalizzazione della formula di Box-Muller:
siano U e V due v.a. uniformi indipendenti nell’intervallo [-1;+1], e si
ponga
Z = |U|p + |V|p/(p-1).
Allora, condizionatamente a Z≤1, Z è uniformemente distribuito in [0;1),
|U|p/Z ha una distribuzione Beta, (ancora di parametri: α=1/p e β = 1-1/p)
ed infine:
p
U
-p log(Z)/Z , segue una distribuzione normale di ordine p
standardizzata.
generalizzazione della trasformazione polare di Marsaglia per
generare X da una normale di ordine p standardizzata
X=U
p
-p log(Z)/Z
La codifica di questo algoritmo è semplice e immediata, e
l’esecuzione risulta sufficientemente veloce. Per maggiori dettagli è
opportuno consultare il lavoro completo (Chiodi, 1995).
Oppure per generare numeri casuali da una normale di ordine p
(Johnson, 1979) si può sfruttare il fatto che |X|p segue una distribuzione
Gamma di parametri c = 1/p e λ = 1/p. Questa tecnica, conveniente se si
lavora in ambienti software in cui sono implementati buoni algoritmi di
generazione da distribuzioni Gamma, può condurre a sequenze di qualità
non troppo buona, in particolare nelle code.
90
Marcello Chiodi
5.4.
Generazione di
distribuzioni discrete
5.4.1.
numeri
aleatori
da
particolari
Distribuzione binomiale
Per generare numeri casuali X da una distribuzione binomiale di
parametri n e p, se n non è troppo grande si può procedere come si è visto
nel capitolo 4 come somma di n indicatori di eventi indipendenti, e con
uguale probabilità. Il risultato deriva ovviamente dalla definizione della
distribuzione binomiale.
Per valori di n elevati si può ricorrere all’approssimazione normale,
con eventuale correzione per la continuità, o comunque all'inversione di
F(x), come visto nel capitolo precedente, o con altre tecniche
computazionalmente più efficienti. (Fishman, 1979).
5.4.2.
Distribuzione di Poisson
Per generare numeri casuali X da una distribuzione di Poisson, si può
sfruttare la connessione fra distribuzione di Poisson e processo di arrivi
regolato da una distribuzione esponenziale, se non si vuole ricorrere
all'inversione della funzione di ripartizione.
E’ noto che la distribuzione di Poisson di parametro λ, con:
P(x) = λxe-λ/x!,
x≥0; λ > 0
esprime la probabilità che nell’unità di tempo si verifichino esattamente x
arrivi, in un processo di arrivi poissoniano ad incrementi indipendenti,
essendo:
f(t) = λe-λt
t≥0
la densità della distribuzione di probabilità dei tempi t di attesa fra
arrivi consecutivi, che è la densità di una distribuzione esponenziale di
parametro λ, per la quale abbiamo già visto come generare
semplicemente numeri casuali mediante inversione della funzione di
ripartizione.
Pertanto, invece di simulare numeri di arrivi X nell’unità di tempo,
simuliamo tempi di arrivo Ti indipendenti, da una distribuzione
esponenziale, fino a superare un tempo complessivo unitario!
Ad esempio, se con λ=3,5 si realizzano i tempi:
T1 = 0,23; T2 = 0,15, T3 = 0,51, T4 = 0,56,
Tecniche di Simulazione in Statistica.
91
vuol dire che nell’unità di tempo si sono verificati X = 3 arrivi, in quanto
T1 + T2 + T3 = 0,89 < 1, ed il quarto arrivo si è avuto dopo che il tempo
unitario è trascorso: T1+ T2+ T3 + T4 = 1,45 > 1; si veda anche la figura
riportata più avanti.
Per ottenere un algoritmo semplice procediamo come segue:
l’evento {X = x} è equivalente all’evento{
x
x+1
i=1
i=1
∑ Ti≤1≤ ∑ Ti }.
Quindi genereremo delle Ti da una distribuzione esponenziale di
parametro λ finché non si ha: 1≤
x+1
∑ Ti,
i=1
e prenderemo quindi X come numero casuale generato da una
distribuzione di Poisson; il caso X = 0 si ha subito quando T1 > 1.
0
T i : numero casuale da una
esponenziale di parametro λ
0.23 0.38
T1
T2
0.89
1.45
TX+1
... ... T X
0
1
T
Figura 19 Esempio di generazione di numeri casuali X da una distribuzione
di Poisson di parametro λ: relazione con la somma di X+1 intervalli casuali
Ti generati da una distribuzione esponenziale di parametro λ=3,5.
Per l’implementazione materiale dell’algoritmo, consideriamo le Ti
generate da una esponenziale di parametro λ mediante la relazione vista
nel capitolo precedente: Ti = -(log Ui)/λ; X va quindi determinato come il
più piccolo valore che soddisfa la disuguaglianza:
1≤
x+1
x+1
i=1
i=1
∑ Ti = - ∑ log(Ui)/λ.
Dal primo e terzo membro della relazione precedente si ottiene:
92
Marcello Chiodi
−λ≥
x+1
∑ log(Ui);
i=1
x+1
−λ≥ log( ∏ Ui)
i=1
x+1
e infine:
e-λ≥ ∏ Ui
i=1
In definitiva un algoritmo conveniente è il seguente:
Algoritmo 7
Generazione di numeri casuali da una
distribuzione di Poisson di parametro λ.
Inizializzazione
a)
Calcolare L = e-λ
Corpo dell'algoritmo
b)
Porre X = 0 e W = 1
c)
Generare U da una uniforme standard
d)
Porre W = W U
e)
Se risulta L < W, porre X = X+1 e tornare al passo c)
altrimenti X è il numero cercato e si ritorna al passo b) per
una nuova generazione.
Si noti come nell’implementazione effettiva dell’algoritmo l’unica
operazione trascendente è quella necessaria per il calcolo di L = e-λ, che
va fatta una sola volta, anche se occorre generare più numeri casuali. Il
tempo medio di esecuzione dell’algoritmo è funzione di λ, poiché il
numero medio di Ui necessari per ottenere una X è λ+1.
Per valori di λ elevati sarà opportuno ricorrere ad altri metodi, già
citati nel cap. 4 (Fishman, 1976). Nel capitolo seguente vedremo
comunque un esempio di applicazione di altre tecniche.
5.5.
Test di casualità per sequenze non uniformi
Quanto detto nel capitolo 3 in merito alla verifica della casualità di
sequenze di numeri pseudo-casuali uniformi può essere esteso in buona
misura alla verifica del comportamento di sequenze di numeri non
uniformi. Evidentemente la verifica della casualità va fatta rispetto alle
caratteristiche della distribuzione in questione, normale, Gamma, Beta,
etc. Si verificherà, in particolare, se una sequenza di numeri pseudo-
Tecniche di Simulazione in Statistica.
93
casuali può considerarsi come un campione casuale estratto da una
particolare distribuzione, mediante test di accostamento, come il test X2
ed il test di Kolmogorov, mediante test sui valori medi e sulle varianze,
sui momenti terzo e quarto, sulle autocorrelazioni, etc.
Si potrebbe semplicisticamente obiettare che se i numeri pseudocasuali uniformi U, V,…, impiegati sono di buona qualità, lo saranno
senz'altro anche quelli ottenuti per trasformazione di questi. Ciò è vero
solo in parte, nel senso che la buona qualità dei numeri pseudo-casuali
uniformi è un requisito necessario ma non completamente sufficiente per
ottenere numeri di buona qualità da altre distribuzioni. Si deve infatti
sempre tener conto del fatto che le operazioni di trasformazione
necessarie per ottenere particolari numeri pseudo-casuali vengono
sempre effettuate con precisione limitata ad un certo numero di cifre
significative, per cui la combinazione e la propagazione degli errori di
arrotondamento, specie per le tecniche che richiedono numerosi calcoli
basati su funzioni trascendenti, potrebbe portare a dei numeri pseudocasuali che non rispettano esattamente i requisiti richiesti.
In particolare, per numeri casuali generati da distribuzioni definite su
intervalli aperti, sono molto importanti i test effettuati sulle code della
distribuzione:
• da un punto di vista numerico-computazionale perché sono le zone
che più facilmente risentiranno della propagazione degli errori di
arrotondamento o di troncamento;
• dal punto di vista delle applicazioni statistiche, perchè sono le zone
sulle quali si incentra spesso l'attenzione dello statistico per la
costruzione di test o per la verifica di particolari ipotesi di
allontanamento dalla normalità.
In altri termini numeri pseudo-casuali di cattiva qualità in particolare
nelle code, porteranno a conclusioni statistiche poco attendibili.
Nella tavola che segue, solo come esemplificazione, sono riportate le
code della distribuzione di frequenza di 1.000.000 di numeri pseudocasuali generati da una distribuzione normale standardizzata. Le code
sono relative alle osservazioni con valore assoluto maggiore di 3, per cui
complessivamente la frequenza teorica globale é di circa 2.700 ossia
appena lo 0,27% del totale22. Si noti che i gradi di libertà del test X2 sono
22
La tavola é stata ricavata dal mio programma didattico sulle simulazioni, che impiega la
formula di Box-Muller per generare numeri casuali normali.
94
Marcello Chiodi
22, ossia quanto il numero delle classi delle code, perché non vi sono
vincoli lineari sulle frequenze: la somma delle frequenze teoriche non
deve eguagliare necessariamente la somma delle frequenze empiriche.
xinf
-4
-3,9
-3,8
-3,7
-3,6
-3,5
-3,4
-3,3
-3,2
-3,1
3
3,1
3,2
3,3
3,4
3,5
3,6
3,7
3,8
3,9
contributo
frequenza.
frequenza
diff.
a X2
osservata
teorica
<4,00
30
31,38
-1,38
0,06
-3,9
13
16,43
-3,43
0,71
-3,8
18
24,25
-6,25
1,61
-3,7
35
35,45
-0,45
0,01
-3,6
52
51,31
0,69
0,01
-3,5
78
73,52
4,48
0,27
-3,4
88
104,3
-16,3
2,55
-3,3
139
146,49
-7,49
0,38
-3,2
211
203,71
7,29
0,26
-3,1
294
280,47
13,53
0,65
-3
365
382,29
-17,29
0,78
…………..centro della distribuzione…………...
3,1
374
382,29
-8,29
0,18
3,2
277
280,47
-3,47
0,04
3,3
212
203,71
8,29
0,34
3,4
132
146,49
-14,49
1,43
3,5
94
104,3
-10,3
1,02
3,6
61
73,52
-12,52
2,13
3,7
57
51,31
5,69
0,63
3,8
35
35,45
-0,45
0,01
3,9
22
24,25
-2,25
0,21
4
20
16,43
3,57
0,78
>4,00
35
31,38
3,62
0,42
2
X =14,48 calcolato solo sulle 22 classi delle code
g.d.l.=22
xsup
Figura
Code della distribuzione di frequenza di 1.000.000 di numeri
pseudo-casuali estratti da una normale standardizzata
In alcuni miei lavori (Chiodi, 1986,1995), in cui propongo metodi di
generazione di numeri pseudo-casuali da distribuzioni normali di ordine
p, sono riportati test effettuati sulle code delle distribuzioni per diversi
valori di p, per confrontare le performances di differenti generatori dal
punto di vista statistico.
Tecniche di Simulazione in Statistica.
6. Metodo di
collegate
95
accettazione-rifiuto
e
tecniche
Se il nostro principale interesse è quello di ottenere un algoritmo
veloce, senza preoccuparci della compattezza dello stesso algoritmo e
dell’eleganza teorica di un metodo basato su trasformazioni di v.a., o se
tale metodo non ci è noto e non vogliamo ricorrere all'inversione della
funzione di ripartizione, si possono generare numeri casuali da una
distribuzione con densità f(x) (e con opportune modifiche anche da una
distribuzione di variabile discreta) per mezzo delle tecniche di
compressione, che sono una generalizzazione del metodo generale di
accettazione-rifiuto (Von Neumann, 1951), che introduco per primo con
argomentazioni geometriche elementari.
Nella figura che segue è riportata la funzione di densità f(x) di una
variabile aleatoria X continua definita in un range limitato [a,b], che
assume un valore massimo di M. Il nostro scopo è generare numeri
casuali dalla distribuzione di densità f(x).
distribuzione
maggiorante uniforme
M
f(x)
Punti rifiutati
Punti accettati
0
a
x
x+dx
b
X
Figura 20 Generazione di numeri casuali da una distribuzione continua
limitata mediante accettazione rifiuto: evidenziazione dei punti accettati e
rifiutati generati in un rettangolo di base dx e altezza M.
Se volessimo ottenere punti distribuiti uniformemente sulla superficie
sottesa da f(x) (superficie ombreggiata della figura), potremmo generare
96
Marcello Chiodi
delle ascisse X dalla distribuzione di densità f(x), e delle ordinate Y
distribuite uniformemente in [0,f(X)].
Viceversa, dato un punto P(X,Y) distribuito uniformemente sulla
superficie sottesa da f(x), la sua ascissa X segue la distribuzione di
densità f(x)!
Molto semplicemente, potremmo ottenere questi punti P(X,Y)
generandoli uniformemente nel rettangolo che racchiude la figura sottesa
da f(x), delimitato dalle due rette orizzontali di ordinata 0 e M, e dalle
due rette verticali di ascissa a e b, condizionatamente al fatto che Y≤f(x),
ossia che P sia al di sotto di f(x). Basterà generare X uniforme in [a,b] e Y
uniforme in [0,M].
Le ascisse X dei punti per i quali Y≤f(X) sono i numeri casuali
desiderati.
Nella figura sono evidenziati solo i punti generati uniformemente
all'interno di un rettangolino di ampiezza dx, contraddistinti da un
simbolo differente, secondo che ricadano al di sotto (punti accettati) o al
di sopra (punti rifiutati) di f(x). Si veda più avanti l'esempio e la relativa
figura per la generazione di numeri casuali da particolari distribuzioni
Beta.
6.1.
Metodo di accettazione rifiuto: caso generale
Andando ora al caso generale, relativo a variabili dotate di densità f(x)
qualsiasi (e quindi anche a variabili definite su intervalli aperti), la chiave
del metodo risiede nella possibilità di fattorizzare f(x) nel modo seguente:
fattorizzazione di f(x) per il metodo di accettazione-rifiuto
f(x) = C r(x) g(x)
dove:
− r(x) è una funzione di densità (da cui si sanno generare numeri
casuali con un qualsiasi metodo);
− g(x) : 0 < g(x) ≤ 1;
− C≥1 è una costante di normalizzazione.
Posto h(x) = C r(x), si ha g(x) = f(x)/h(x) e quindi h(x) risulta sempre
maggiore di f(x), e per questo viene chiamata funzione maggiorante di
f(x); si ha anche:
Tecniche di Simulazione in Statistica.
97
+∞
+∞
C=⌠
f(x)/g(x)dx = ⌠
h(x)dx.


⌡-∞
⌡-∞
Prima di esporre l’algoritmo, che potrebbe sembrare misterioso (o
miracoloso, secondo dei punti di vista!) senza l'introduzione della sezione
precedente, possiamo fare delle considerazioni basandoci sulla figura che
segue, nella quale è rappresentata una generica funzione di densità f(x) ed
una funzione maggiorante h(x); il fattore C è l’ area sottesa da h(x). Il
valore di g(x) è dato dal rapporto fra la f(x) e la h(x); se g(x) si mantiene
sempre molto vicina all’unità, vuol dire che f(x) e h(x) sono molto simili,
così come le due densità f(x) e r(x).
Il concetto che sta alla base del metodo è il seguente:
0.30
0.25
h(x)
Punti accettati
Punti rifiutati
0.20
f(x)
0.15
0.10
0.05
Prob{x<X<x+dx}
0.00
x
x+dx
Figura 21 Generazione di numeri casuali da una distribuzione continua
qualsiasi mediante tecnica di accettazione rifuto.
anziché generare un numero casuale da f(x), si genera un numero X da
r(x); per potere considerare X come estratto dalla distribuzione di densità
f(· ), occorre basarsi sul valore di g(X), che misura la somiglianza fra le
due densità: se g(X) è molto vicina ad uno, molto probabilmente si può
considerare X come proveniente da f(· ); se g(X) è piccolo, sarà difficile
che X possa prendersi come un numero da f(· ). Potremmo quindi estrarre
un numero casuale V uniforme standard [0;1) indipendente da X e, se
98
Marcello Chiodi
g(X)≥V, accettare X come numero casuale richiesto, altrimenti X viene
rifiutato e si prova a generare un’ altra coppia X,V.
Si veda nella figura l'evidenziazione della massa di probabilità relativa
al trapezio di base x,x+dx, e la sua suddivisione in zona di rifiuto e zona
di accettazione.
Analogamente a quanto visto nella sezione precedente per il caso più
semplice di distribuzione maggiorante unifome, geometricamente si può
vedere la coppia [X, V h(X)] come le coordinate di un punto lanciato a
caso nella figura geometrica delimitata da h(x) e dall’asse delle ascisse;
se l’ordinata V⋅h(X) risulta inferiore a f(X), ossia se V ≤ g(X), allora potrò
considerare X come l’ascissa di un punto lanciato nella figura delimitata
da f(x). La probabilità che ciò si verifichi per una generica prova è
= 1/C, efficienza teorica, data dal rapporto fra l’area di f(· ) e quella di
h(· ). L’algoritmo è pertanto il seguente:
Algoritmo 8
Tecnica generica di accettazione-rifiuto
Inizializzazione
a)
determinare una scomposizione: f(x) = C r(x) g(x) = h(x)g(x)
Corpo dell'algoritmo
b)
generare X da una distribuzione di densità r(x);
c)
generare V, indipendente da X, da una distribuzione
uniforme standard;
d)
se risulta V ≤ g(X) si accetta X, altrimenti si rifiuta X e si
torna al passo b)
Non è detto che si sappia sempre trovare una buona fattorizzazione: se
ne possono trovare infinite, ma il punto essenziale è trovare una densità
r(x) abbastanza somigliante a f(x), e da cui si sappiano generare numeri
casuali con algoritmi efficienti.
Se si considera come f(x) una densità di una variabile a range limitato
in [a;b], e come h(x) una distribuzione maggiorante uniforme di ordinata
M = max [f(x)], come nell'esempio utilizzato nell'introduzione a questo
capitolo, il metodo risulta di semplice comprensione e di immediata
applicabilità.
Per la dimostrazione formale, si rifletta sul fatto che, in generale, per
le distribuzione dotate di densità, f(x)dx approssima la probabilità che X
sia compresa nel segmento x,x+dx (a meno di un infinitesimo di ordine
superiore rispetto a dx!); nel nostro caso occorre calcolare la probabilità
Tecniche di Simulazione in Statistica.
99
che X, proveniente dalla distribuzione di densità r(x), assuma un valore
compreso fra x e x+dx, condizionatamente però all’evento V≤g(x):
Prob{x≤X≤x+dx|V≤g(x)} =
= Prob{x≤X≤x+dx ∩ V≤g(x)}/Prob{V≤g(x)}≅
r(x)g(x)dx
r(x)g(x)dx
≅ b
= 1/C = f(x)dx.
⌠ r(x)g(x)dx

⌡
a
6.1.1.
Tecniche di compressione
Si tratta di un affinamento della tecnica di accettazione rifiuto, in cui
si tenta di sostituire, al passo d), un confronto che risulti più semplice dal
punto di vista computazionale.
La chiave del metodo è trovare due funzioni, b(x) e h(x), tali che, per
ogni x, si abbia:
b(x) ≤ f(x) ≤ h(x)
con h(x) = C r(x)
così che f(x) risulta compressa fra b(x) e h(x).
L’algoritmo è così sintetizzato:
Algoritmo 9
Tecnica generica di compressione
Inizializzazione
a)
determinare una scomposizione:
f(x) = C r(x) g(x) = h(x)g(x)
e trovare una funzione b(x) ≤ f(x).
Corpo dell'algoritmo
b)
generare X da una distribuzione di densità r(x);
c)
generare V, indipendente da X, da una distribuzione
uniforme standard;
d)
se risulta V ≤ b(X)/h(X) (pre-test), si accetta direttamente
X, altrimenti si prosegue con il passo e)
e)
se risulta V ≤ g(X) = f(X)/h(X) si accetta X, altrimenti si
rifiuta X e si torna al passo b)
La modifica consiste semplicemente nell’avere suddiviso il passo d)
del test di accettazione in due passi d) ed e); infatti se al passo d) risulta
soddisfatto il pre-test V ≤ b(x)/h(x), si avrà senz’altro:
100
Marcello Chiodi
V ≤ b(x)/h(x) ≤ f(x)/h(x),
poiché b(x) ≤f(x),
per cui il test di accettazione sarebbe senz’altro superato.
Se il pre-test non dà esito positivo, occorre effettuare il test di
accettazione vero e proprio del passo e). Non occorre che b(x) sia
proporzionale ad una densità: la convenienza di questa variante si ha nel
caso in cui b(x)/h(x) risulti molto più semplice da calcolare del rapporto
f(x)/h(x), e se b(x)/f(x) risulta molto vicino ad uno, in modo che la
decisione dell’accettazione avvenga più spesso al passo d) che non al
passo e).
In definitiva la tecnica di compressione è conveniente se:
Ç b(x) e h(x) sono semplici da calcolare, o almeno è semplice calcolare
b(x)/h(x), ad esempio b(x) e h(x) possono essere l'unione di
opportuni segmenti di retta;
Ç se è facile generare numeri casuali da r(x);
Ç se le due funzioni b(x) e h(x) comprimono bene f(x), nel senso che
l’area compresa fra le curve descritte da b(x) e da h(x) risulta
piccola.
6.1.2.
Altre tecniche collegate
Si sono sviluppate numerose tecniche per il miglioramento dei metodi
di accettazione-rifiuto, allo scopo di aumentare la probabilità di
accettazione: metodi di rifiuto con ripetizione; di accettazionecomplemento (Kronmal, Peterson, 1984); accettazione-complemento
modificato (Rubinstein, Kreimer, 1988); accettazione-complemento a
lotti etc., per le quali rimando senz'altro alla bibliografia. Devroye (1984)
propone delle tecniche generali per la generazione di numeri casuali da
distribuzioni monotone decrescenti limitate.
6.1.3.
Tecniche di accettazione-rifiuto per funzioni qualsiasi
Nella figura sono rappresentate due densità generiche (di variabili
continue con range limitato): a sinistra una densità unimodale è
maggiorata mediante due diverse funzioni maggioranti: h1(x) è uniforme,
h2(x) è costituita da una spezzata ed evidentemente segue meglio f(x),
ossia avrà una alta probabilità di accettazione, a prezzo di un algoritmo
più complesso per la generazione da una densità proporzionale a h2(x).
Come regola generale direi che se occorre generare rapidamente e
occasionalmente pochi numeri casuali da f(x), utilizzerei h1(x), facendo
Tecniche di Simulazione in Statistica.
101
anche lavorare il computer in modo poco efficiente con una bassa
probabilità di accettazione, ma ottenendo immediatamente l'algoritmo
semplicemente calcolando l'ordinata massima23 di f(x); altrimenti,
volendo un algoritmo più efficiente da un punto di vista computazionale,
si potrà usare h2(x), a prezzo però di un maggiore sforzo per la
determinazione dell'equazione di h2(x), e poi dell'implementazione di un
algoritmo per la generazione di numeri casuali da una densità
proporzionale a h2(x).
Nella stessa figura a destra è rappresentata una densità monotona,
compressa da due segmenti di retta; si è già fatto cenno alla generazione
di numeri casuali da una distribuzione triangolare, che può servire come
base per l'implementazione di algoritmi per densità compresse da unioni
di più segmenti di retta.
h 1 (x)
h 3 (x)
h 2 (x)
f(x)
f(x)
b(x)
Figura 22 Esempi di funzioni maggioranti elementari costituite da segmenti
di retta per densità unimodali e per densità monotone.
Per distribuzioni definite su un dominio aperto (ad esempio 0-∞)
evidentemente queste scomposizioni sono applicabili solo fino a valori di
x inferiore ad un opportuno valore di soglia xc; per ottenere una maggiore
efficienza computazionale conviene di solito scegliere xc sulla coda della
distribuzione in modo che l'area sottesa da f(x) alla destra di xc sia uguale
23
A rigore, se non si vuole nemmeno calcolare analiticamente il massimo di f(x), si può usare
una funzione maggiorante uniforme ancora più inefficiente, scegliendo un'ordinata K
superiore al massimo di f(x), se si sa che senz'altro f(x)<K in tutto il dominio di f(x).
102
Marcello Chiodi
ad un valore ε molto piccolo, ad esempio ε < 0,001, di modo tale che
soltanto in una bassa frazione delle esecuzioni dell'algoritmo occorrerà
generare numeri casuali dalla coda, e nella maggior parte dei casi invece
si potrà ricorrere ad una decomposizione come quelle accennate in questa
sezione; nella peggiore delle ipotesi si potrà generare x dalla coda per
inversione della funzione di ripartizione: se per far questo occorre
impiegare un algoritmo computazionalmente molto oneroso, sarà
opportuno scegliere ε il più piccolo possibile, compatibilmente con la
precisione numerica con cui si lavora.
Spesso tuttavia per la coda di una distribuzione (x > xc) si può
utilizzare una distribuzione maggiorante esponenziale (si veda anche
Schmeiser, 1980):
h(x) = k1 e-k2x
ove k1 e k2 sono determinati in modo che h(x) risulti tangente a f(x) in xc.
Per la generazione di numeri casuali da r(x),ossia h(x) normalizzata,
occorre tener conto del fatto che:
⌠ ∞ h(x)dx = k1e-k2xc/k2.

⌡xc.
6.2.
Esempi sulle tecniche di compressione per variabili
continue
6.2.1.
Distribuzione maggiorante uniforme: generazione da una
distribuzione Beta
Supponiamo di voler generare numeri casuali da una distribuzione
Beta standardizzata, con parametri α = 1,3 e β=1,8, la cui densità è
rappresentata nella figura riportata più avanti; lo spirito del metodo di
accettazione-rifiuto è quello di generare un punto a caso all’interno del
rettangolo delimitato superiormente dall’ordinata massima di f(x). Se il
punto si trova all’interno dell’ area scura, la sua ascissa è un numero
pseudo-casuale estratto dalla distribuzione di densità f(x).
Tecniche di Simulazione in Statistica.
103
h(x)=1,38
P
f(x)
rifiutati
accettati
f(x)
b(x)
O
A
0
x
x+dx
1
Figura 23 Generazione di numeri casuali da una distribuzione Beta di
parametri α = 1,3 e β=1,8 mediante tecnica di compressione (applicabile in
tutti i casi in cui α≥1 e β≥1), con distribuzione maggiorante uniforme.
Con uno studio elementare della funzione di densità si determinano le
coordinate (xm,ym) del punto di massimo:
xm = (α-1)/(α+β-2) = 0,2727
ym = f(xm) = (α-1)α-1(β-1)β-1/[(α+β-2)α+β-2 B(α,β)] = 1,3800
Si può pertanto generare un numero casuale U uniforme
nell’intervallo [0,1) (generazione da r(x)), quindi si genera un altro
numero casuale uniforme V e se V≤f(U)/ym, si accetta U come numero
casuale con distribuzione Beta, diversamente si procede ad un’altra
generazione di U e V. Formalmente la scomposizione adottata è:
f(x) = C r(x) g(x) = ym[f(x)/ym],
avendo posto:
C = ym;
g(x) = f(x)/ym;
r(x) = 1;
h(x) = ym.
e il test per l’accettazione di U è:
V≤[U/(α-1)]α-1[(1-U)/(β-1)]β-1(α+β-2)α+β-2 per qualsiasi α>1 e β>1;
in particolare con i valori dell'esempio α = 1,3 e β=1,8:
104
Marcello Chiodi
V≤U0,3(1-U)0,8/0,5249.
L’efficienza del metodo in questo caso è:
= Prob[V≤g(U)] = 1/ym = 0,7246.
Questa tecnica, molto semplice da programmare, è applicabile a
qualsiasi variabile con distribuzione Beta, purchè α≥1 e β≥1, di modo
che f(x) risulti limitata superiormente; se i parametri sono molto elevati il
metodo non sarà molto efficiente, e sarà meglio utilizzare altre funzioni
maggioranti.
α
β
1,00
2,00
5,00
10,00
1,000
0,500
0,200
0,100
1,00
0,500
0,667
0,407
0,235
2,00
0,200
0,407
0,406
0,305
5,00
0,100
0,235
0,305
0,284
10,00
Tavola 21 Efficienza teorica della tecnica di accettazione-rifiuto con
distribuzione maggiorante uniforme per la generazione di numeri casuali da
distribuzioni Beta con α≥1 e β≥1, per alcune coppie di valori dei parametri
α e β.
Questo stesso esempio è utile per far vedere il vantaggio derivante
dall’applicazione di tecniche di compressione, mediante l’impiego di un
pre-test per l’accettazione. Il test di accettazione infatti comporta il
calcolo di funzioni trascendenti in U (Uα-1 e (1-U)β-1); inoltre con questi
valori dei parametri, α = 1,3 e β=1,8, la curva risulta unimodale e
concava verso il basso, per cui una funzione b(x)≤f(x) che risulta
semplice da calcolare è la spezzata composta dai due segmenti di retta
OP e PA. Pertanto b(x) è data da:
b(x) = x ym/xm
se x≤xm;
b(x) = (x-1) ym/(xm-1)
se x>xm.
L’area racchiusa da b(x) è la metà di quella racchiusa da h(x); quindi
l’esecuzione dell’algoritmo nel 50% dei casi, in media, condurrà
all’accettazione immediata di U tramite il semplice pretest; con una
probabilità di 1/ym-1/2 si accetta U dopo il test vero e proprio e con
probabilità 1-1/ym dei casi si rifiuta U.
Tecniche di Simulazione in Statistica.
6.2.2.
105
Distribuzioni maggioranti non uniformi: esempio sulla curva
normale
Come altro esempio si consideri la generazione del valore assoluto di
una variabile normale standardizzata, utilizzando come distribuzione r(x)
la distribuzione esponenziale di parametro λ = 1.
La densità di una normale standardizzata (con x≥0) si può scomporre
come segue:
2
2
f(x) = 2/π e-x /2 = 2e/π e-x e-(x-1) /2
C=
per cui:
2e/π = 1,3155;
2
r(x) = e-x;
g(x) = e-(x-1) /2,
per cui l’efficienza del metodo è:
= P{V ≤ g(x)} = 1/C = 0,7602.
1.0
h(x)=(2e/π)
1/2
e
-x
0.8
g(x)
0.6
f(x)
0.4
0.2
0.0
0.5
1.0
1.5
x
2.0
2.5
3.0
0.0
0.0
0.5
1.0
1.5
2.0
2.5
3.0
x
Figura 24 Generazione di numeri casuali dal ramo positivo di una
distribuzione normale standardizzata, mediante tecnica di accettazionerifiuto fondata su una distribuzione maggiorante esponenziale.
La scelta della distribuzione esponenziale come distribuzione
maggiorante non è ottimale, in particolare per il diverso comportamento
asintotico, ma ha il vantaggio di consentire una generazione di numeri
casuali molto semplice: X = -log U.
Il test di accettazione g(x)≥V è dato da:
106
Marcello Chiodi
e-(X-1)
2/2
≥ V;
-(X-1)2/2 ≥ log V,
X-1 ≤ -2 log V
ed essendo X = -log U, in definitiva si ha:
-log U≤1+ -2 log V
essendo U e V due numeri uniformi standardizzati indipendenti.
Ad X si può poi attribuire un segno S tramite un altro numero casuale
oppure si può ricorrere all'accorgimento, già citato per la distribuzione
esponenziale doppia, di sfruttare un unico numero pseudo-casuale
uniforme sia per la generazione di U che per il segno S:
generare U0 uniforme standard;
•
S = -1
Se U0 < 0,5
porre U = 2U0
e
•
S = +1;
porre U = 2U0-1
Se U0≥0,5
e
•
Si può dimostrare che U ed S risultano indipendenti.
6.2.3.
Distribuzione Gamma (c < 1 e λ = 1)
Per la generazione di numeri casuali con distribuzione Gamma con
parametro di scala unitario e parametro di forma minore di uno, ossia con
densità:
f(x) = xc-1e-x/Γ(c)
0 < c < 1; x≥0;
va ricordato che se c < 1 la distribuzione Gamma risulta con densità
decrescente; per ottenere poi un numero casuale Y da una distribuzione
Gamma con parametro λ qualsiasi, basterà generare X da una Gamma
con parametro λ = 1 e quindi porre Y = X/λ.
Tecniche di Simulazione in Statistica.
107
1
g(x)=h(x)/f(x)(x ≥1)
f(x)
g(x) (x<1)
h(x) (x<1)
f(x)
0
0,5
h(x) (x ≥1)
x=1
1,5
2
0
0,5
x=1
1,5
2
x
x
Figura 25 Generazione di numeri casuali da una distribuzione Gamma con
c < 1 e λ = 1, mediante tecnica di accettazione-rifiuto fondata su una
distribuzione maggiorante suddivisa in due rami.
Per cercare una distribuzione maggiorante quando c < 1 si possono
sfruttare le diseguaglianze:
c-1 -x
c-1
x e ≤ x
 c-1 -x
-x
x e ≤ e
0≤x≤1
x>1
per cui, dividendo ambo i membri delle due diseguaglianze per Γ(c) si
ha:
c-1
x /Γ(c)
0≤x≤1
f(x) ≤ h(x) =  -x
x>1
 e /Γ(c)
Per ottenere r(x) occorre calcolare C normalizzando h(x):
∞
⌠1 c-1
⌠∞ -x 
C=⌠
 h(x)dx = x dx+ e dx /Γ(c) = (1/c+1/e)/Γ(c)
⌡0
⌡1
⌡0

per cui r(x) = h(x)/C. Si veda anche la figura precedente in cui sono
rappresentate f(x), h(x) e g(x).
Per completare l'algoritmo occorre saper generare numeri casuali dalla
distribuzione di densità r(x) data da:
r(x) =
xc-1/(1/c+1/e)
 -x
 e /(1/c+1/e)
0≤x≤1
x>1
Si può operare per inversione della funzione di ripartizione:
108
Marcello Chiodi
xc/(1+c/e)
⌠x
0≤x≤1

R(x)=⌡ r(t)dt=
-x
-x
1/(1+c/e)-(e
-1/e)/(1/c+1/e)=1-e
/(1/c+1/e)
x>1
0

L'algoritmo sarà dunque:
Algoritmo 10
Generazione di numeri pseudo-casuali
da una distribuzione Gamma con c < 1 e λ = 1
Inizializzazione
a)
porre k = 1+c / e
Corpo dell'algoritmo
b)
Generare U e V da una uniforme standard;
c)
se U≤1/k
X = (U k)1/c ; altrimenti andare a e)
(generazione di X dal primo ramo della distribuzione di
probabilità R(· ) per inversione della funzione di
ripartizione)
d)
Se V≤e-X si accetta X altrimenti si rifiuta X e si torna a b)
e)
X = -log[k(1-U)/c]
(secondo ramo di R(· ), caso in cui U > 1/k):
f)
se V≤xc-1 si accetta X altrimenti si rifiuta X e si torna a b).
L'efficienza teorica è data al solito da 1/C (probabilità di
accettazione):
= 1/C = Γ(c)/[1/c+1/e] = e Γ(c+1)/[c+e]
e
Si ha anche: lim E = 1 e lim E = 1+e ≅ 0,731
c→0+
c→1
Alcuni valori dell' efficienza teorica sono riportati nella tavola che
segue.
c
Efficienza 0,010
0,991
0,100
0,918
0,250
0,830
0,500
0,749
0,750
0,720
0,900
0,723
Tavola 22. Efficienza teorica dell'algoritmo di accettazione-rifiuto, per
distribuzioni Gamma con parametro di forma inferiori all'unità, in
corrispondenza di alcuni valori di c.
Si veda la bibliografia, e in particolare Schmeiser e Lal (1980), per
avere maggiori dettagli su tecniche efficienti di compressione per la
generazione di numeri pseudo-casuali da distribuzioni Gamma con valori
di c qualsiasi.
Tecniche di Simulazione in Statistica.
6.2.4.
109
Distribuzione Gamma (c > 1 e λ = 1)
Fra i numerosissimi metodi per la generazione di numeri casuali da
una distribuzione Gamma, con c > 1, segnalo quello di Cheng (1977), di
facile implementazione, che si basa su una variante della tecnica di
accettazione-rifiuto. Siano f(x) e r(x) due funzioni di densità ed F(x) e
R(x) le corrispondenti funzioni di ripartizione. Vogliamo generare numeri
casuali da F(x), ma sappiamo generarli da R(x) per inversione della
funzione di ripartizione. Poniamo:
 f(x) 
M= max


x  r(x) 
e generiamo U e V da una uniforme standard. Quindi:
•
generiamo X da R(· ), cioè: X=R-1(U);
 f(x) 
•
se  M r(x)  ≥ V allora X è accettato come proveniente dalla


distribuzione F(· ).
Per ottenere numeri casuali da una distribuzione Gamma con c > 1 e
λ = 1, si può usare:
R(x) = xh /(ch + xh) così che r(x) = h ch xh-1 /(ch + xh)2; h= (2c-1)
L'algoritmo si implementa facilmente ed ha un'efficienza che, per valori
grandi di c, tende a π/2.
6.2.5.
Distribuzione normale di ordine p
Come esempio di tecnica di compressione per generare numeri casuali
da una distribuzione unimodale, espongo qui, molto succintamente, un
metodo da me proposto per la generazione di numeri casuali da
distribuzioni normali di ordine p, che dà luogo ad un algoritmo piuttosto
complesso ma estremamente veloce. Per una descrizione completa
dell’algoritmo, ed un confronto con altri algoritmi di generazione, si veda
il mio lavoro (Chiodi, 1995).
L’algoritmo si basa su una scomposizione dell’area sottesa dal ramo
positivo di una curva normale di ordine p (con p≥1) in 6 parti, come
descritto nella figura qui di seguito riportata.
110
Marcello Chiodi
A
B
f(x)
h(x)
b(x)
D
f(x f ) F N
C
M
H
G
E
f(x 2 )
O
0
x1
xf
x2
Figura 26 Generazione di numeri casuali da una distribuzione normale di
ordine p standardizzata (p = 1,5 nella figura) mediante tecnica di
compressione applicabile in tutti i casi in cui p≥1; suddivisione dell'area
sottesa da f(x) in sei zone, per valori di x positivi
Gli elementi chiave della scomposizione sono:
Ç C, punto di flesso di f(x);
Ç la retta t(x) tangente ad f(x) in C;
Ç A, punto di ordinata massima di f(x).
E' facile ricavare le coordinate dei vari punti che determinano la
scomposizione24. Pongo:
xf = (p-1)1/p, ascissa del punto di flesso C, tale che f''(xf) = 0;
x1: t(x1) = f(0), ascissa di B, punto di intersezione fra t(x) e la parallela
all'asse x passante per A;
x2 : t(x2) = 0, ascissa di E, punto di intersezione fra t(x) e l'asse x;
i punti A,B,C,D ed E e le loro coordinate sono così definiti:
A(0;f(0)); B(x1; f(0)); C(xf; f(xf)); D(x1; f(x1)); E(x2;0).
Gli ulteriori punti necessari e le rispettive coordinate sono:
F(0;f(xf)), G(xf;0), H(x2;f(x2)), M(xf,f(x2)), N(x1,f(xf) e O(0,0).
24
Ometto per brevità, i calcoli necessari per ricavare le coordinate dei vari punti della
scomposizione: sono comunque molto semplici perché è sufficiente uno studio elementare
della funzione di densità f(x) con x≥0 e p>1.
Tecniche di Simulazione in Statistica.
111
Così h(x) per x≤x2 è definita dalla spezzata ABCH, mentre b(x) è
definita dalla spezzata ADCE.
Quindi h(x) risulta:
• uniforme fra 0 e x1 , dove: h(x) = y0;
• triangolare in x1-xf, dove h(x) = yf+(x-xf)(y0-yf)/(x0-xf);
• ancora triangolare in xf-x2, dove h(x) = y2+(x-x2)(yf-y2)/(xf-x2);
• nella coda, per x > x2, si maggiora f(x) con:
p-1
p
• h(x) = y0 (x/x2) exp(-x /p),che è un'estensione al caso generale p≥1
di una tecnica proposta da Marsaglia per la generazione di numeri
casuali dalla distribuzione normale.
Seguendo ora la decomposizione mostrata nella figura 26, in cui
l'intera area sotto h(x) è divisa in sei parti, l'essenza dell'algoritmo è la
seguente (per non appesantire l'esposizione, l'intero algoritmo è
sintetizzato in appendice):
• Si genera un numero casuale uniforme U e si accetta come valore di X,
dopo un'opportuna trasformazione lineare, se U risulta inferiore alle
aree nomalizzate dei due rettangoli OFCG e GMHE;
• altrimenti, seconda del valore di U si calcola X per inversione dell'
appropriata distribuzione uniforme (rettangolo ABNF) o di una
distribuzione triangolare (triangoli CNB e HMC), o della curva
maggiorante della coda riportata in precedenza (nel caso in cui U
ricada nell'area sottesa da h(x) alla destra del segmento HE).
• quindi si genera V da una distribuzione uniforme e se b(x)/h(x) > V
(pre-test), si accetta X direttamente; altrimenti se f(x)/h(x) > V allora si
accetta X dopo un' assegnazione casuale del segno, altrimenti si rifiuta
X e si ricomincia con il passo 1. Evidentemente b(x) e h(x) sono
funzione del range di X secondo quanto esposto sopra.
I dettagli sull'algoritmo sono riportati in appendice.
Nella tavola seguente è riportata l'efficienza teorica (ossia la
probabilità di accettazione di X) di tale algoritmo per diversi valori di p:
come si vede dalla tavola tale efficienza è sempre piuttosto alta, dal
momento che h(x) segue molto bene f(x).
112
p
p
p
p
Marcello Chiodi
1,01
0,9462
2,75
0,9608
1,10
0,9344
3,00
0,9618
1,25
0,9362
4,00
0,9651
Efficienza teorica (p
1,50
0,9457
5,00
0,9682
1,75
0,9523
6,00
0,9711
2,00
0,9560
8,00
0,9756
2,25
0,9582
10,00
0,9791
2,50
0,9597
20,00
0,9880
dell'algoritmo di compressione per la
Tavola 23
generazione di numeri casuali da distribuzioni normali di ordine p, in
corrispondenza di 16 valori di p.
6.3.
Metodo di accettazione-rifiuto per variabili discrete
Per generare numeri pseudo-casuali dalla distribuzione di una
variabile aleatoria discreta con un numero finito k di modalità e con
probabilità pj (j = 1,2,…,k) non troppo diverse fra loro, si può usare una
procedura di accettazione-rifiuto, con una distribuzione maggiorante
uniforme discreta:
•
determinare inizialmente pmax = max pj
(j = 1,2,…k)
j
•
generare I da una distribuzione uniforme discreta nell'intervallo
[1; k], ossia tale che Prob{I = i} = 1/k (i = 1,2,…,k): si genera U
uniforme standard e poi: I = int(k· U+1);
•
generare un numero aleatorio Z distribuito uniformemente in
[0; pmax] con f(z) = 1/ pmax (si genera V uniforme standard e poi:
Z = V pmax)
•
se Z < pi si accetta X = xi,
altrimenti si torna a b) (oppure se V
è uniforme standard, si accetta X se V < pi/pmax)
La dimostrazione, che comunque riporto in forma succinta, ricalca da
vicino quella per variabili continue dotate di densità, con:
g(i) = pi/pmax.
Dim.: occorre calcolare la probabilità dell'evento {I = i}
condizionatamente al verificarsi della condizione di accettazione:
Prob{I = i ∩ Z< pi}
Prob{I = i ∩ Z< pi }
Prob{I = i|Z < pi} =
=
=
k
Prob{ Z<pi}
∑ Prob{I = i ∩ Z< pi }
i=1
Tecniche di Simulazione in Statistica.
=
113
(1/k)(pi / pmax)
=
k
∑ (1/k)(pi / pmax)
i=1
pi
k
= pi
∑ pi
i=1
L’efficienza teorica di tale metodo, ossia la probabilità complessiva di
accettare un numero I é data da:
=
k
k
i=1
i=1
∑ Prob{I = i ∩ Z < pi } = ∑ [(1/k)(pi./ pmax)] = 1/( k pmax),
per cui il numero medio di generazioni da effettuare per accettare un
numero I é dato da:
N = 1/ = k pmax,
e quindi cresce con pmax . A parità di numero di modalità l’efficienza
del metodo sarà maggiore per distribuzioni con probabilità modale
inferiore; ovviamente l’efficienza é massima nel caso banale in cui
pmax = 1/k (distribuzione discreta uniforme).
La logica che sta alla base di tale tecnica é più chiara con una
rappresentazione grafica e con alcuni esempi.
Rifiuto;
Accettazione
0.4
pmax
0.3
0.25
px
0,3
0,2
0.15
0,1
1
2
3
4
x
Figura 27. Esempio di generazione di numeri casuali da una distribuzione
discreta con un numero finito di modalità con distribuzione maggiorante
uniforme.
114
Marcello Chiodi
Nella tavola é rappresentata una distribuzione di probabilità di una v.a.
discreta, i cui valori sono riportati nella tavola che segue:
I
1
2
3
4
pi
0,25
0,30
0,40
0,05
pi/pmax
0,625
0,750
1,000
0,125
Viene prima generato un numero pseudo-casuale da una distribuzione
uniforme discreta nell' intervallo [1-4]. Successivamente, mediante un
numero casuale uniforme nell'intervallo (0,1) viene effettuato il test di
accettazione, la cui probabilità é data dal rapporto fra le linee verticali a
tratto continuo e la linea verticale di ordinata pmax. Il test di accettazione
(passo d dell’algoritmo prima descritto) in pratica serve per compensare
la differenza fra la distribuzione data e una distribuzione con probabilità
uguali.
Si opera come segue:
•
si genera U da una uniforme standard e quindi si pone I = int(4U+1),
per cui I è un intero compreso fra 1 e 4, con Prob{I = i} = 1/4;
•
si genera un altro numero uniforme standard V (test di accettazione) e
se V≤ pi / pmax si accetta I come proveniente dalla distribuzione in
oggetto.
Per distribuzioni discrete con un numero finito di modalità quali la
binomiale, si può determinare pmax senza necessità di calcolare tutte le pi.
Infatti pmax si ottiene in corrispondenza di x=Int(np+p).
6.3.1.
Variabili discrete con un numero di modalità non finito
Il metodo non è direttamente applicabile a v.a. discrete con un numero
di modalità non finito, seppure numerabile, per l'impossibilità di
utilizzare una distribuzione maggiorante uniforme:
• si potrà ricorrere ad una distribuzione maggiorante non uniforme.
• oppure, come si è detto per il metodo dell’inversione della funzione di
ripartizione, converrà suddividere l’insieme dei valori della X in due
insiemi, uno con un numero finito di modalità per una probabilità
complessiva di 1-ε, e l’altro con un numero non finito di modalità con
probabilità complessiva ε. Si procederà quindi a generare:
Ç dal primo insieme con probabilità 1-ε con il metodo ora
descritto di accettazione rifiuto,
Tecniche di Simulazione in Statistica.
115
con probabilità ε dal secondo insieme mediante, ad esempio,
inversione della funzione di ripartizione.
Un altro metodo, che comunque non esamino, è quello degli alias
introdotto da Walker (1977) con il quale viene generato un numero
casuale da una distribuzione discreta mediante una modifica del metodo
di accettazione-rifiuto che riutilizza i numeri rifiutati, e che porta ad
algoritmi molto efficienti che però richiedono, nella fase di
inizializzazione, il calcolo di alcune tavole ricavate dalla distribuzione di
probabilità.
Ç
6.3.2.
Esempio: generazione di numeri pseudo-casuali da una
distribuzione di Poisson
Supponiamo di voler generare numeri casuali I da una distribuzione di
Poisson di parametro λ=1,5. Non ho qui, né altrove in queste pagine, la
pretesa di fornire algoritmi ottimali25; voglio solo sottolineare che per
uno stesso problema di generazione di numeri casuali si possono
impiegare approcci completamente diversi che portano però allo stesso
risultato in termini di distribuzione teorica dei numeri casuali ottenuti: in
questo caso voglio far vedere come talvolta conviene adottare una
combinazione di tecniche per zone diverse di una distribuzione.
Nella tavola sono riportate nella seconda colonna le probabilità pi e
nella terza colonna le probabilità cumulate Fi. Come si vede dalla tavola,
se realmente si lavorasse con un’ approssimazione di cinque cifre
decimali, non sarebbe possibile generare valori superiori a 9. Questo
significa che nell’ implementazione di tale metodo occorre lavorare con
il massimo numero possibile di cifre significative esatte26, perché
25
26
Ricordo ancora che l'ottimalità di un algoritmo è funzione del numero di esecuzioni che si
prevede di dovere effettuare, della macchina su cui avverrà l'esecuzione, dell'ambiente
operativo, del linguaggio di programmazione usato, delle librerie di subroutines già
disponibili, del fatto che si prevedano ulteriori usi del programma, etc.
Apparentemente, si potrebbe credere che questa limitazione dovrebbe senz’altro portare a
preferire l’algoritmo descritto nel capitolo precedente, fondato sul prodotto di variabili
uniformi, per il quale non esiste questa limitazione sulla modalità massima ottenibile. Si
rifletta però sul fatto che l’esecuzione di diverse moltiplicazioni successive, comporta una
propagazione degli errori di arrotondamento! Queste considerazioni vanno sempre fatte,
tenuto conto che, ahinoi, lavoriamo con macchine con precisione comunque limitata, che
effettuano operazioni su numeri reali rappresentati, con un certo errore, con un numero di
cifre limitato.
116
Marcello Chiodi
altrimenti non vi sarebbe modo di ottenere le modalità rare, che peraltro
su una simulazione di grossa dimensione dovrebbero pur presentarsi!27
Inversione della funzione di ripartizione
con probabilità 0,06564
Accettazione rifiuto
con probabilità 0,93436
0.3347
P(X=x)
pmax
0.251
0.2231
0,2
0.1255
0,1
0.0471
0
0.0141 0.0035
0.0008 0.0001
0
1
2
3
4
5
6
7
8
0
9
10
x
Figura 28 Generazione di numeri casuali da una distribuzione di Poisson
(λ = 1,5) con tecnica mista.
pi
pi/pmax
Fi
i
0,66667
0
0,22313
0,22313
1,00000
1
0,33470
0,55783
0,75000
2
0,25102
0,80885
0,37500
3
0,12551
0,93436
0,14063
4
0,04707
0,98142
0,04219
5
0,01412
0,99554
0,01055
6
0,00353
0,99907
0,00226
7
0,00076
0,99983
0,00042
8
0,00014
0,99997
0,00007
9
0,00002
1,00000
0,00001
10
0,00000
1,00000
0,00000
11
0,00000
1,00000
Tavola 24 Distribuzione di Poisson con λ = 1,5: esempio di generazione di
numeri pseudo-casuali con una tecnica mista.
27
Se generiamo un milione di numeri casuali, mediamente 4 dovranno essere superiori a 9 (1F = 0,00000410), mentre con questa limitazione non potremmo ottenerne nemmeno uno!
9
Tecniche di Simulazione in Statistica.
117
Inoltre, se vogliamo utilizzare il metodo di accettazione-rifiuto,
converrà limitarlo alle prime modalità, diciamo fino ad I = 3, per evitare
probabilità di accettazione troppo basse. Per le altre modalità, i≥4,
selezionate con probabilità:
Prob{ I > 3} = ε = 1-0,93436 = 0,06564,
procediamo per mezzo dell’inversione della funzione di ripartizione,
in modo sequenziale, poiché queste risultano già ordinate secondo
probabilità decrescenti. Per il calcolo delle pi in questo caso si potrebbe
ricorrere al calcolo recursivo, mediante la nota formula:
pi+1 = piλ/(i+1);
con:
p0 = e-λ;
oppure, dato il numero limitato (i = 4,5,…,9), si può pensare di
calcolarle tutte in una fase di inizializzazione e tenerle memorizzate.
L’algoritmo sarà articolato secondo lo schema riportato nella pagina
che segue.
Si noti come al passo h), in caso di rifiuto di I, occorre generare un
altro numero U e ritornare a g). Se si tornasse a e) si altererebbe la
probabilità 1-ε di scelta del primo gruppo di modalità. Al primo
passaggio da g) si può sfruttare lo stesso U usato per scegliere fra i due
gruppi di modalità, avendo cura di dividerlo per 1-ε, per riportarlo al
range [0;1).
Si pensi che, per valori di λ più elevati, questo tipo di approccio,
certamente molto poco elegante analiticamente, risulta senz’altro più
conveniente computazionalmente di quello ricavato dal prodotto di
numeri uniformi, fondato su più elevate considerazioni in merito al
processo di Poisson, ma il cui tempo di calcolo è funzione crescente di λ.
118
Marcello Chiodi
Algoritmo 11
Generazione di numeri casuali da una
distribuzione di Poisson di parametro λ = 1,5.
Inizializzazione
a)
calcolo delle pi (i = 0,1,…,9);
b)
determinare pmax = 0,33470
c)
calcolo delle pi/pmax (i = 0,1,2,3)
d)
calcolo delle Fi (i = 4,5,…,xr)
Corpo dell'algoritmo
e)
Generare U da una uniforme standard.
f)
Se U > 0,93436, saltare al passo i) (coda della distribuzione,
I > 3) altrimenti porre U = U/0,93436 e proseguire col passo
g) (I≤3)
g)
Porre I = int(4 U)
h)
generare V da una uniforme standard e, se V*0,33470≤pi,
accettare I, e tornare a e) per un’altra generazione;
viceversa:
rifiutare I, generare un nuovo numero uniforme standard
U e tornare a g) per un altro tentativo di generazione di
una modalità inferiore a 4
i)
Porre I = 4
j)
Se U≤FI, I è il numero casuale cercato e si torna a e) per un
nuovo numero altrimenti:
k)
Porre I = I+1 e tornare al passo j)
6.4.
Metodi composti
Abbiamo già visto, nell’esempio sulla distribuzione di Poisson ed in
quello sulle curve normali di ordine p, come risulti conveniente adottare
metodi differenti per generare X, a seconda dell'insieme di valori cui
appartiene X. In generale, se possiamo scomporre una densità in modo
che:
k
f(x) =
∑ pifi(x),
i=1
k
con
∑ pi = 1
e pi > 0,
i = 1,2,…,k
i=1
in cui le singole componenti fi(x) sono delle densità e le pi
costituiscono una distribuzione di probabilità discreta, allora per generare
numeri casuali dalla distribuzione di densità f(· ) basterà generare un
indice j dalla distribuzione discreta di probabilità pi, e quindi generare X
Tecniche di Simulazione in Statistica.
119
dalla fj(· ) corrispondente a j. Il metodo è conveniente se si sa scomporre
f(x) in k componenti di modo tale che con probabilità pi elevata si generi
da distribuzioni fi(x) per le quali la generazione è semplice e veloce,
riservando ai casi più rari, ossia con pi piccolo, la generazione da
distribuzioni per le quali gli algoritmi sono più lunghi e complessi.
Si veda nella figura di seguito riportata, un esempio banale di
scomposizione dell'area sottesa da una f(x) (il ramo positivo di una
normale standard) in più parti: le zone a densità uniforme rappresentano
complessivamente l'80% dell'area; ciò significa che con questa
scomposizione l'80% delle volte (in media!) sarà sufficiente generare
numeri casuali con distribuzione uniforme negli intervalli opportuni. Con
probabilità 0,2 invece si dovrà generare un numero casuale da
distribuzioni più complesse: in ogni caso però una tecnica di
accettazione-rifiuto (applicata ad ogni singola area residua non uniforme
sottesa da f(x)) porterà a degli algoritmi molto efficienti.
0.8
80% dell'area totale
sottesa da f(x)
f(x)
0.6
0.4
0.2
0.0
0
1
2
3
4
x
Figura 29. Esempio di scomposizione di una densità (nella figura è
rappresentato il ramo positivo di una normale standard).
6.4.1.
Miscugli di distribuzioni
Evidentemente quanto detto sopra, a proposito dell'impiego di metodi
misti per la generazione di numeri pseudo-casuali, vale a maggior
ragione se f(x) è effettivamente un miscuglio di distribuzioni elementari,
120
Marcello Chiodi
ad esempio un miscuglio di due distribuzioni normali con medie e
varianze in generale differenti, con proporzione della prima distribuzione
uguale a p:
2
2
f(x) = p f1(x; µ1; σ1)+(1- p)f2(x; µ2; σ2)
Generato quindi un indicatore di evento E di parametro p, si genera un
numero casuale da una delle due distribuzioni normali, secondo del
valore di E. Sarà sufficiente generare un numero casuale normale
standardizzato Z, e quindi calcolare:
i = 1 se E = 1
X = µi+Zσi,
con: i = 2 se E = 0 .

6.5.
Rapporto di uniformi
Una tecnica sviluppata di recente e suscettibile di molte applicazioni,
è quella del rapporto di uniformi. Si è già visto che è possibile generare
un numero casuale da una distribuzione di Cauchy mediante rapporto di
due numeri U e V uniformi nell’intervallo [-1,1), subordinatamente alla
condizione U2+V2≤1.
In pratica vengono generati punti distribuiti uniformemente nella
regione delimitata dalla circonferenza di raggio unitario: il rapporto fra le
loro coordinate segue una distribuzione di Cauchy. La condizione
U2+V2≤1 serve solo a controllare che i punti stiano dentro la
circonferenza, perché è più semplice generare punti casualmente nel
rettangolo che circonda tale circonferenza.
Volendo cercare di estendere tale procedimento ad altre distribuzioni
di v.a. continue dotate di densità, è possibile che si possa ottenere tale
generalizzazione scegliendo opportunamente la regione in cui estrarre a
caso il punto di coordinate U,V. Iniziamo con un ragionamento basato su
proprietà geometriche, per ottenere la formula base.
Supponiamo di voler generare numeri casuali da una distribuzione di
densità f(x), e di volere utilizzare la trasformazione X = V/U, essendo U e
V le coordinate di un punto estratto a caso, con densità uniforme, in una
regione chiusa C. Quindi f(U,V) = 1/Area[C], condizionatamente al fatto
che [U,V] appartenga a C.
Utilizzando la tecnica sopra accennata, qual è la densità di X = V/U,
essendo V e U distribuiti uniformemente nella regione C? La scelta di C è
chiaramente determinante. Si veda la figura di seguito riportata:
Tecniche di Simulazione in Statistica.
Regione C
121
Prob{x ≤ X ≤ x + d x }
v
B
A
g(v/u)
O
Segmento con
v/u=x+dx costante
u
Segmento con
v/u=x costante
Minimo rettangolo contenente C
Figura 30 Costruzione della regione con densità uniforme per l'applicazione
del metodo del rapporto di uniformi: corrispondenza fra la densità di U,V e
quella di X.
Supponiamo per semplicità che i confini di questa regione C siano
espressi da una funzione limitata g(v/u) tale che u2+v2=[g(v/u)]2.
La funzione g(v/u) esprime quindi la distanza dall'origine dei punti
situati sul confine della regione C.
Dunque la regione C è costituita da tutti i punti P(u,v) tali che:
{u≥0; u2+v2≤[g(v/u)]2}.
L’evento {X = x}, ossia{X = v/u}, è individuato sul piano (u,v) dai
punti del segmento di retta OA, per il quale ovviamente v/u è costante;
l’evento {X = x+dx}, ossia {X = v/u+d(v/u)} è analogamente individuato
sul piano u,v dai punti del segmento di retta OB. Questi due segmenti
formano un angolo in O indicato con θ.
Data l'uniformità della distribuzione dei punti in C, la probabilità
dell’evento {x≤X≤x+dx} è proporzionale all’area della regione AOB,
racchiusa dai due segmenti OA, OB e dal tratto del contorno della
regione C che unisce A e B. Supponendo dx molto piccolo, possiamo
approssimare tale area con l’area del triangolo AOB, a meno di un
infinitesimo di ordine superiore rispetto a (dx)2, oppure con l’area del
settore circolare di centro O, raggio OA e angolo θ.
122
Marcello Chiodi
Quest’ultima area è data da:
Area(AOB) ≅ (OA)2θ = [g(x)]2 [arctg(x+dx)-arctg(x)] ≅
≅ [g(x)]2 dx/(1+x2).
La sostituzione di dx/(1+x2) per θ fornisce, come è noto, un
approssimazione dell'incremento di arc tg x di un infinitesimo di ordine
d arc tg x
1
superiore rispetto a dx, essendo:
= 1+x2
dx
In definitiva abbiamo:
Prob{x≤X≤x+dx}∝[g(x)]2dx/(1+x2).
Con lo stesso ordine di approssimazione, essendo la v.a. X dotata di
densità f(x), vale la nota relazione:
Prob{x≤X≤x+dx}≅f(x)dx.
In conclusione possiamo scrivere:
[g(x)]2dx/(1+x2) ∝ f(x)dx,
e
[g(x)]2 = k f(x)(1+x2),
essendo k una costante che non dipende da x.
Ritornando ai punti che costituiscono la regione C si ottiene:
u≥0
e u2+v2≤[g(v/u)]2 = k f(v/u)(1+v2/u2),
per cui, prendendo il primo e l'ultimo membro di questa ultima relazione:
u2+v2≤ k f(v/u)(1+v2/u2),
u2+v2 ≤ k f(v/u)(u2+v2)/u2, ed infine:
u2 ≤ k f(v/u).
Dato che nella regione C per costruzione si ha sempre u≥0, otteniamo
in definitiva:
Regione C per il rapporto di uniformi.
C: {(u,v)| 0 ≤ u ≤ k f(v/u) }
Pertanto la regione C è delimitata da una funzione che deve risultare
proporzionale alla radice della densità della v.a. X. La presenza della
costante di proporzionalità è ovvia se si pensa che ciò che conta è la
forma della regione C, e non la sua dimensione: infatti la densità dei
punti in C è uguale a 1/Area[C], per cui è irrilevante la scelta del fattore
di proporzionalità. Si pensi anche che se X = V/U allora: X = (aV)/(aU),
essendo a≠0 una qualsiasi costante.
Tecniche di Simulazione in Statistica.
123
Per la generazione di un punto aleatorio con distribuzione uniforme in
C, il metodo più semplice è:
• circoscrivere C con un rettangolo R con lati paralleli agli assi
coordinati (e si può fare solo se la regione C è limitata: ciò avviene se
f(x) e x2f(x) sono limitati);
• generare le due coordinate U e V uniformemente lungo i lati del
rettangolo, così che il punto è generato all’interno del rettangolo;
• quindi si accetta il punto se questo cade anche all’interno di C e si
calcola X = V/U.
L'efficienza di tale generazione in C è data da:
Area(C)/Area(R).
In casi particolari è possibile circondare la regione C con poligonali
non rettangolari (ad esempio triangolari o quadrangolari).
La minima regione rettangolare R che contiene C è costituita dai punti
u,v tali che:
0 ≤ u ≤ max u;
con:
min v ≤ v ≤ max v,
max u = sup h(x) ; min v = inf x h(x) ; max v = sup x h(x)
x
x<0
x ≥0
se max u, min v e max v risultano limitati, e avendo posto h(x) = k f(x).
Di seguito riporto alcuni esempi; i passaggi algebrici necessari per la
determinazione dei contorni di C ed R, sebbene banali nella sostanza, per
particolari distribuzioni possono essere lunghi: in questi casi ritengo utile
il ricorso a software di manipolazione simbolica (computer algebra
software).
6.5.1.
Distribuzione di Cauchy
Per la distribuzione di Cauchy, con densità:
1
1
f(x) =
2 ,
2 , proporzionale a: h(x) =
(1+x
)
π(1+x )
la regione C è delimitata da:
k f(x) = h(x) = 1/ (1+x2) = 1/ (1+(v/u)2) = u/ (u2+v2) ;
da cui la condizione:
u ≤ u/ (u2+v2) e quindi: u2+v2≤1
L’efficienza del metodo è ovviamente data da:
124
Marcello Chiodi
= Area(C)/Area(R) = π/4.
0.8
h(x+dx)
h(x)
0.6
0.4
V
0.2
0.0
-0.2
-0.4
-0.6
-0.8
0.0
0.2
0.4
0.6
0.8
1.0
U
Figura 31 Esempio di applicazione del metodo del rapporto di uniformi:
corrispondenza fra la densità di u,v e quella di x per una distribuzione
normale.
6.5.2.
Distribuzione Normale
Per la distribuzione normale la regione C (si veda la figura sopra
riportata) è delimitata da:
0 ≤ u ≤ h(x) = k f(v/u) = exp [-(v/u)2/2] ;
da cui la condizione:
0 ≤ u ≤ exp[-v2/(4u2)],
ed infine: |v| ≤ -2u log u
Per determinare la minima regione rettangolare R che racchiude C,
dopo alcuni passaggi si giunge a:
max u = 1; min v = - 2/e ; max v = 2/e ;
Area(C) = - π/2 ;
Area(R) = 2 2/e
e quindi l’efficienza del metodo è:
= Area(C)/Area(R) =
πe /4 ≅ 0,7306.
Tecniche di Simulazione in Statistica.
6.5.3.
125
Distribuzione Gamma (c > 1 e λ = 1)
Per la distribuzione Gamma (con parametro di scala λ unitario) mi
limito a considerare il caso con c > 1, poiché la regione C risulta chiusa,
mentre per c < 1 f(x) non è limitata. Si può scegliere:
h(x) = xc-1 e-x
e quindi la regione C risulta formata dai punti u,v per i quali:
0 < u ≤ h(v/u) = (v/u)(c-1)/2 e-v/(2u),
v>0
Per determinare la minima regione rettangolare R che racchiude C con
alcuni passaggi si giunge a:
c-1
max u =  e 
 
(c-1)/2
c+1
; min v = 0; max v =  e 


Area(C) = Γ(c)/2; Area(R) = max u max v = (c -1)
2
c/2
(c+1)/2
;
c+1
e 

 c-1 
1/2
-c
L’efficienza del metodo è data al solito da: = Area(C)/Area(R).
Nella tavola sottostante sono riportati i valori di in corrispondenza di
alcuni valori di c. Per valori elevati di c, si utilizza la formula di Stirling
per approssimare Γ(c) e si dimostra che:
≅
π/(2c)
per cui: lim 0,
c→∞
per cui la tecnica risulta efficiente solo per valori non troppo elevati di c,
come si vede peraltro dalla tavola che segue.
c c →1+
(
1,5
0,680 0,751
2
3
5
10
20
50
0,711 0,628 0,515 0,380 0,274 0,176
100
∞
0,125
0
Tavola 25 Efficienza del metodo del rapporto di uniformi per la distribuzione
Gamma per diversi valori di c (c > 1).
In effetti si può ottenere un algoritmo più efficiente, per valori elevati
di c, circoscrivendo la regione C con un parallelogramma con lati
tangenti al contorno di C, come proposto da Cheng e Feast (1979).
6.5.4.
Generalizzazione della tecnica del rapporto di uniformi
La tecnica del rapporto di uniformi, qui vista nella sua forma più
elementare, è suscettibile di generalizzazioni di vario tipo.
126
Marcello Chiodi
Per ottenere numeri casuali X da una distribuzione di densità
proporzionale ad h(x) e definita in un intervallo (a,b), una importante
generalizzazione (Wakefield et al.,1991; Barabesi, 1993b) viene dal
considerare, in luogo di X = V/U, una trasformazione più generale del
tipo:
X = V/g'(U)+µ
in cui: µ è una costante;
g(u) è una funzione derivabile strettamente crescente e g(0) = 0;
U e V sono distribuiti uniformemente in una regione C così definita:
C:{u,v| 0 < u ≤ g-1[k h(v/g'(u)+µ)], a < v/g'(u)+µ < b}
essendo k una costante e g-1(· ) la funzione inversa di g(· ).
Il metodo del rapporto di uniformi nella sua versione originaria
descritta prima si ottiene per µ = 0, k = 1/2, g(u) = u2/2, e quindi
g'(u) = u. Molto spesso si utilizza la trasformazione di potenza
g(u) = ur+1/(r+1).
L'utilità di tale generalizzazione risiede nella possibilità di trovare, per
ogni particolare distribuzione, una funzione g(· ) ed una costante µ che
determinino una regione C da cui si possono generare numeri uniformi in
modo efficiente. Poichè in generale si circoscriverà C con una regione
rettangolare R, si possono scegliere r e µ (Barabesi, 1993b) in modo da
massimizzare l'efficienza = |C|/|R|.
6.5.5.
Miglioramenti della tecnica del rapporto di uniformi
I miglioramenti possibili per aumentare l'efficienza degli algoritmi
fondati sul rapporto di uniformi, oltre quello citato nel paragrafo
precedente, sono in generale di due tipi:
• circoscrivere C con una regione P poligonale non rettangolare, in
modo da lavorare con un'efficienza |C|/|P| il più possibile vicina ad
uno. Occorrerà ovviamente saper generare numeri uniformi in P in
modo semplice, come accade ad esempio se P è un triangolo o un
parallelogramma.
• Trovare dei pre-test fondati su funzioni semplici, per utilizzare la
tecnica generale di compressione per i metodi di accettazione rifiuto.
Geometricamente ciò consiste nell'inscrivere una regione in C che
abbia dei confini di espressione analitica semplice.
Tecniche di Simulazione in Statistica.
6.5.6.
127
Cenni su altre tecniche di accettazione-rifiuto
La tecnica "exact-approssimation" di Marsaglia (1984) impiega una
tecnica mista: si approssima l'inversa della funzione di ripartizione F-1(U)
con una funzione g(· ) semplice da calcolare; quindi si genera X da un
miscuglio di densità: p g(x) +(1-p) r(x) in maniera tale che se p è vicino
ad uno la maggior parte delle volte si genera facilmente mediante g(U).
In una frazione piccola dei casi (1-p) si genera dalla distribuzione di
densità r(x), che tiene conto del fatto che g(U) non è l'esatta inversa di
f(X).
Un'altra tecnica ancora dovuta a Marsaglia (1998), nella versione
originaria proposta per rami decrescenti di distribuzioni simmetriche, è
stata chiamata metodo Monthy Python. Viene divisa in tre parti l'area
sottesa da una funzione di densità decrescente sigmoidale, e quindi, con
opportuni cambiamenti di scala, e rotazioni di porzioni di aree, si fa in
modo di racchiuderla entro un rettangolo di area unitaria. Si genera
quindi un punto da una distribuione uniforme entro tale rettangolo, e
successivamente si effettua un test di accettazione, per controllare se
accettare X o una sua trasformata lineare.
128
Marcello Chiodi
7. Generazione di vettori di numeri pseudo-casuali
Quanto detto finora sulla generazione di numeri casuali da
distribuzioni univariate, può estendersi solo in parte alla generazione di
vettori di numeri pseudo-casuali X da distribuzioni multivariate. Se
occorre generare vettori X a n componenti indipendenti basterà ottenere
n-ple di numeri casuali indipendenti ed in questo modo avremo simulato
l’estrazione di campioni casuali semplici di ampiezza n; nel caso
generale invece di componenti non indipendenti si dovrà far ricorso a
metodi particolari secondo le variabili da generare e secondo il tipo di
dipendenza fra le varie componenti.
Si tenga presente che per la generazione di vettori di numeri pseudocasuali:
• La tecnica di inversione della funzione di ripartizione non è
applicabile direttamente perché F(X1,X2,…,Xn) = U non ha in
generale una soluzione {X1,X2,…,Xn} unica.
• Si possono generare vettori di numeri pseudo-casuali mediante
trasformazioni di variabili aleatorie multiple, se si conoscono delle
trasformazioni che consentono di passare dal vettore aleatorio X, di
cui si sanno generare vettori pseudo-casuali, al vettore aleatorio Y di
cui si vogliono determinazioni pseudo-casuali.
• Le tecniche di accettazione-rifiuto sono in generale applicabili, anche
se non sempre portano ad algoritmi efficienti; nel caso di variabili
aleatorie multiple definite su domini limitati e dotate di densità
limitata, si ottiene un algoritmo semplice, ma non necessariamente
efficiente, utilizzando una distribuzione maggiorante uniforme. Si
vedrà più avanti un’applicazione di tale tecnica per la generazione di
coppie di numeri pseudo-casuali da distribuzioni bivariate discrete.
Per vettori aleatori qualsiasi una scelta ovvia è data da una
distribuzione maggiorante h(· ) proporzionale al prodotto delle densità
marginali delle singole componenti: tuttavia all’aumentare della
dipendenza fra le n componenti di X, diminuisce la vicinanza fra h(· )
ed f(· ) e quindi l’efficienza dell’algoritmo tende a zero.
• La tecnica del rapporto di uniformi è generalizzabile al caso
multivariato (Barabesi, 1993).
Una tecnica piuttosto generale è quella che fa ricorso alle distribuzioni
condizionate (Rosenblatt,1952). Se X è un vettore di n variabili aleatorie
Tecniche di Simulazione in Statistica.
129
dotate di densità, la densità congiunta può essere espressa in funzione
delle densità condizionate di ciascuna delle componenti:
f(x1,x2,…,xn)=f(xn|x1,x2,…,xn-1)f(xn-1|x1,x2,…,xn-2)…f(x3|x1,x2)f(x2|x1)f(x1)
L'utilità di questa scomposizione è legata al fatto che si sappiano
generare numeri casuali da tutte le n distribuzioni univariate condizionate
e per qualsiasi combinazione di determinazioni xi delle variabili
condizionanti. Se ciò è possibile:
ƒsi genera un numero casuale X1* dalla distribuzione di densità f(x1);
ƒpoi si genera X2* dalla distribuzione di densità f(x2|X1*);
ƒsi procede in questo modo fino alla generazione dell'ultima
componente, Xn* dalla distribuzione di densità f(xn|X1*,X2*,…,Xn-1*).
ƒX1*,X2*,…,Xn-1*,Xn* è un vettore casuale dalla distribuzione n-variata
di densità congiunta f(x1,x2,…,xn).
Un’altra tecnica (Boswell et al. 1993) per generare vettori aleatori da
una distribuzione multivariata qualsiasi, di cui si conosca la densità f(x) a
meno di una costante di normalizzazione, consiste nel fare in modo che la
distribuzione desiderata sia la distribuzione d’equilibrio di una catena di
Markov, iniziando il procedimento da una densità g(x|y) che approssima
f(· ) in un intorno di y.
Un altro approccio concettualmente diverso (Cheng, 1984) per la
generazione di campioni casuali X={X1,X2,…,Xn} da particolari
distribuzioni, consiste nel generare determinazioni pseudo-casuali ad
esempio di due funzioni t1(X) e t2(X), che sono due funzioni note dei
valori campionari. Si genera poi X dalla distribuzione condizionata di X
dati t1 e t2.
In questo capitolo mi limito ad esporre solo alcuni casi elementari di
generazione di vettori di numeri pseudo-casuali da particolari
distribuzioni multivariate.
7.1.
Distribuzioni a contorni ellissoidali
Se X è un vettore aleatorio a p componenti con distribuzione dotata di
densità, µ è un vettore reale a p componenti, e Σ una matrice p×p reale
definita positiva, X ha una distribuzione a contorni ellissoidali se la sua
densità può essere posta nella forma:
130
Marcello Chiodi
f ( x) =
kp
g[( x − µ )' −1 ( x − µ )],
x∈ℜ
ℜp
essendo kp una costante di normalizzazione e g(u) una funzione reale
indipendente da p, con u∈ℜ
ℜ1.
E' evidente che la distribuzione normale multivariata rientra in questa
classe di distribuzioni, ponendo nella formula precedente:
kp = 1/(2π)p/2 e g(u) = e-u/2.
Se X è un vettore aleatorio che si distribuisce secondo una
distribuzione con contorni ellissoidali con parametri µX = 0 e ΣX = I, e
quindi con densità data da:
f(x) = kpg(x'x)
e se A è una matrice tale che AA' = ΣY, allora il vettore aleatorio Y
dato da:
Y = AX+µY
ha ancora una distribuzione a contorni ellissoidali caratterizzata dalla
stessa funzione g(· ), ma con parametri µY e ΣY; il risultato è di facile
dimostrazione, dal momento che lo jacobiano della trasformazione è |A|;
X ha una distribuzione a contorni sferici, per cui il significato geometrico
della trasformazione è chiaro. Pertanto per generare vettori di numeri
pseudo-casuali da una famiglia a contorni ellissoidali caratterizzata da
una particolare funzione g(u), con parametri µ e Σ qualsiasi, è sufficiente
quindi saper risolvere il problema nel caso sferico, e poi operare la
trasformazione lineare Y = A X+µY.
Per generare X dalla distribuzione con contorni ipersferici si può
ricorrere per esempio alla scomposizione:
X = RU(p)
(p)
in cui U è un vettore casuale distribuito uniformemente sull' ipersfera
di raggio unitario e centro nell'origine; R è una variabile casuale scalare
distribuita come
X'X (Johnson,1987). Si noti l'analogia con
l'impostazione geometrica della formula di Box-Muller, e si riveda
eventualmente la figura nel capitolo 5: in quel caso avevamo infatti, con
p = 2:
ƒR una variabile casuale il cui quadrato è distribuito come una χ22;
ƒU(p) un vettore casuale distribuito uniformemente lungo una
circonferenza di raggio unitario.
Tecniche di Simulazione in Statistica.
7.2.
131
Generazione di vettori casuali da una distribuzione
normale multivariata qualsiasi
Se X è un qualsiasi vettore aleatorio a p componenti, per il quale esiste
il vettore di speranze matematiche E(X) e la matrice di varianze e
covarianze V(X), e se Y = A X+b è una sua qualsiasi trasformata lineare
si ha sempre:
V(Y) = AV(X)A'
E(Y) = Aµ+b
e
essendo A una matrice di k×p elementi, b un vettore colonna di k
elementi.
Pertanto, per generare vettori casuali Y a p componenti da una
normale multivariata di parametri µY e ΣY e di densità:
f ( y; µ Y , Y ) =
1
(2π ) p Y
e
−[( y − Y )'Y−1 ( y − Y )] / 2
,
di speranza matematica µY e matrice di varianza e covarianza ΣY, è
sufficiente determinare prima una matrice A radice quadrata di ΣY, ossia
tale che:
A A' = ΣY,
e quindi generare, con un metodo qualsiasi, un vettore X costituito da
p numeri pseudo-casuali normali standardizzati indipendenti e porre:
Y = A X+µY.
E' facile verificare che tale vettore ha le caratteristiche richieste, dato
che E(X) = 0, e V(X) = I, e che una combinazione lineare di variabili
normali è ancora normale.
Per il caso bivariato, per trasformare una coppia di numeri pseudocasuali normali indipendenti standardizzati (X1,X2) in una coppia di
numeri pseudo-casuali normali (Y1,Y2) con correlazione teorica ρ, ed
ancora a varianza unitaria, è semplicissimo ricavare le due nuove
variabili:
Y1 = X1
Y2 = ρX1+ 1-ρ2 X2.
Anche senza applicare la regola generale per vettori a p componenti, si
verifica direttamente che:
132
Marcello Chiodi
V(Y2) = ρ2V(X1)+(1-ρ2)V(X2)+ ρ
Cov(Y1,Y2) =
1-ρ2 Cov(X1,X2) = 1;
ρE(X²i )+ 1-ρ2 E(X1,X2) = ρ
Figura 32 Densità di due distribuzioni normali bivariate standardizzate e 200
coppie di numeri pseudo-casuali corrispondenti (ρ = 0 a sinistra e ρ = 0,8 a
destra).
Nella figura sopra sono riportate le densità di due distribuzioni
normali bivariate, una con componenti indipendenti ed una con
correlazione teorica di 0,8. Nei due grafici sono riportate anche duecento
coppie di numeri pseudo-casuali generati dalle rispettive distribuzioni: la
trasformata lineare che trasforma le coordinate dei numeri pseudo-casuali
è la stessa che trasforma il vettore aleatorio X nel vettore aleatorio Y.
Nel caso generale di una matrice di varianza e covarianza ΣY di un
vettore aleatorio con un numero qualsiasi di componenti, occorre trovare
una matrice A tale che: AA' = ΣY; è possibile far questo ad esempio, data
la simmetria e la positività di ΣY, mediante la decomposizione di
Cholesky, che determina una opportuna matrice A triangolare inferiore:
tutti i packages e i linguaggi matematico-statistici contengono delle
buone routines per determinare tale matrice A; inoltre molti packages
hanno delle routines per la generazione di numeri casuali da distribuzioni
normali multivariate qualsiasi. Ad esempio si supponga di voler generare
vettori Y di numeri pseudo-casuali da una distribuzione normale a 4
variabili con vettore delle medie nullo e matrice di varianze e covarianze
ΣY data da:
Tecniche di Simulazione in Statistica.
ΣY=
1,00
0,90
0,90
0,80
0,90
1,00
0,90
0,90
133
0,90
0,90
1,00
0,90
0,80
0,90
0,90
1,00
Ad esempio si potrebbero simulare modelli di regressione lineare
multipla con un certo grado di collinearità fra i regressori; infatti gli
autovalori di ΣY sono: λ1 = 3,651; λ2 = 0,2; λ3 = 0,1; λ4 = 0,049.
La matrice A è riportata qui di seguito:
A=
1,00000000
0,90000000
0,90000000
0,80000000
0,00000000
0,43588989
0,20647416
0,41294832
0,00000000
0,00000000
0,38388595
0,24678382
0,00000000
0,00000000
0,00000000
0,35856858
Pertanto per ottenere una sequenza di m vettori pseudo-casuali Yi
(i = 1,2,…,m) si dovranno generare vettori pseudo-casuali Xi da una
normale standardizzata a 4 componenti indipendenti, ad esempio
applicando due volte la formula di Box-Muller, e quindi trasformare
ciascun vettore Xi con la relazione:
Yi = A Xi (i = 1,2,…,m)
Va notato che per la generazione di ciascuna sequenza di m vettori
pseudo-casuali, la matrice A va calcolata una sola volta in una fase di
inizializzazione. Ad esempio in Mathematica l'esecuzione della funzione
RandomArray[Distribuzione,m] è molto più veloce dell'esecuzione di m
chiamate della funzione Random[Distribuzione].
7.3.
Miscugli di distribuzioni normali multivariate
E' facile generalizzare ancora alla generazione di vettori di numeri
pseudo-casuali da miscugli di distribuzioni normali multivariate, utili
spesso per simulare insiemi di dati eterogenei su cui sperimentare il
comportamento di algoritmi di analisi dei gruppi, o che fungano da
campione simulato per l'applicazione di tecniche di analisi discriminante.
La densità di un miscuglio di k distribuzioni multivariate normali a p
componenti è data da:
k
f(x) =
∑ pi fi (x;µi;Σi)
i=1
k
con:
∑ pi = 1
i=1
134
Marcello Chiodi
in cui le singole componenti fi(⋅) sono le densità delle k distribuzioni
normali; le pi costituiscono una distribuzione di probabilità discreta. Per
generare un numero casuale da tale miscuglio di distribuzioni occorre:
generare un indice j dalla distribuzione discreta di probabilità pi,
•
ossia generare un numero pseudo casuale dalla distribuzione di
modalità i = 1,2,…,k e probabilità pi, per inversione della funzione di
ripartizione, per accettazione rifiuto, o altro;
generare quindi il vettore pseudo-casuale Y dalla fj(⋅) corrispondente
•
a j, operando per esempio col metodo visto nel paragrafo precedente,
ossia generando un vettore pseudo-casuale da una normale
multivariata di parametri µj e Σj, con una trasformazione lineare di un
vettore X generato da una normale standardizzata: Y = AjX+µj,
essendo la matrice Aj tale che: AjAj' = Σj.
Un procedimento alternativo per generare un campione di n vettori
pseudo-casuali dal miscuglio di k distribuzioni normali p-variate, è il
seguente:
ƒSi genera un vettore di n numeri pseudo-casuali dalla distribuzione
discreta di probabilità pi e di modalità i = 1,2,…,k.
ƒSi ricava la distribuzione di frequenza n1,n2,…, ni ,…,nk, dei k indici
(oppure si utilizza il metodo riportato più avanti per ricavare vettori
aleatori da una distribuzione multinomiale!)
ƒPer ciascuna delle k componenti si genera una matrice Ti di ni vettori
di numeri pseudo-casuali da una normale p-variata a componenti
standardizzate; ciascuna matrice Ti di p righe e ni colonne va
trasformata linearmente mediante le matrici Ai e µi della i-esima
componente, ossia con: Wi = AiTi +µj1'ni, in cui 1'ni è un vettore di ni
elementi tutti uguali ad 1 e Wi risulta quindi di p righe e ni colonne.
ƒL'accostamento delle k matrici Wi fornisce gli n vettori pseudocasuali richiesti.
L'utilità del ricorso a questa variante è strettamente dipendente dal
software e dalle librerie di programmi a disposizione, ossia ad esempio se
si hanno già a disposizione routines per la generazioni di vettori di
numeri pseudo-casuali; un altro aspetto rilevante è l'entità di n e p, perché
la manipolazione e la memorizzazione di matrici richieste dal secondo
metodo può essere ardua o impossibile per valori di n e/o p elevati.
Tecniche di Simulazione in Statistica.
7.3.1.
135
Esempi
Consideriamo per esempio un miscuglio di tre distribuzioni normali
bivariate con i seguenti parametri:
probabilità di appartenenza: p1 = 0,3; p2 = 0,4; p3 = 0,3;
e valori dei parametri delle tre distribuzioni componenti:
Distribuzione 1
Distribuzione 2
Distribuzione 3
-3
1
0,3
0
1
0
4
1 0,3
µ1 = -3; Σ1=0,3 1  µ2 =  0; Σ2= 0 1
µ3 = 0; Σ3=0,3 1 
Nella figura che segue è riportata la densità di tale miscuglio, mentre
accanto è invece riportato il diagramma di dispersione di 2000 vettori
bivariati pseudo-casuali generati da tale miscuglio.
6
4
0.06
2
0.04
5
Y
0.02
0
0
0
-5
0
-2
-4
-5
5
-6
-6
-4
-2
0
2
4
6
X
Figura 33 Densità di un miscuglio di 3 distribuzioni normali bivariate (a
sinistra) e distribuzione di 2000 vettori di numeri pseuso-casuali generati da
tale miscuglio (a destra).
Per la generazione di ciascun vettore bivariato si può operare come
segue:
ƒSi genera un numero pseudo-casuale I dalla distribuzione di
probabilità pi, mediante inversione della funzione di ripartizione.
ƒQuindi si genera una coppia di numeri pseudo-casuali da una
normale bivariata standardizzata (con la formula di Box-Muller o
con quella di Marsaglia o con qualsiasi altra tecnica).
ƒSi trasforma la coppia in funzione del vettore delle medie e della
matrice di varianza e covarianza della popolazione I.
136
Marcello Chiodi
In questo esempio le tre popolazioni risultano sufficientemente
separate: l'esame empirico della figura porta a pensare che con un
campione sufficientemente grande sarà relativamente agevole identificare
la vera struttura della popolazione mista da cui provengono i dati; dal
grafico sembrano facilmente identificabili le tre popolazioni.
Il secondo esempio riguarda un miscuglio di due distribuzioni normali
bivariate con parametri: p1 = 0,5; p2 = 0,5;
e valori dei parametri delle due distribuzioni componenti:
Distribuzione 1
Distribuzione 2
0
1 0,5
2
1 0,3
µ1 =  0; Σ1=0,5 1 
µ2 =  2; Σ2=0,3 1 
Accanto sono rappresentati 2000 vettori bivariati pseudo-casuali,
generati da tale miscuglio di distribuzioni.
4
2
0.075
2
Y
4
0.05
0.025
0
0
0
-4
-2
-2
0
2
-2
-4
4
-4
-4
-2
0
2
4
X
Figura 34 Densità di un miscuglio di 2 distribuzioni normali bivariate (a
sinistra) e distribuzione di 2000 vettori di numeri pseuso-casuali generati da
tale miscuglio (a destra).
A differenza del caso precedente, stavolta le due distribuzioni sono
poco separate, tanto che, esaminando la nuvola dei punti generati da tale
distribuzione, non sarebbe facile identificare l'esistenza di due
componenti.
Tecniche di Simulazione in Statistica.
7.4.
137
Generazione di vettori casuali da una particolare
distribuzione beta multivariata (distribuzione di Dirichlet)
La distribuzione di Dirichlet a k componenti, che costituisce una
particolare generalizzazione multivariata della distribuzione Beta, è
definita come segue:
• Date k+1 v.a. indipendenti Xi (i = 0,1,2,…,k), ciascuna con
distribuzione Gamma con lo stesso parametro di scala λ e di parametri
di forma ci; ci>0, i = 0,1,2,…,k;
•
k
∑ Xi, la distribuzione di
indicata con S la loro somma, S =
i=0
Dirichlet è la distribuzione congiunta delle k nuove variabili definite
dalle relazioni:
Yi = Xi/S
i = 1,2,…,k.
La densità di tale distribuzione è data da:
k
f(y1,y2,…,yk) = ∏ yi
i=1
ci-1
k
[1- ∑ yi]
c0-1
k
k
i=0
i=0
Γ( ∑ ci)/ ∏ Γ(ci),
i=1
ed è definita sul simplesso: yi≥0, i = 1,2,…,k;
k
∑ yi≤1.
i=1
Questa distribuzione è importante ad esempio per la descrizione della
distribuzione simultanea di rapporti di composizione; si vedano nelle
figure che seguono, per il caso bivariato, alcuni esempi di densità per
diverse combinazioni dei parametri c0, c1 e c2. Tutte le distribuzioni
marginali univariate e tutte le distribuzioni condizionate sono delle
distribuzioni Beta; le funzioni di regressione risultano lineari ma
eteroscedastiche.
Per la generazione di vettori di numeri pseudo-casuali da questa
distribuzione multivariata, a seconda dei valori dei parametri ci, si
possono adottare diversi metodi, che spesso sono generalizzazioni dei
corrispondenti metodi per la generazione di numeri pseudo-casuali da
distribuzioni beta univariate. Qui mi limito ad accennarne solo alcuni,
ricavabili da quelli descritti nei precedenti capitoli per il caso univariato.
La tecnica più semplice consiste nel generare le componenti Yi
seguendo esattamente la definizione della variabile multipla di Dirichlet.
Pertanto si generano k+1 numeri casuali Xi (i = 0,1,2,…,k) indipendenti
138
Marcello Chiodi
da altrettante distribuzioni gamma univariate ciascuna con parametro di
forma ci, se ne calcola la somma S e quindi si ottengono i numeri
Yi = Xi/S (i = 1,2,…,k). Questa tecnica può essere computazionalmente
poco conveniente, ma è di facile implementazione se si hanno già a
disposizione delle buone librerie di programmi per la generazione di
numeri pseudo-casuali da distribuzioni gamma univariate.
Oppure si può ricorrere ad una generalizzazione della tecnica di Johnk
vista nel 5° capitolo per la generazione di numeri casuali da distribuzioni
beta univariate: la generalizzazione è abbastanza intuitiva e ne ometto la
dimostrazione per brevità:
• Si generano k+1 numeri casuali Ui (i = 0,1,…,k) indipendenti da una
distribuzione uniforme;
1/c
• si ottengono k+1 variabili trasformate, Zi = Ui i;
•
k
condizionatamente a T =
∑ Zi≤1,
i=0
Yi = Zi/T (i = 1,2,…,k) è la i-esima componente del vettore di numeri
pseudo-casuali da una distribuzione di Dirichlet.
L'efficienza di tale metodo è data da:
=
k
k
k
i=0
i=0
i=0
∏ ciΓ(ci)/ ∑ ciΓ( ∑ ci)
e tende a 0 al divergere dei parametri ci. Ad esempio se tutti i
parametri sono uguali all'unità, caso comunque banale, perché
corrisponde ad una densità uniforme sul simplesso, l'efficienza è data da:
= 1/(k+1)!.
Nel caso in cui la densità risulta limitata, si può procedere alla
generazione di vettori pseudo-casuali mediante una tecnica di
accettazione-rifiuto, utilizzando una funzione maggiorante uniforme.
Infatti, se ci≥1 (i = 0,1,….,k) con ci>1 per almeno un indice i, la densità
ha sempre un massimo unico in corrispondenza di:
k
yi* = (ci-1)/ ∑ (ci-1), (i = 1,2,…,k) con:
i=0
k
k
k
 k
c -1
Σ (c -1
fmax = f(y1*,y2*,…,yk*) =  ∏ (ci-1) i / [ ∑ (ci-1)] i  Γ( ∑ ci)/ ∏ Γ(ci).


i=0
i=0
 i=0 i=0
Tecniche di Simulazione in Statistica.
139
6
1
4
0.8
2
0.6
0
0.4
0.2
0.2
0.4
0.6
0.8
1
Figura 35 Densità di una distribuzione bivariata di Dirichlet con c0 = 1,5;
c1 = 0,9; c2, = 1,5 (a sinistra) e 500 coppie di numeri pseudo-casuali (a
destra) generati dalla stessa distribuzione
4
1
0.8
2
0.6
0
0.4
0.2
0.2
0.4
0.6
0.8
1
Figura 36 Densità di una distribuzione bivariata di Dirichlet con c0 = 2,5;
c1 = 1,5; c2, = 2 (a sinistra) e 500 coppie di numeri pseudo-casuali (a
destra) generati dalla stessa distribuzione
Per esempio, si può generare una determinazione bivariata Y1,Y2 da
tale distribuzione (con c0,c1,c2≥1) ricorrendo ad una tecnica di
accettazione rifiuto con distribuzione maggiorante uniforme come segue:
• si determina preliminarmente il massimo di f(⋅), M = max f(y1,y2);
140
Marcello Chiodi
•
si genera prima una coppia di numeri uniformi U1,U2, con il vincolo
che U1+U2≤1; per far questo si possono generare U1 e W
nell'intervallo [0;1), e poi calcolare U2 = W(1-U1);
• si genera un altro numero casuale uniforme V (indipendente dai
precedenti);
• si pone (Y1,Y2) = (U1,U2) e quindi si accetta la coppia (Y1,Y2) se risulta
V ≤ f(Y1,Y2)/M, altrimenti si torna al passo b) per un nuovo tentativo.
L'algoritmo ora delineato è applicabile in tutti i casi in cui, con un
qualsiasi numero di dimensioni, la funzione f(· ) ammetta un massimo
unico.
7.5.
Generazione da distribuzioni multivariate di variabili
aleatorie discrete
7.5.1.
Generazione da una distribuzione multinomiale
Supponiamo di voler generare vettori aleatori Y, di componenti
(Y1,Y2,…,Yk) da una distribuzione multinomiale relativa ad n prove
indipendenti di un esperimento che può fornire uno fra k possibili
k
risultati, ciascuno di probabilità pi (i=1,2,…,k), e quindi con:
∑ Yi = n e
i=1
k
∑ pi = 1. Il modo più semplice consiste nello sfruttare il fatto che le
i=1
distribuzioni marginali e quelle condizionate di singole componenti sono
tutte binomiali! Infatti si può:
• generare Y1 da una distribuzione binomiale di parametri n e p1;
• per i=2,3,…,k, generare Yi dalla distribuzione condizionata della
componente i-esima, date le precedenti i-1 componenti generate
Y1,Y2,…,Yi-1.
Yi, condizionatamente a Y1=y1, Y2=y2,…,Yi-1=yi-1, ha una
distribuzione binomiale di parametri:
i-1
pi
ni = ∑ yj
pi' = i-1
e
j=1
1- ∑ pj
j=1
Tecniche di Simulazione in Statistica.
141
Un’altra tecnica, se n non è troppo grande, consiste nel simulare
effettivamente le n estrazioni, generando n numeri casuali dalla
distribuzione di probabilità discrete pi (i=1,2,…,k); le frequenze
Y1,Y2,…,Yk con cui si presentano le k modalità, costituiscono le
componenti del vettore aleatorio desiderato, Y. Si può anche pensare di
generare n vettori aleatori di lunghezza k di elementi 0 o 1, relativi alla
codifica disgiuntiva completa in k modalità; ciascun vettore è costituito
da un solo elemento uguale ad uno, e tutti gli altri uguali a zero:
otteniamo quindi una matrice V di n×k elementi vij, con vij=1 se l’i-esima
estrazione di questo procedimento ha portato alla j-esima modalità
(j=1,2,…,k); la somma delle righe di tale matrice fornisce il vettore Y
richiesto.
7.6.
Generazione di tavole di contingenza
7.6.1.
Generazione di tavole di contingenza con margini qualsiasi
La generazione di tavole di contingenza con r righe ed s colonne per
un totale di N osservazioni provenienti da una distribuzione con
probabilità teoriche assegnate pij, non comporta particolari difficoltà e
costituisce un esempio di generazione di N vettori a 2 componenti di
valori pseudo-casuali da distribuzioni discrete.
Se A e B sono i due caratteri qualitativi, di modalità rispettivamente
ai, (i = 1,2,…,r) e bj, (j = 1,2,…,s), per generare una tavola occorre
generare N coppie di modalità pseudo-casuali Ak, Bk (k = 1,2,…,N), in
modo che Prob(Ak = ai, Bk = bj) = pij; quindi si costruisce la tavola a
doppia entrata contando il numero di volte che si è presentata ciascuna
coppia. Per la generazione della singola coppia si può fare ricorso alle
distribuzioni condizionate.
Si genera prima Ak dalla distribuzione marginale di A, con probabilità
pi.; si è così scelta la riga della tavola. Condizionatamente a questa scelta
si genera Bk dalla i-esima distribuzione condizionata di B, di probabilità:
pj/i = pij/pi⋅
Per ciascuna generazione si può per esempio usare il metodo
dell'inversione della funzione di ripartizione.
Oppure si può procedere con opportune estensioni delle tecniche di
accettazione-rifiuto, con distribuzione maggiorante uniforme, generando
142
Marcello Chiodi
prima un numero casuale I compreso fra 1 ed r da una distribuzione
uniforme discreta e poi un altro numero casuale intero J compreso fra 1
ed s da una distribuzione uniforme discreta. Quindi si accetta la coppia
I,J se, estratto un numero V da una uniforme standard, risulta V<pIJ/pmax,
essendo pmax la più grande delle probabilità pij.
7.6.2.
Generazione di tavole di contingenza con margini assegnati
Diverso è il caso in cui si vogliano generare tavole di contingenza che
esprimano la distribuzione di frequenza simultanea delle modalità di due
caratteri qualitativi indipendenti, con distribuzioni marginali assegnate.
Si supponga di voler generare una tavola di frequenze marginali ni.
(i = 1,2,…,r) e n.j (j = 1,2,…,s), con
r
s
i=1
j=1
∑ ni. = ∑ = n.j = n
Il metodo più semplice, se n non è troppo grande, è quello di simulare
materialmente l’estrazione in blocco, ossia senza reimmissione, di n
coppie di modalità AI, BJ: si riveda il paragrafo del 4° capitolo relativo
alla generazione di numeri casuali da una distribuzione ipergeometrica.
Per la prima coppia si genera I (ad esempio mediante inversione della
funzione di ripartizione, o mediante accettazione-rifiuto) da una
distribuzione con probabilità date da ni./n (i = 1,2,…,r) e J da una
distribuzione di probabilità n.j/n (j = 1,2,…,s). Successivamente le
frequenze marginali nI. e n.J vanno diminuite di una unità ciascuna, per
rispecchiare il fatto che è stata estratta una coppia con quelle modalità. Si
continuerà a generare coppie {I,J} fino ad azzerare tutti i totali marginali.
Chiaramente ad ogni passo le distribuzioni da cui generare I e J
cambiano in funzione delle estrazioni precedenti.
Tecniche di Simulazione in Statistica.
143
Algoritmo 12
Generazione di una tavola di
contingenza pseudo-casuale con margini assegnati
Inizializzazione
a)
b)
c)
d)
Sia N il totale delle frequenze della tavola desiderata.
porre Ti = ni. (i = 1,2,…,r) e Sj = n.j (j = 1,2,…,s);
porre M = 0;
porre nij = 0 (i = 1,2,…,r; j = 1,2,…,s);
Corpo dell'algoritmo
e)
f)
g)
h)
i)
Generare I da una distribuzione discreta di probabilità pi
date da: pi = Ti / (N-M) (i = 1,2,…,r);
Generare J da una distribuzione discreta di probabilità pj
date da: pj = Sj / (N-M) (j = 1,2,…,s);
Aggiornare nIJ = nIJ+1
Aggiornare: M = M+1; TI = TI-1; SJ = SJ -1
Se M<N tornare al passo e) altrimenti arrestare l’algoritmo
(oppure tornare ad a) per generare un’altra tavola)
Ai passi e) ed f) converrà adottare una tecnica differente in funzione
delle distribuzioni marginali: con margini piuttosto simili converrà
adottare la tecnica di accettazione-rifiuto vista prima, tenendo presente
che ogni volta le due distribuzioni da cui generare modalità discrete
cambiano in funzione delle generazioni dei passi precedenti. Per
velocizzare l’algoritmo può essere opportuno controllare esplicitamente
se si sono già saturate alcune delle righe o delle colonne (ossia se
qualcuno dei Ti o degli Sj è uguale a zero). Algoritmi più efficienti, specie
per il caso in cui n è grande, ma più complessi, sono forniti da Boyett
(1979) e Patefield (1981), e sono implementati in alcuni packages
statistici.
144
Marcello Chiodi
8. Integrazione con tecniche di tipo Montecarlo in
ℜ1 e in ℜn
Per quanto riguarda le tecniche approssimate di integrazione basate su
metodi tipo Montecarlo, espongo prima le tecniche più semplici e le idee
di fondo per l'integrazione di funzioni di una sola variabile, per poi
estendere alcuni concetti all'integrazione di funzioni di più variabili. In
effetti è questo l'ambito in cui sono più utili le tecniche di integrazione di
tipo Montecarlo: infatti esistono ottime tecniche per l'integrazione
numerica, ossia con procedimenti approssimati, di funzioni di una o due
variabili che permettono di approssimare gli integrali definiti di classi
piuttosto ampie di funzioni, con il grado di precisione desiderata, anche
dell'ordine di m-4, se m è il numero dei punti impiegati dalla formula di
quadratura; si pensi che la semplice tecnica di integrazione numerica
trapezoidale fornisce un errore dell'ordine di m-2. L'integrazione numerica
di funzioni di più variabili risulta invece in generale poco agevole, perché
il numero dei punti necessari per mantenere la stessa precisione cresce
esponenzialmente col numero delle dimensioni, ed è per questo che a
volte conviene ricorrere alle tecniche di tipo Montecarlo. In particolare
per i problemi di natura probabilistica, è naturale il ricorso a tale tecnica,
ad esempio per il calcolo approssimato di valori attesi di funzioni di
variabili aleatorie multiple.
Si è già visto nel capitolo 2 che l'utilità principale delle tecniche di
integrazione di tipo Montecarlo sta nel fatto che non risentono del
problema della dimensionalità (curse of dimensionality): l'errore medio
di una tecnica di integrazione di tipo Montecarlo è sempre dell'ordine di
1/ m e quindi dipende solo dal numero dei punti usati e non dal numero
delle dimensioni.
8.1.
Integrazione con la tecnica Montecarlo "hit or miss"
⌠b
Si supponga di volere valutare Ι = 
⌡ h(x)dx, con 0≤ c ≤ h(x) ≤d; a,b,c
a
e d sono finiti. Ho fatto già cenno nel 2° capitolo alla tecnica di
integrazione "hit or miss" (ossia colpito/mancato oppure giusto/sbagliato
Tecniche di Simulazione in Statistica.
145
o più semplicemente a caso) basata sul lancio di m punti di coordinate
(Xi,Yi) nel rettangolo che include la funzione integranda.
Se S è il numero di punti che cadono sotto h(x) (si riveda la figura 2
del capitolo 2), per i quali cioè si ha: Yi<h(Xi), essendo Xi un numero
casuale uniforme in [a,b] e Yi un numero uniforme in [c,d], la stima
dell’integrale è data da:
Ι^m = c(b-a)+(d-c)(b-a)S/m
Ovviamente S è una variabile casuale binomiale con:
p = [Ι - c(b-a)]/[(d-c)(b-a)].
Pertanto, posto p^ = S/m, un intervallo di confidenza al livello 1-α per
Ι, quando m è grande, é dato da:
c(b-a)+(d-c)(b-a)[p^ ± kα p^ (1-p^ )/m ]
essendo kα il valore critico della distribuzione normale standardizzata
corrispondente ad un livello di significatività α.
Nell'esempio del capitolo 2, p^ = 335/500, b-a = 10; d-c = 8,686 e
quindi Ι^m = 58,1962± kα 1,8625.
Nella parte sinistra della figura che segue vediamo che la tecnica è
facilmente estesa al caso dell'integrazione di funzioni di più variabili: il
volume viene stimato in base alla proporzione p^ fra punti sotto e sopra la
superficie determinata dalla funzione da integrare; l'errore standard è
sempre quello della binomiale, e quindi proporzionale a p^ (1-p^ )/m .
Nella parte destra della figura vediamo che questa tecnica è
applicabile anche al caso del calcolo del volume V di una regione S in ℜn
delimitata da superfici definite da funzioni implicite: basterà generare m
vettori di n numeri pseudo-casuali con distribuzione uniforme entro
l'iper-cubo C contenente S; il rapporto fra punti caduti dentro la regione
S ed il totale m dei punti generati dentro C è una stima del rapporto fra V
ed il volume di C.
146
Marcello Chiodi
z<f(x,y)
z>f(x,y)
Figura 37 Metodo di integrazione Montecarlo "hit or miss": integrazione di
una funzione f(x,y) su un dominio rettangolare (a sinistra) e, a destra,
integrazione di una funzione implicita di tre variabili in ℜ3.
8.2.
Tecnica Montecarlo pura
Una tecnica ancora molto semplice ma che fornisce in generale
varianze campionarie più basse, è quella di Montecarlo pura, che
consiste nell'approssimare un integrale definito mediante la media
aritmetica dei valori della funzione integranda valutata in m ascisse Xi
generate casualmente da una distribuzione uniforme in (a-b), moltiplicata
per l'ampiezza dell'intervallo:
m
Ι^m = (b-a) ∑ h(Xi)/m.
i=1
L'errore standard di questa tecnica è ancora dell'ordine di m-1/2. Si
vedrà nel paragrafo successivo, nell'ambito del campionamento per
importanza, un'approssimazione della varianza campionaria di Ι^m.
8.3.
Tecniche di riduzione della varianza
In effetti le due tecniche più semplici di integrazione Montecarlo viste
prima, a differenza delle tecniche di integrazione numerica, non sfruttano
eventuali regolarità della funzione integranda h(⋅), per migliorare
l'approssimazione al valore esatto dell'integrale. Si possono tuttavia
Tecniche di Simulazione in Statistica.
147
impiegare delle varianti che consentono di ridurre l'errore standard delle
tecniche di integrazione di tipo Montecarlo, analogamente alle tecniche
impiegate per diminuire l’errore campionario di un’indagine
campionaria. Per esempio si può adottare una tecnica di stratificazione,
suddividendo il range della x in più intervalli, all’interno dei quali la
funzione è più regolare, e quindi stimare l’integrale attraverso una media
ponderata dei singoli integrali. Altre tecniche sono quelle del
campionamento per importanza e delle variabili di controllo. Per la
tecnica delle variabili antitetiche rimando alla bibliografia (Rubinstein,
1981)
8.3.1.
Campionamento per importanza
Supponiamo di volere calcolare un valore approssimato dell'integrale
definito:
⌠b
Ι=
⌡ h(x)dx.
a
Sia f(x) (f(x)>0) la densità di una variabile aleatoria X definita su [a; b]
da cui si sanno generare numeri pseudo-casuali: non è necessario che a e
b siano finiti. Per applicare la tecnica del campionamento per importanza
(importance sampling), poniamo g(x) = h(x)/f(x) e riscriviamo l'integrale
nel modo seguente:
⌠b
⌠b
 g(x)f(x)dx = Ef[g(X)] = Ef[h(X)/f(X)]
h(x
Ι=
)dx
=
⌡
⌡
a
a
In questo modo Ι è stato espresso come speranza matematica di
g(X) = h(X)/f(X), essendo X una v.a. con distribuzione di densità f(x) e
quindi si può ottenere un valore approssimato di tale speranza
matematica mediante una media aritmetica di m valori g(xi) = h(xi)/f(xi)
calcolati su un campione di ampiezza m estratto dalla distribuzione di
densità f(x):
Ι^m
m
= (1/m) ∑ h(Xi)/f(Xi) =
i=1
m
∑ g(Xi)/m
i=1
148
Marcello Chiodi
essendo Xi un numero pseudo-casuale estratto dalla distribuzione con
densità f(x). La legge forte dei grandi numeri garantisce la convergenza
quasi certa della stima Ι^m al valore vero dell' integrale:
q.c.
Ι^m → Ι.
La tecnica è tanto più efficiente quanto più f(x) somiglia ad h(x),
perché tanto più bassa sarà la varianza di h(x)/f(x) e quindi quella di Ι^m!
Infatti la varianza di Ι^m è data da:
b [h(x)/f(x)] 2f(x)dx- Ι 2/m
Var(Ι^m) = ⌠
⌡
 a

che si annulla solo nel caso in cui f(x) = h(x)/Ι.
Poichè Ι non è noto, perchè lo scopo di questa tecnica è proprio quello
di stimarlo, per la scelta ottimale di f(x) si può seguire solo il criterio che
f(x) sia approssimativamente proporzionale ad h(x), ossia che abbia un
andamento simile a quello di h(x). Il concetto è che nella stima
dell'integrale si prendono mediamente più punti a seconda
dell'andamento della funzione integranda.
La varianza di Ι^m si può comunque stimare dalla varianza campionaria
dei rapporti h(Xi)/f(Xi), per cui:
^
V(Ι^m)
m
≅ (1/m){ ∑ [h(Xi)/f(Xi)]2/m-Ι^m 2}
i=1
Se X segue una distribuzione uniforme in [a,b], con f(x) = 1/(b-a), con
a e b ovviamente finiti, si ritorna alla tecnica di integrazione di
Montecarlo pura. Si stima quindi l'integrale mediante:
Ι^m
m
= (b-a) ∑ h(Xi)/m,
i=1
essendo Xi un numero casuale uniforme nell'intervallo [a,b]. Una
^
stima della varianza di Ι è data da:
^
V(Ι^m)
≅{(b-a)
2
m
∑ [h(Xi)]2/m-Ι^m 2}/m
i=1
Tecniche di Simulazione in Statistica.
149
Nell'esempio del capitolo 2 (con m = 500) si ha l'intervallo, al livello
1-2α:
Ι^m = 59,3969± kα 0,8681,
che risulta più stretto dell'analogo intervallo calcolato con la tecnica più
elementare dell' "hit or miss":
Ι^m = 58,1962± kα 1,8625.
In generale la tecnica Montecarlo pura, a parità di numero di punti
impiegati, fornisce intervalli di confidenza più stretti di quelli della
tecnica hit-or-miss. Ne ometto la dimostrazione per brevità.
8.3.2.
Variabili di controllo
Un metodo semplice ed efficace di riduzione della varianza è quello
basato su variabili di controllo. L’idea sfrutta i concetti della regressione
lineare.
Supponiamo di voler valutare un integrale e che tale integrale, ad
esempio con la tecnica vista nel paragrafo precedente, corrisponda alla
speranza matematica di una variabile casuale Y, di cui non conosciamo la
distribuzione esatta, ma di cui sappiamo ottenere determinazioni pseudocasuali Yi. E' il caso ad esempio di una funzione Y = g(X) di un vettore
aleatorio X: si sanno generare numeri casuali X e quindi Y mediante
Y = g(X), ma non si sa esplicitare analiticamente la distribuzione di Y. Ad
esempio g(⋅) può essere un particolare stimatore.
Con il metodo Montecarlo puro, stimiamo E(Y) attraverso m valori
simulati mediante:
E(Y) ≅ M(Y) =
m
∑ Yi/m;
i=1
La varianza di questa stima è data dalla nota relazione:
Var(M(Y)) = Var(Y)/m,
e Var(Y) si può stimare dalla varianza empirica:
^
Var(Y) ≅ V(Y) =
m
∑ Y2i/m- [M(Y)]2.
i=1
150
Marcello Chiodi
Se in corrispondenza di ogni Yi possiamo però determinare una
realizzazione Zi di una v.a. ausiliaria Z di cui conosciamo la speranza
matematica E(Z), possiamo scrivere:
E(Y) = E{Y-b[Z-E(Z)]},
con b qualsiasi, in quanto E[Z-E(Z)] = 0.
Possiamo ora valutare ancora per simulazione la speranza matematica
di Y da quest’ultima relazione, sfruttando la conoscenza di questa
variabile ausiliaria Z.
E(Y) = E{Y-b[Z-E(Z)]}≅M(Y)-b[M(Z)-E(Z)]
m
(=
∑ {Yi-b[Zi-E(Z)]}/m).
i=1
In pratica si corregge la media simulata di Y in funzione dello scarto
fra la media simulata di Z e la speranza matematica nota di Z.
Ovviamente la maggior riduzione di varianza si ha quando b è uguale al
coefficiente della regressione lineare di Y su Z:
b = βYZ = Cov(Y,Z)/Var(Z);
e la varianza di M(Y)-b[M(Z)-E(Z)] è quindi data da:
Var{M(Y)-b[M(Z)-E(Z)]} = Var(Y)(1-r2YZ),
essendo rYZ l’indice di correlazione lineare semplice fra Y e Z. La
riduzione di varianza della stima di E(Y) aumenta proporzionalmente a
r2YZ.
Quindi, se esiste una variabile casuale Z correlata linearmente con Y, e
di cui si conosce la speranza matematica, converrà correggere la media
simulata di Y secondo la regressione su Z. In generale si utilizzeranno le
varianze e le covarianze empiriche ricavate sulle m simulazioni per
ottenere stime consistenti di r2YZ e di βYZ.
Se ad esempio si conoscono due stimatori Y e Z di un certo parametro
θ, ma si conosce la distribuzione campionaria solo di Z, e se Y e Z, come
è presumibile, sono correlati, si può diminuire la varianza delle stime
simulate dei momenti dello stimatore Y attraverso la conoscenza dei
valori simulati ed esatti dei momenti di Z.
Tecniche di Simulazione in Statistica.
8.4.
151
Integrazione di funzioni di più variabili
Ι concetti introdotti per l'integrazione di una funzione in un intervallo
[a,b] in ℜ1 si estendono immediatamente e praticamente senza modifiche
all'integrazione di funzioni definite in ℜn o eventualmente in regioni di
ℜn.
L'utilità fondamentale delle tecniche di integrazione di tipo
Montecarlo è che l'errore medio dipende solo da m e non da n, che è la
dimensionalità del problema.
Si abbia un integrale definito in una regione Sn diℜn;
⌠
Ι=
⌡x∈Sn h(x)dx;
supponiamo per ora per semplicità che Sn sia una regione chiusa, e che
sia Cn il minimo solido a spigoli paralleli agli assi coordinati che la
contiene: si può ottenere allora una stima Ι^m dell'integrale Ι con metodo
Montecarlo puro mediante la relazione:
m
Ι^m = λn(Sn)· ∑ h(Xi)/m.
i=1
essendo Xi (i=1,2,…,m) un vettore ad n componenti generato
casualmente in Sn e λn(Sn) é la misura della regione Sn. Se la forma della
regione Sn non è tanto semplice da consentire la generazione di vettori di
numeri pseudo-casuali con distribuzione uniforme in Sn, si potranno
generare vettori pseudo-casuali Xi in Cn, e considerare solo quelli che
risultano inclusi in Sn. Si avrà quindi:
m
Ι^m = λn(Cn)· ∑ h(Xi)/m (Xi ∈Sn)
i=1
La stima della varianza di tale stima di Montecarlo è simile a quella
del caso univariato:
m
^
V(Ι^m) ≅(λn(Sn))2{ ∑ [h(Xi)]2/m-Ι^m 2}/m.
i=1
L'errore standard della stima è sempre proporzionale a 1/ m
152
Marcello Chiodi
8.4.1.
Valori medi di stimatori e livelli di significatività
La speranza matematica di una funzione Tn = Tn(X1,X2,…,Xn) di n v.a.
dotate di densità f(⋅), in cui in particolare le Xi possono essere le n v.c.
indipendenti associate ad un'estrazione campionaria e Tn uno stimatore di
un parametro, é data da:
E(Tn) = ⌠

⌡
t(x1,x2,…,xn)f(x1,x2,…,xn)dx1dx2…dxn
x∈ℜn
per cui il problema si riduce a quello del calcolo, mediante
simulazione, di un integrale multiplo. Del tutto analogo é il problema
della determinazione dei momenti della distribuzione di Tn. Anche la
valutazione mediante simulazione del livello di significatività e del
potere di un test rientra nell'ambito dei problemi di valutazione
approssimata di integrali, come vedremo in maggior dettaglio nel
capitolo successivo.
In generale per la valutazione approssimata dei momenti di Tn
mediante simulazione si impiega la relazione:
E(Tk) ≅
m
∑ [t(xj1,xj2,…,xjn)]k/m
i=1
essendo xj1,xj2,…,xjn gli n elementi del j-esimo campione simulato di
ampiezza n.
Anche il problema della determinazione di un livello di significatività
è riconducibile ad un problema di integrazione. Infatti per il livello di
significatività di un test t con regione di accettazione t∈Rα si ha:
⌠
α =
⌡t(x)∈Rα t(x1,x2,…,xn)f(x1,x2,…,xn)dx1dx2…dxn
Anche questo livello di significatività può essere stimato attraverso
una tecnica di simulazione, come si vedrà nel capitolo successivo, basata
sostanzialmente sulla tecnica di Montecarlo hit or miss. Si tratta in fondo
della stima di una probabilità teorica in uno schema binomiale: gli m
campioni sono estratti dalla stessa distribuzione n-dimensionale ed in
modo indipendente, almeno entro i limiti del particolare generatore di
numeri pseudo-casuali adottato.
Tecniche di Simulazione in Statistica.
8.5.
153
Metodo Montecarlo per catene di Markov
Una tecnica che negli ultimi anni è diventata sempre più popolare e
suscettibile di applicazioni è quella del Gibbs sampler, o in generale di
applicazioni del metodo Montecarlo basate sulle proprietà delle catene di
Markov. Mi limito qui ad accennare le caratteristiche fondamentali di tale
tecnica, rimandando alla bibliografia per i dettagli e per le applicazioni
specifiche (Casella, George, 1992; Gelfand, Smith, 1990; Tanner, 1993).
Sia X un vettore aleatorio di n componenti con una distribuzione che
per semplicità suppongo dotata di densità: sia f(x1,x2,…,xn) tale densità;
supponiamo di essere interessati alla distribuzione marginale della
componente Xn, la cui densità è data da:
⌠
f(xn) = 
⌡
ℜn-1
f(x1,x2,…,xn)dx1dx2…dxn-1
Se l'approccio diretto, ossia la valutazione dell'integrale multiplo, è
computazionalmente e analiticamente proibitivo, si può cercare di
ottenere mediante simulazione un campione di m osservazioni
X1n,X2n,…,Xmn, dalla distribuzione di densità f(xn): è il concetto che sta
alla base dell'impiego delle tecniche di simulazione in statistica!
La peculiarità del Gibbs sampler risiede nel modo particolare in cui
vengono generati i valori Xjn (j = 1,2,…,m), sfruttando la conoscenza
delle distribuzioni condizionate di ciascuna delle n componenti di X
rispetto alle altre n-1 componenti.
Si supponga di conoscere le n distribuzioni condizionate di ciascuna
componente condizionatamente alle altre, con densità:
•
fi(xi) = f(xi|x1,x2,…,xi-1,xi+1,…,xn),
•
e di saper generare numeri casuali Xi dalle distribuzioni di densità
fi(xi) per qualsiasi (n-1)-pla di valori delle n-1 componenti
condizionanti.
Si fissano dei valori iniziali 0X1,0X2,…,0Xn-1;
•
•
si costruisce la sequenza generando
condizionata di densità:
i = 1,2,…,n,
0Xn
fn(xn) = f(xn|0X1,0X2,…,0Xn-1);
dalla distribuzione
154
Marcello Chiodi
quindi si generano, una alla volta, le componenti 1X1,1X2,…,1Xn-1
dalle opportune distribuzioni di densità fi(xi), condizionatamente ai
valori ottenuti precedentemente per le altre n-1 componenti.
Ad esempio si genera:
¾1X1 dalla distribuzioni di densità f1(x1) = f(x1|0X2,0X3…,0Xn-1,0Xn),
(e da questo momento 1X1 sostituisce 0X1)
¾1X2 dalla distribuzioni di densità f2(x2) = f(x2|1X1,0X3…,0Xn-1,0Xn),
(e da questo momento 1X2 sostituisce 0X2)
…
¾1Xn-1 dalla distribuzioni di densità fn-1(xn-1) = f(xn-1|1X1,…,1Xn2,0Xn),
(e da questo momento 1Xn-1 sostituisce 0Xn-1)
ed è terminato un ciclo con la sostituzione di tutte le componenti di X.
A questo punto si può generare 1Xn condizionatamente ai nuovi valori:
dalla
distribuzione
di
densità
si
genera
•
1Xn
fn(xn) = f(xn|1X1,1X2,…,1Xn-1).
Si itera il procedimento, generando ogni volta una singola componente
jXi condizionatamente agli ultimi valori generati per le altre n-1
componenti.
Si può dimostrare, attraverso le proprietà delle catene di Markov, e
sotto condizioni di regolarità abbastanza generali, che la sequenza di v.a.
jXn, generate con tale procedimento, converge alla v.a. desiderata Xn con
densità f(xn), perché la distribuzione condizionata di jXn converge alla
distribuzione marginale di Xn.
Pertanto, iterando il procedimento sopra delineato sino ad ottenere kXn,
se k è sufficientemente grande, kXn potrà considerarsi come una
determinazione pseudo-casuale di Xn.
Si potrà ripetere il procedimento m volte per ottenere un campione di
m valori simulati.
La grande utilità computazionale di tale metodo, che a prima vista può
sembrare astruso e poco naturale, è che si sostituisce alla valutazione di
un integrale multiplo per la valutazione di una densità marginale, la
generazione di numeri casuali da distribuzioni univariate. Evidentemente
il metodo è utile se le componenti Xn sono dipendenti. Questa tecnica è
molto impiegata con riferimento a problemi di valutazione di densità di
probabilità marginali nell’inferenza bayesiana che, per risultare
applicabile, necessita di strumenti per approssimare opportunamente
degli integrali multipli; numerosi sono comunque gli altri campi di
•
Tecniche di Simulazione in Statistica.
155
applicazione: ad esempio la generazione di matrici di 0 e 1 con margini
assegnati (Rao, Jana e Bandyopadhyay, 1996) o la generazione di vettori
aleatori da distribuzioni multivariate qualsiasi (Boswell et al. 1993).
Il passo generico dell’iterazione j+1 è la generazione di un numero
pseudo-casuale j+1Xi dalla distribuzione di Xi condizionata ai valori già
aggiornati delle prime i-1 componenti dell’iterazione in corso j+1X1,
j+1X2,…,j+1Xi-1 ed ai valori delle altre n-i componenti ancora da
aggiornare jXi+1,jXi+2,…,jXn.
In letteratura sono stati proposti numerosi criteri empirici di
convergenza per stabilire nelle applicazioni dopo quale valore di k si può
considerare kXn come determinazione pseudo-casuale dalla distribuzione
marginale desiderata.
8.6.
Metodi quasi-Montecarlo
Esistono anche delle tecniche miste di integrazione che sfruttano i
vantaggi delle tecniche Montecarlo e delle tecniche di quadratura
numerica. I difetti fondamentali delle tecniche di integrazione di tipo
Montecarlo sono infatti:
• la valutazione dell'errore è di tipo probabilistico, mentre di solito è
preferibile per le tecniche numeriche avere una valutazione dell'errore
massimo commesso;
^
• le proprietà della stima Ιm dipendono in modo marcato dalla qualità
della sequenza di vettori di numeri pseudo-casuali impiegata;
-1/2
; sebbene questo sia indipendente dalla
• l' errore è dell'ordine di m
dimensionalità n del problema, la convergenza di Ι^m ad Ι è lenta: per
ottenere una stima con un errore medio 10 volte inferiore, ossia per
potere avere mediamente un risultato con una cifra decimale esatta in
più, occorre centuplicare m.
Le tecniche quasi-Montecarlo si basano sempre su una stima di un
integrale in una regione Sn data da:
m
Ι^m = ∑ h(Xi)/m
(Xi ∈Sn);
i=1
Stavolta però la sequenza degli m vettori Xi non è casuale ma
deterministica, nella speranza di ottenere un errore massimo
(deterministico e non probabilistico!) di ordine inferiore rispetto a quello
solito m-1/2.
156
Marcello Chiodi
In effetti una stima Montecarlo Ι^m di un integrale ha in generale, come
si è visto, un errore standard, ossia un errore "medio" di k m-1/2 per una
sequenza casuale di m vettori in Sn: evidentemente esistono sequenze di
m vettori in Sn che forniscono un errore inferiore alla media degli errori
k m-1/2.
Le tecniche quasi-Montecarlo possono riuscire a ottenere limiti per
l'errore dell'ordine di m-1(log m)n-1, purchè la sequenza deterministica
degli m vettori Xi sia scelta in modo opportuno secondo criteri di
uniformità della distribuzione dei punti in Sn (Neiderreiter, 1992).
Altri approcci (Thisted,1988) prevedono l'impiego congiunto di
formule di quadratura gaussiana e di tecniche di tipo Montecarlo.
Tecniche di Simulazione in Statistica.
157
9. Simulazioni in statistica
"The idea behind Monte Carlo methods is that the next
best thing to knowing the distribution of a statistics-or
equivalently, its density-is to have a very large sample from
that distribution."
(Thisted, 1988)
La citazione iniziale chiarisce perché si usino le tecniche di
simulazione in statistica: se non si conosce la distribuzione esatta di una
funzione dei dati campionari, la miglior cosa da fare è estrarne un
campione più grande possibile! E' esattamente ciò che si fa quando non
si conosce la distribuzione di un carattere statistico in una popolazione
reale: si estrae un campione!
Se siamo interessati alla distribuzione di una statistica
Tn=t(X1,X2,…,Xn) (eventualmente anche a p componenti), funzione delle
osservazioni campionare, X1,X2,…,Xn, provenienti da una distribuzione di
densità f(x1,x2,…,xn), come è noto la densità della distribuzione di Tn è
data da:
f(t) = ⌠

⌡
f(x1,x2,…,xn)dx1dx2…dxn.
t(x)=t
Se f(t), come è spesso il caso, non è ricavabile analiticamente, si può
ricorrere a tecniche di integrazione numerica, poco agevoli già per piccoli
valori di n, o ad altre tecniche di approssimazione di distribuzioni
campionarie; oppure si può estrarre un campione di m determinazioni
pseudo-casuali di Tn: per far questo non occorre conoscere la
distribuzione di Tn, ma è sufficiente generare m campioni di ampiezza n
da X e, su ciascuno di essi, calcolare il valore della funzione
tj=t(xj1,xj2,…,xjn), essendo xj1,xj2,…,xjn gli n valori del j-esimo campione
simulato. Queste sono le m determinazioni pseudo-casuali di Tn!
In questo capitolo espongo alcuni dei concetti che stanno alla base
dell'uso delle tecniche di simulazione in statistica alternando
esemplificazioni pratiche a parti teoriche.
•
*OL HVHPSL TXL SUHVHQWDWL KDQQR YDORUH HVVHQ]LDOPHQWH GLGDWWLFR SRLFKq
QHOO
DPELWR
GL
TXHVWR
ODYRUR
O
HQIDVL
q
YROXWDPHQWH
SRVWD
VXOOR
VWUXPHQWR WHFQLFR GHOOH VLPXOD]LRQL LQ DPELWR VWDWLVWLFR OD GLVFXVVLRQH
158
Marcello Chiodi
VXOOH SURSULHWj VWDWLVWLFKH GL SDUWLFRODUL VWLPDWRUL H WHVW FLWDWL QHJOL
HVHPSL q TXLQGL JHQHUDOPHQWH PDQWHQXWD DG XQ OLYHOOR HOHPHQWDUH
9.1.
Simulazioni di distribuzioni campionarie di stimatori e
test
9.1.1.
Primo esempio di simulazione di distribuzione campionaria
Si consideri la tavola riportata di seguito: si tratta di un esempio utile
per comprendere le tecniche di simulazione di distribuzioni campionarie,
ma di scarsa rilevanza metodologica, dato il numero ridottissimo di
campioni. Sono stati generati mediante simulazione m = 20 campioni di
ampiezza n = 5 di numeri pseudo-casuali da una distribuzione normale
standardizzata, riportati nella parte sinistra della tavola. Su ciascuno di
questi campioni vengono calcolati i valori di alcune statistiche;
nell’esempio ho scelto la media aritmetica (M), la mediana (Me), la
varianza campionaria (S2) e il rapporto t (tν).
Nella parte destra della tabella sono riportati i valori di tali stime
calcolati su ciascuno dei 20 campioni.
Ognuna delle quattro colonne costituisce la distribuzione
campionaria simulata dello stimatore corrispondente.
Di queste quattro distribuzioni sono poi riportate le medie aritmetiche
e le matrici di varianze e covarianze. Evidentemente il numero limitato di
campioni simulati (m=20) non consente di avere informazioni stabili sul
comportamento di tali stimatori, le cui distribuzioni teoriche, nel caso di
campioni provenienti da distribuzioni normali, sono peraltro note.
Tecniche di Simulazione in Statistica.
j
20 campioni simulati di
ampiezza 5 estratti da una
normale standard (n = 5,
m = 20)
valori del campione j-esimo
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
-0,703;0,952;-1,128;0,453;-0.036
1,271;0,674;-0,449;-0,053;0,192
-1,764;0,345;0,483;0,837;0,797
1,283;0,036;-0,488;-0,678;0,162
-0,143;1,370;-0,762;-0,498;0,928
0,213;1,008;-1,287;-0,628;0,488
-1,313;-0,372;-0,957;0,404;0,159
-0,033;-0,099;0,450;0,289;-1,259
-0,521;0,663;-1,129;1,325;-0,879
1,076;-0,368;-0,002;-0,949;1,383
-0,722;0,547;0,639;0,287;0,020
-0,236;0,933;-0,251;-0,780;-1,353
0,570;0,510;1,310;-0,637;-0,694
-0,609;0,458;-1,849;0,726;0,000
0,637;1,044;0,745;-1,603;-0,081
0,400;0,633;0,183;0,563;0,871
-0,477;-0,430;-0,101;2,226;-0,231
-0,159;-0,951;-1,143;-0,756;1,307
-0,672;0,770;1,151;1,713;-0,795
-0,164;0,620;0,340;0,446;0,560
159
STIME SIMULATE
(calcolate sui 20 campioni simulati)
Media Mediana Varianza
M
Me
S2
-0,093
-0,036
0,567
0,327
0,192
0,355
0,139
0,483
0,941
0,063
0,036
0,470
0,179
-0,143
0,685
-0,041
0,213
0,668
-0,416
-0,372
0,420
-0,130
-0,033
0,359
-0,108
-0,521
0,891
0,228
-0,002
0,769
0,154
0,287
0,239
-0,337
-0,251
0,572
0,212
0,510
0,593
-0,255
0,000
0,840
0,149
0,637
0,904
0,530
0,563
0,053
0,197
-0,231
1,047
-0,340
-0,756
0,788
0,434
0,770
1,000
0,360
0,446
0,078
t
tν
-0,246
1,097
0,288
0,183
0,432
-0,101
-1,283
-0,435
-0,229
0,520
0,631
-0,892
0,550
-0,555
0,313
4,605
0,386
-0,767
0,868
2,580
0,063
0,090
0,612
0,397
Medie aritmetiche delle 20
stime simulate:
0,069
0,157
0,083
1,592
Varianze empiriche delle 20
stime simulate:
Tavola 26, Distribuzioni campionarie simulate (e relative medie e varianze) di 4
stimatori, ottenute estraendo 20 campioni di 5 numeri pseudo-casuali
normali standardizzati.
160
Marcello Chiodi
Matrice di varianza e covarianza delle stime simulate
(calcolate sui 20 campioni simulati)
M
S2
Me
tν
0,069
0,077
-0,014
0,277
0,077
0,157
-0,018
0,298
-0,014
-0,018
0,083
-0,182
0,277
0,298
-0,182
1,592
Tavola 27. Matrice di varianza e covarianza dei 4 stimatori della tavola
precedente, relative alla simulazione di 20 campioni di 5 numeri pseudocasuali normali standardizzati.
M
Me
S2
tν
Ho ripetuto l’esperimento simulando l’estrazione di m = 10.000
campioni sempre di ampiezza n = 5 da una normale standardizzata,
considerando gli stessi quattro stimatori, ed ho ottenuto i seguenti
risultati sintetici:
Medie aritmetiche delle stime simulate
(calcolate su 10.000 campioni simulati)
M
Medie su
10.000
simulazioni:
-0.0007
Me
0.0000
S2
0.8049
tν
0.0050
Matrice di varianza e covarianza delle stime simulate
(calcolate su 10.000 campioni simulati)
M
Me
S2
tν
M
0,1978
0,1988
-0,0037
0,5512
Me
0,1988
0,2874
-0,0020
0,5529
S2
-0,0037
-0,0020
0,3285
-0,0100
0,5512
0,5529
-0,0100
1,9751
tν
Tavola 28. Vettore delle medie aritmetiche e matrice di varianza e covarianza
di 4 stimatori, relative ad una simulazione di 10.000 campioni di 5 numeri
pseudo-casuali normali standardizzati.
Adesso la conoscenza dei valori teorici delle medie e delle varianze di
tali stimatori ci permette di avere un'idea approssimativa sull'ordine di
grandezza dell'errore medio commesso attraverso le simulazioni. Si
osservi che con questa nuova simulazione le medie aritmetiche e le
varianze delle 10.000 stime simulate sono, come prevedibile, molto
Tecniche di Simulazione in Statistica.
161
vicine ai valori teorici per campioni estratti da distribuzioni normali
(nella popolazione si ha: µ = 0 e σ = 1); per esempio:
Quantità empiriche calcolate su
10.000 campioni di 5 numeri pseudocasuali normali.:
2
la media di S è uguale a
•
0,8049,
2
la varianza di S è 0,3285;
•
la
varianza delle medie
•
aritmetiche stimate è 0,1978;
la varianza delle mediane è
•
0,2874;
la varianza dei 10.000 valori
•
simulati di tν è risultata pari a
1,9751.
valori teorici
2
•
E(S ) = (n-1)/n = 0,8
•
V(S ) = 2(n-1)/n2 = 0,32
V(M) = 1/n = 0,2
•
•
•
2
V(Me)=π/(2n) = 0,3142
(valido però solo per n grande)
per la tν di student (con ν
gradi di libertà) si ha: E(tν) = 0 e
Var(tν) = ν/(ν-2);
nell' esempio ν = 4 e Var(t4) = 2,
Se i primi due momenti delle distribuzioni campionarie esatte dei diversi
stimatori non fossero stati noti dalla teoria campionaria gaussiana,
avremmo potuto stimarli dai corrispondenti momenti delle distribuzioni
simulate.
9.1.2.
Ripetizione di un esperimento di simulazione con condizioni
iniziali diverse
Possiamo pensare di ripetere lo stesso esperimento simulando l'estrazione
di campioni da distribuzioni differenti dalla normale. Nella tavola che
segue sono riportate le stesse quantità della tavola precedente, ma relative
stavolta a 10.000 campioni di ampiezza 5 estratti dalla distribuzione di
Laplace standardizzata, o distribuzione esponenziale doppia, che è una
distribuzione simmetrica con kurtosi pari a 6. E' appena il caso di
ricordare che la generazione di tali numeri pseudo-casuali può essere
effettuata con le tecniche viste nel capitolo 4. Nella tavola successiva
sono riportati i risultati sintetici di un esperimento simile, ma relativo a
campioni provenienti da una distribuzione uniforme. Il confronto fra le
tre tavole permette un esame comparativo empirico del comportamento
delle 4 funzioni dei dati campionari (la media, la mediana, la varianza e
tν) al variare della distribuzione di provenienza.
162
Marcello Chiodi
Medie delle
stime simulate
M
Me
S2
tν
Stime simulate su 10.000 campioni
M
Me
S2
0,0050
0,0016
1,6018
tν
0,0204
Matrice di varianza e covarianza delle stime simulate
M
Me
S2
tν
0,4067
0,2932
-0,0247
0,7147
0,3570
-0,0132
0,5724
0,2932
2,8203
-0,0323
-0,0247
-0,0132
0,7147
0,5724
-0,0323
1,7087
Tavola 29. Vettore delle medie aritmetiche e matrice di varianza e covarianza
di delle distribuzioni simulate di 4 stimatori, calcolate su 10.000 campioni di
5 numeri pseudo-casuali da una distribuzione di Laplace.
Medie delle
stime simulate
M
Me
S2
tν
M
-0,0038
Stime simulate su 10.000 campioni
Me
S2
-0,0058
0,2663
tν
-0,0229
Matrice di varianza e covarianza delle stime simulate
M
Me
S2
tν
0,0668
0,0857
0,0005
0,3728
0,1423
0,0005
0,4426
0,0857
0,0180
0,0033
0,0005
0,0005
0,3728
0,4426
0,0033
2,7539
Tavola 30. Vettore delle medie aritmetiche e matrice di varianza e covarianza
di delle distribuzioni simulate di 4 stimatori, calcolate su 10.000 campioni di
5 numeri pseudo-casuali da una distribuzione uniforme.
Si noti ad esempio come la varianza campionaria della mediana sia
inferiore a quella della media aritmetica, per campioni estratti da una
distribuzione di Laplace. Questo è un risultato in qualche modo atteso, in
quanto si sa che la mediana è lo stimatore di massima verosimiglianza
del parametro di posizione µ per campioni estratti dalla distribuzione di
densità:
1 -|x-µ|/σ1
.f(x)=
e
2σ1
Ricordo che la distribuzione di Laplace si può considerare come un caso
particolare delle distribuzioni normali di ordine p, quando p = 1. La
Tecniche di Simulazione in Statistica.
163
varianza asintotica della mediana campionaria28 Me, è data per questa
distribuzione da:
Var (Me∞) = 1/n,
mentre la varianza della media aritmetica è in questo caso:
Var(M) = 2/n (per qualsiasi valore di n).
L'efficienza asintotica relativa della mediana rispetto alla media
aritmetica è dunque uguale a 2, mentre dalla simulazione per n = 5, viene
stimata l'efficienza relativa mediante la relazione:
Eff.rel(Me,M) = S2(M)/S2(Me) = 0,4067/0,3570≅1,14,
valore ben inferiore a quello asintotico, ma comunque superiore all'unità.
Infatti la varianza simulata della mediana (0,3570) è molto maggiore di
quella valutata attraverso il valore asintotico (0,2). Per quanto riguarda il
test t vediamo che la sua varianza stimata varia in modo consistente
allontanandosi dalla situazione gaussiana.
9.1.3.
Un esempio grafico di simulazione di distribuzioni
campionarie
Esclusivamente allo scopo di visualizzare ancora il concetto di
distribuzione campionaria simulata, si osservi la figura successiva. Ho
estratto 20 campioni di ampiezza 5 di numeri pseudo-casuali da una
distribuzione beta di parametri α=0,5 e β=0,9. Il grafico della funzione di
densità è riportato nella figura successiva. I 5 valori di ciascun
campione29 sono rappresentati sulla stessa riga. Per ogni campione è
calcolata la media aritmetica M5 che, avendo lo stesso range delle x, è
rappresentata sulla riga dei valori campionari, con un simbolo grafico
differente. I 20 valori simulati delle medie aritmetiche sono collegati da
una linea tratteggiata nel grafico solo a scopo esemplificativo: i venti
punti rappresentano un campione di ampiezza 20 estratto dalla
28
29
In effetti la distribuzione esatta della mediana per campioni estratti da una distribuzione di
Laplace è nota sebbene la sua forma analitica non sia elementare. In generale però per le
distribuzioni normali di ordine p, con p qualsiasi, la distribuzione dello stimatore di massima
verosimiglianza non è nota.
I numeri pseudo-casuali sono stati generati all'interno del software STATISTICA 5, mediante
inversione della funzione di ripartizione: infatti in questo pacchetto applicativo vi è solo la
routine di generazione di numeri pseudo-casuali uniformi, ma sono presenti le funzioni
inverse delle funzioni di ripartizione di molte distribuzioni elementari di probabilità.
164
Marcello Chiodi
distribuzione
campionaria
delle
medie
aritmetiche
M5 = (X1+X2+X3+X4+X5)/5 con X~Beta(0,5;0,9). Si noti come aumentare
il numero di campioni m = 20, ossia l'ampiezza del campione di valori di
M5, consiste nell'incrementare il numero delle righe!
Aumentare invece il numero di punti sulla singola riga, ossia passare
per esempio da n = 5 a n = 8, significa cambiare simulazione ed indagare
sulla distribuzione campionaria di M8 piuttosto che su quella di M5. Ciò
chiarisce (se fosse ancora necessario!) il ruolo concettualmente diverso di
n ed m.
valori del campione
media aritmetica
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0.0
0.2
0.4
0.6
0.8
1.0
x
Figura 38. Estrazione di 20 campioni di ampiezza 5 di numeri pseudo-casuali
da una distribuzione beta di parametri α=0,5 e β=0,9 e visualizzazione delle
20 medie aritmetiche simulate.
La figura che segue si riferisce invece al risultato di una simulazione
con m = 10.000 campioni di ampiezza n = 5, estratti ancora dalla stessa
distribuzione beta (con il metodo di Johnk, vedere capitolo 5) e riporta a
sinistra la densità di una distribuzione Beta di parametri α=0,5 e β=0,9,
da cui sono generati gli elementi degli m campioni, a destra la
distribuzione di frequenza delle 10.000 medie aritmetiche dei campioni
simulati (istogramma) con la distribuzione teorica asintotica (con tratto
continuo nella figura di destra), cioè la normale con media uguale a
quella della popolazione e varianza uguale a quella della popolazione
diviso 5. L'adattamento ovviamente è carente, dato che si tratta di piccoli
campioni. L'indice di asimmetria è risultato di
^
β1 = 0,2458 e la kurtosi
Tecniche di Simulazione in Statistica.
165
^
β2= 2,7864; nella distribuzione Beta da cui provengono i valori singoli
che costituiscono il campione sia ha invece β1 = 0,5434 e β2 = 1,9786.
10
9
8
7
f(x)
6
5
4
3
2
1
0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
Figura 39 Densità della distribuzione beta di parametri α=0,5 e β=0,9 (a
sinistra). A destra vi è la distribuzione empirica di 10.000 medie di campioni
di ampiezza n = 5 di numeri pseudo-casuali generati da tale distribuzione.
9.2.
Schema di algoritmo di simulazione di distribuzioni
campionarie
In generale, per simulare la distribuzione campionaria di k stimatori
sulla base di m campioni di n numeri (o vettori) pseudo-casuali generati
da una particolare popolazione, si può usare una struttura generale di
programma secondo lo schema riportato di seguito e per il quale ho
adottato la grammatica del Visual Basic: lo schema è trasferibile in
qualsiasi linguaggio.
166
Marcello Chiodi
Algoritmo 13 Schema generale di simulazione di distribuzioni
campionarie (per campioni casuali semplici)
Pseudo-codice
Commento
Inizio
• m: numero campioni;
input m,n,k, tipo_pop,a(0)
• n: ampiezza campionaria
• k: numero stimatori da simulare
• tipo_pop:
caratteristiche
della
popolazione da cui generare i numeri
casuali di ogni campione, ossia tipo di
distribuzione e suoi parametri
• a(0): seme iniziale
• inizio simulazione
for j = 1 to m
• inizio generazione campione j-esimo
for i = 1 to n
• chiamata di una subroutine generica,
x(i) = genera(tipo_pop)
che restituisce un valore x(i) generato
dalla popolazione "tipo_pop"
• fine generazione campione j-esimo
next i
(quest'ultimo ciclo è valido solo per
campioni
casuali
semplici:
va
sostituito nel caso occorra generare
per esempio campioni in blocco)
for h = 1 to k
• chiamata di una subroutine generica
t(h) = calcola_stima(x( ))
che valuta sul j-esimo campione l’hesima
stima
(ad
esempio
t(1) = media(x( )); t(2) = mediana(x( )),
etc…
stima(j,h) = t(h)
• fine operazioni relative al campione jnext h
esimo
• fine generazione campioni
next j
• la matrice stima( ) di m righe e k
calcola_vettore_medie(stima( ))
calcola_mat_var_cov(stima( ))
colonne contiene gli m vettori simulati
calcola_distribuzione(stima( ))
di stime (di k componenti)
• queste tre linee di codice indicano la
chiamata di tre subroutines generiche
per il calcolo delle medie, della
matrice di varianza e covarianza delle
stime
simulate
e
delle
loro
distribuzioni di frequenza.
fine
Tecniche di Simulazione in Statistica.
167
In effetti alla fine del programma si può condurre una qualsiasi analisi
descrittiva sulle k colonne della matrice stima( ) come ad esempio il
calcolo dei livelli di significatività empirici di un test o il calcolo dei
percentili empirici delle k colonne, utili quando si vogliono approssimare
le distribuzioni di test di cui non si conoscono le distribuzioni esatte.
Evidentemente si è supposto, nello scheletro dell'algoritmo, che vi sia
la possibilità di memorizzare le m⋅k stime simulate in una matrice. Tale
ipotesi è poco realistica per delle simulazioni in cui m è nell’ordine delle
migliaia o dei milioni, per cui la memoria di un qualsiasi computer non
sarebbe sufficiente. In tal caso, che è il più frequente, occorre modificare
la procedura in modo tale che, ottenuto il vettore di stime t( ) relativo al
campione j-esimo, se si vogliono le medie e le varianze e covarianze
campionarie delle distribuzioni simulate delle stime t( ), si aggiornino le
somme e le somme dei prodotti prima del passaggio ad un nuovo j. Si
risparmierà memoria, ma si sarà obbligati a prevedere in anticipo quali
riassunti sintetici adottare delle k distribuzioni campionarie simulate. In
alternativa i valori di t( ) possono essere memorizzati su file: ciò può
comportare delle notevoli inefficienze, in quanto obbliga per ogni
campione ad effettuare una scrittura di dati su files che potrebbe essere
più lenta della fase di calcolo vera e propria per ognuno dei campioni.
In effetti, se si è interessati non solo ai primi due momenti della
distribuzione simulata degli stimatori, ma alla stima della sua forma,
conviene predisporre nel corso dell'esecuzione il calcolo della
distribuzione di frequenza in h classi di valori dei k stimatori, per la
realizzazione degli istogrammi. E' opportuno, per i motivi detti prima,
che l'aggiornamento delle frequenze delle h classi avvenga per ciascun
campione, e non alla fine della simulazione: ciò comporterà
l'inconveniente che il sistema di intervalli deve essere già predisposto,
per cui occorrerà avere un'idea approssimativa dell'ordine di grandezza
dei campi di variazione di ciascuno stimatore e fissare un valore di h
sufficientemente grande.
Ricordo inoltre che l'uso di un generatore basato su relazioni recursive
di qualsiasi tipo, consente la possibilità di ripetere la simulazione con gli
stessi campioni, se si ha cura di memorizzare il valore di a0 (o i valori di
a0,a1,…,ak-1 per i generatori basati su k valori) utilizzato per inizializzare
il generatore all'inizio dell'esecuzione del programma. Molti pacchetti o
linguaggi dedicati offrono la stessa possibilità consentendo di impostare
esplicitamente il valore del seme iniziale. E' buona pratica memorizzare
168
Marcello Chiodi
sempre tale valore iniziale, in modo da poter ripetere la stessa
simulazione, aggiungendo il calcolo di altre quantità; oppure si può
operare una prima esecuzione valutare gli intervalli di variazione delle
quantità oggetto della simulazione, ed in una seconda esecuzione
calcolare distribuzione in classi, istogrammi, etc.
9.3.
Schemi di simulazione diversi dal campionamento casuale
semplice
Nei capitoli precedenti si sono descritte alcune tecniche elementari per
la generazione di numeri casuali da particolari distribuzioni di variabili
aleatorie continue o discrete, univariate e multivariate. La generazione di
campioni di ampiezza n a rigore è un problema di generazione di vettori
di numeri casuali: ho omesso fin qui questa precisazione perché gli
esempi fin qui riportati in questo capitolo riguardavano campioni casuali
semplici: considerare un vettore pseudo-casuale generato da una v.c.
multipla a n componenti indipendenti e con distribuzioni marginali
n
uguali,
o
considerare
numeri
pseudo-casuali
generati
indipendentemente dalla stessa distribuzione è in questo caso esattamente
la stessa cosa.
Diverso è il caso in cui il campionamento non è casuale semplice,
perché si stanno simulando situazioni in cui è in qualche modo presente
una dipendenza fra i dati, oppure i singoli elementi del campione non
provengono dalla stessa distribuzione. Farò cenno qui solo a tre casi:
• estrazione di campioni da popolazioni finite;
• simulazione di modelli di regressione;
• simulazione di serie temporali (modelli ARMA) e simulazione di
serie territoriali o spaziali.
9.3.1.
Estrazione di campioni da popolazioni finite
Supponiamo di avere una popolazione di N unità su cui è stato rilevato
una variabile X, o un vettore di variabili, la distinzione è irrilevante.
Tecnicamente potremmo aver memorizzato N valori singoli, oppure, se
conveniente, una distribuzione di frequenza in k modalità distinte. Se
vogliamo simulare l'estrazione in blocco di un campione di ampiezza n,
occorrerà estrarre senza ripetizione n cifre casuali comprese fra 1 e N,
i1,i2,…,in. Questa successione determina gli indici delle unità da includere
Tecniche di Simulazione in Statistica.
169
nel campione, per cui il campione sarà costituito dai valori xi1,xi2,…,xin.
Ad esempio potrebbe essere necessario estrarre da un database di N
records un sottoinsieme di n records per condurre delle analisi pilota, o
per effettuare una verifica dei dati a campione; oppure, ed è l'esempio più
classico, si vuole estrarre un campione da una lista di individui per
effettuare un'indagine campionaria.
Per estrarre gli n indici possiamo ricorrere fondamentalmente a due
tecniche:
a) Se la frazione di campionamento f = n/N è piccola, conviene
generare n cifre casuali comprese fra 1 e N. Ad ogni generazione
occorre controllare che la cifra appena generata sia diversa dalle
precedenti, altrimenti occorre generarla nuovamente.
b) Un metodo efficiente, che non comporta confronti, consiste in un
riadattamento dell'algoritmo dello scambio descritto nel capitolo 4
per la generazione di permutazioni casuali. Si veda lo schema qui
riportato:
Algoritmo 14
Estrazione in blocco di un campione di
n elementi da una popolazione di N unità.
Inizializzazione
a) Porre Ci = i, i = 1,2,…,N;
b) porre i = 1;
Corpo dell'algoritmo
c) porre k = N-i+1;
d) generare a caso j fra 1 e k: si calcola j = int(k U)+1, essendo
U generato da una uniforme standard;
e) scambiare Cj con Ck;
f) porre i = i+1; se i>n terminare l’algoritmo, altrimenti
continuare col passo c);
In uscita si ottiene la sequenza degli n indici prendendo la
sequenza: CN-n+1,CN-n+2,…,CN
Si noti come al passo e) lo scambio serva ad eliminare Cj dalla
successiva generazione di un elemento della permutazione. Per mantenere
la massima somiglianza con l'algoritmo delle permutazioni casuali, che
può essere visto come un caso particolare di questo, quando n = N, ho
lasciato l'esecuzione con la numerazione a ritroso, per cui il campione di
indici è costituito dagli ultimi n indici Cj: CN-n+1,…,CN
170
Marcello Chiodi
Per esempio se si vuole estrarre in blocco un campione di n = 5
elementi, da una popolazione di N = 20 unità, possiamo riassumere le 5
iterazioni nella tabella che segue, in cui nelle colonne Ni è indicato il
valore relativo a ciascuna iterazione:
Iteraz
.i
0
1
2
3
4
5
k
20
19
18
17
16
N16
valore valore di j
di U
generato
generato j = int(k U)+1
inizializzazione:
0,31
7
0,59
12
0,61
11
0,12
3
0,88
15
16
16
16
16
16
15
N17
N18
N19
N20
17
17
17
17
3
3
18
18
18
11
11
11
19
19
12
12
12
12
20
7
7
7
7
7
Tavola 31 Esempio di esecuzione dell'algoritmo dello scambio per la
simulazione dell'estrazione in blocco di un campione di n = 5 elementi da
una popolazione finita di N = 20 unità.
Il campione in blocco è dunque formato dalle unità di posto
15,3,11,12 e 7.
9.3.2.
Simulazione di modelli di regressione
Nelle simulazioni relative a modelli di regressione la differenza
sostanziale rispetto alle situazioni esemplificate finora (in cui avevamo
simulato estrazioni di campioni casuali semplici da distribuzioni di
densità f(x,θ)) sta nel fatto che le osservazioni provengono da
distribuzioni differenti, in funzione appunto dei valori di uno o più
regressori.
Si abbia un generico modello di regressione:
Y[n×1] = g(X[n×k];θ[p×1]) + ε[n×1],
per cui si suppone che il vettore delle n risposte yi (osservabili) sia
dato dalla somma di una parte sistematica g(X[n×k];θ[p×1]), con g funzione
di una matrice X di n×k coefficienti noti e di un vettore θ di p parametri
incogniti, e di una componente accidentale ε (non osservabile
direttamente) con una particolare funzione di distribuzione
Tecniche di Simulazione in Statistica.
171
n-dimensionale generale f(ε;Ψ), in cui Ψ è il vettore dei parametri da cui
eventualmente dipende la distribuzione di ε, con E(ε) = 0, di modo che
E(Y) = g(X[n×k];θ[p×1]), per cui la speranza matematica di Y varia in
funzione di x. In particolare si può avere il modello di regressione lineare
multipla:
Y[n×1] = X[n×k] β[k×1] + ε[n×1],
oppure un modello di regressione non lineare:
Y = g(x;θ) + ε,
in cui la singola osservazione è data da:
Yi = g(xi,θ)+εi
(i = 1,2,…n).
essendo xi il vettore di regressori corrispondente all'i-esima
osservazione. Sto supponendo comunque, per semplicità, che gli errori
siano di tipo additivo; in generale la parte sistematica e la parte
accidentale si combinano secondo una generica funzione h(· ), tale che
Yi=h(g(xi,θ);εi).
La simulazione può servire ad esempio per indagare sul
comportamento di alcuni stimatori di θ al variare delle assunzioni fatte
sulla distribuzione di ε, o sulla possibilità di identificare correttamente il
tipo di componente sistematica (se lineare o no), o sulla capacità di
distinguere, sulla base di un campione di osservazioni, strutture di
distribuzioni degli errori differenti. Nel piano di simulazione occorre
impostare, oltre l'ampiezza campionaria n ed il numero di campioni m,
sia le caratteristiche della componente sistematica g(X,θ), che le
caratteristiche della distribuzione della componente accidentale
n-dimensionale ε.
Per la componente sistematica g(xi,θ); le scelte da fare riguardano:
la forma funzionale g(· ), ossia se si tratta di un modello lineare
•
oppure di un particolare tipo di modello non lineare, esponenziale,
logistico, o altro;
gli n punti k-dimensionali (fissati!) xi, ossia occorre fissare la matrice
•
X[n×k];
i valori veri dei p parametri θj (j = 1,2,…,p).
•
Per la componente accidentale ε occorrerà stabilire:
172
Marcello Chiodi
9il tipo di distribuzione f(ε;Ψ) ad esempio normale multivariata, o
normale di ordine p o altro;
9se le n componenti hanno la stessa dispersione (omoscedasticità),
oppure dispersioni diverse;
9se gli errori sono non correlati, o se invece le componenti di ε sono
autocorrelate e seguono per esempio un processo ARMA, o eventuali
altre forme di interdipendenza fra le componenti di ε.
9in generale occorre stabilire le componenti di Ψ, ed eventualmente
stabilire se e come verranno stimati dai dati simulati.
In merito alla scelta delle xi va notato che, nell'ambito dei modelli di
regressione di cui sto parlando, le xi vanno scelte prima dell'estrazione
degli m campioni, in quanto si presuppone che le xi siano dei coefficienti
noti e fissati. Infatti come è noto l'inferenza sui valori dei parametri è in
generale funzione della particolare configurazione delle xi: ad esempio
anche nella regressione lineare multipla con le assunzioni classiche di
normalità, indipendenza e omoscedasticità delle εi, la distribuzione dello
stimatore b di massima verosimiglianza del vettore dei parametri β (che
con queste ipotesi coincide con quello dei minimi quadrati ordinari)
dipende dalla matrice X dei regressori: infatti b è normale con media β e
matrice di varianza e covarianza data da σ2(X'X)-1.
Possibilmente il piano di simulazione dovrà quindi essere ripetuto per
diverse scelte delle xi. Ad esempio nella regressione semplice le xi
potrebbero essere scelte in progressione aritmetica, oppure secondo
particolari configurazioni prefissate, o essere scelte casualmente, ma in
quest'ultimo caso la particolare configurazione casuale delle xi dovrà
essere mantenuta per tutte le m simulazioni. Nella regressione multipla
può essere opportuno fissare particolari configurazioni sperimentali,
fattoriali e non. In una simulazione riguardante un modello lineare
generale, la matrice X potrà avere alcune colonne costutite da variabili
indicatrici 0/1 (dummy variables) di appartenza a gruppi.
Di seguito è riportata una schematizzazione delle fasi del
procedimento di simulazione di un modello di regressione.
Tecniche di Simulazione in Statistica.
Algoritmo 15
173
Simulazione di estrazione di campioni da
generici modelli di regressione.
Inizializzazione:
1) Fissare l'ampiezza campionaria n ed il numero di campioni da
generare, m.
2) Fissare gli n vettori a p-componenti xi, i = 1,2,…,n; (eventualmente
con una scelta casuale).
3) Fissare i valori delle k componenti di θ.
4) Fissare i valori di Ψ.
5) calcolare gli n valori teorici ξi = g(xi,θ), i = 1,2,…,n;
generazione del j-esimo campione:
6) successivamente per il j-esimo campione simulato (j = 1,2,…,m) si
genera un campione di numerosità n (ossia εj1, εj2 ,...,εjn) dalla
distribuzione f(ε;Ψ) stabilita per la componente accidentale ε.
7) Il singolo campione si ottiene ponendo yji = g(ξi+ ε j i ,) i = 1,2,…,n;
8) Sul singolo campione si calcolano le varie quantità che occorrono;
30
25
20
εij errori
simulati
y
15
retta vera
: y=3+2 x
rette stimate dai tre campioni:
1: Y = 7 . 2 3 8 + 1 . 4 1 5 x
2: Y = 1 0 . 1 2 8 + 1 . 0 2 x
3: Y =-0.227+2.356 x
10
5
0
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Figura 40 Simulazione dell'estrazione di tre campioni di 10 osservazioni da
una relazione di regressione.
174
Marcello Chiodi
Occorre al solito distinguere fra ciò che si sa per avere impostato la
simulazione, e ciò che si finge di non sapere nella fase di calcolo delle
stime e dei test su ciascun campione:
in pratica nella fase di impostazione del modello di simulazione il
ricercatore imita, o simula un possibile stato di natura;
nella fase di calcolo di stime ed altro deve comportarsi invece come il
ricercatore che non conosce lo stato di natura, ossia per esempio i valori
di alcuni parametri, su cui deve fare inferenza attraverso i dati di un
campione.
9.3.3.
Simulazione di modelli ARMA(p,q) di serie temporali e/o
territoriali
Per la generazione di una serie storica di lunghezza n generata da un
modello ARMA(p,q):
p
q
i=1
i=1
Zt= ∑ φiZt-i+εt - ∑ θiεt-i
è sufficiente generare volta per volta Zt (t=1,2,…,n) sulla base della
componente accidentale εi, delle p precedenti Zi e delle q componenti
accidentali precedenti; per inizializzare la simulazione occorre avere dei
valori iniziali di Zt e εt. Per esempio in S-PLUS sono implementate
subroutines per generare questo tipo di serie assegnando n, p e q. La serie
dei valori Zt può essere usata per simulare una componente accidentale ε
a componenti correlate in un modello di regressione, secondo lo schema
del paragrafo precedente, per confrontare per esempio il comportamento
di particolari stimatori in funzione delle ipotesi fatte sulla natura della
correlazione fra gli errori.
Similmente si possono simulare determinazioni di processi spaziali o
spazio-temporali (STARIMA e simili), o anche determinare delle
configurazioni pseudo-casuali di processi di punto.
9.4.
Distribuzione delle medie e delle varianze simulate e
relativi intervalli di confidenza
Nella simulazione dell'esempio esposto all'inizio di questo capitolo
conoscevamo i valori teorici, perché abbiamo generato campioni da una
distribuzione normale standardizzata. Se però non avessimo conosciuto
tali valori teorici, ma solo quelli asintotici, come è per esempio il caso dei
Tecniche di Simulazione in Statistica.
175
campioni estratti dalla distribuzione di Laplace o dalla distribuzione
uniforme, avremmo potuto stimarli dal campione simulato di m = 10.000
stime. Non si faccia confusione fra l’ampiezza campionaria (n = 5
nell’esempio) e il numero m di campioni simulati30. Più grande è m,
maggiore è la precisione dei risultati ottenuti per simulazione, nel senso
che è minore l’errore campionario della media e della varianza delle
stime simulate.
6
6HHP
PqqJJUUDDQQGGHHOOHHGGLLVVWWUULLEEXX]]LLRRQQLLGGHHOOOOHHP
PHHGGLLHHHHGGHHOOOOHH
YYDDUULLDDQQ]]HHGGHHOOOOHHGGLLVVWWUULLEEXX]]LLRRQQLLVVLLP
PXXOODDWWHHVVRRQQRR
DDSSSSUURRVVVVLLP
PDDEELLOOLLGGDDOOOODDGGLLVVWWUULLEEXX]]LLRRQQHHQQRRUUP
PDDOOHH
Se Z è lo stimatore di cui si sta simulando la distribuzione, per m
grande abbiamo i noti risultati ricavati dal teorema limite centrale:
q.c.
Mm(Z) → E(Z);
q.c.
Sm2 (Z) →
V(Z)
Mm(Z)-E(Z)
∼ N (0;1)
V(Z)/m
Sm2 (Z)-V(Z)
∼ N (0;1)
[µ4(Z)-V2(Z) ] / m
avendo indicato con Mm(Z) e Sm2 (Z) la media e la varianza empirica,
rispettivamente, degli m valori simulati di Z, mentre E(Z) è la speranza
matematica di Z, V(Z) la sua varianza teorica e µ4(Z) il momento quarto
centrale di Z; quest'ultimo può essere stimato mediante M4(Z), momento
quarto centrale empirico, valutato sugli m valori simulati di Z.
Mediante questi risultati è ovviamente possibile costruire degli
intervalli di confidenza asintotici31 per E(Z) e V(Z), con probabilità
fiduciaria 1-α, sulla base dei valori critici kα della normale standard, che
hanno una probabilità α di essere superati in valore assoluto per effetto
del caso:
30
31
Non si faccia confusione nemmeno, per esempio, fra la media aritmetica delle varianze
simulate, e la varianza delle medie simulate!
Nella costruzione degli intervalli evidentemente si sostituirà V(Z) con il valore simulato S2(Z),
perchè V(Z) in generale non è nota.
176
Marcello Chiodi
Mm(Z) - kα Sm (Z)/ m ≤ E(Z) ≤ Mm(Z)+ kα Sm(Z)/ m
Sm2 (Z)-kα
[M4(Z) - Sm4 (Z)]/m ≤ V(Z) ≤ Sm2 (Z)+kα
[M4(Z) - Sm4 (Z)]/m
//DDOOXXQQJJKKHH]]]]DDGGHHJJOOLLLLQQWWHHUUYYDDOOOOLLqqSSUURRSSRRUU]]LLRRQQDDOOHHDD P
P
Questi risultati sono molto importanti e forniscono senz'altro delle
ottime approssimazioni in quanto m è in generale elevato e quindi le
approssimazioni normali alle distribuzioni di Mm(Z) e di Sm2 (Z) sono
senz'altro molto accurate.32
Come appare evidente da questi risultati:
OO
HHUUUURRUUHHVVWWDDQQGGDDUUGGGGLLXXQQRRVVWWXXGGLLRRFFRRQQGGRRWWWWRRSSHHUUVVLLP
PXXOODD]]LLRRQQHH
qqSSUURRSSRRUU]]LLRRQQDDOOHHDD P
P
come si è già visto per le tecniche di integrazione con metodo
Montecarlo, per cui per ottenere risultati 10 volte più precisi (in media)
occorre centuplicare il numero dei campioni simulati.
9.4.1.
Stima della distorsione e dell’errore medio di campionamento
E' evidente che una delle applicazioni più naturali delle tecniche di
simulazione in statistica consiste nella valutazione delle caratteristiche di
uno stimatore Tn di un parametro θ, sulla base di un campione di n
osservazioni, e di cui non si conosca l'esatta distribuzione.
Per la distorsione (o bias) si ha:
Bias = E(Tn)-θ ;
quando il bias è nullo lo stimatore si dice corretto. Se si vuole stimare
la distorsione mediante simulazione basterà valutare:
Bias ≅ Mm(Tn)-θ ;
essendo Mm(Tn) la media aritmetica di m valori simulati di Tn calcolati
in m campioni generati dalla popolazione di parametro θ. In modo simile
l'errore quadratico medio è dato da:
eqm = E[Tn-θ]2 = V(Tn)+[Bias]2
32
Ancora una volta, non si confonda la distribuzione di Z con quella di Mm(Z)!
Tecniche di Simulazione in Statistica.
177
e si potrà stimare con:
eqm ≅ Sm2 (Tn) + [Mm(Tn)-θ]2
essendo Sm2 (Tn) la varianza di m valori simulati di Tn.
9.4.2.
Come stimare i parametri di una distribuzione campionaria?
Sembrerebbe ovvio stimare la speranza matematica di uno stimatore o
test Tn, E(Tn), e la sua varianza, V(Tn), attraverso la media Mm(Tn)e la
varianza S2(Tn) empiriche di m valori simulati di Tn: questo è quello che
si fa usualmente e senz'altro rappresenta una buona approssimazione. Se
si riflette bene però, stimare E(Tn) e V(Tn) attraverso la media e la
varianza campionaria è a rigore il migliore modo di operare solo se la
distribuzione di Tn è normale, diversamente i due migliori stimatori di
tali parametri potrebbero essere altre funzioni dei valori simulati di Tn!
Pertanto sarebbe buona norma, specie nel caso in cui non è nota la forma
della distribuzione di Tn, affiancare al calcolo dei primi due momenti
quello degli indici di asimmetria e kurtosi e di altri indici di posizione
calcolati sul campione di m valori simulati. Si veda più avanti l'esempio
sulla regressione non lineare e la differenza fra medie e mediane delle
distribuzioni simulate.
9.4.3.
Confronti con varianze asintotiche
Quando Tn è lo stimatore di massima verosimiglianza di un parametro
θ, si può confrontare la varianza campionaria stimata mediante
simulazione con la varianza asintotica, data dall'inverso dell'informazione
di Fisher, ossia il limite inferiore di Rao-Cramer per la varianza di uno
stimatore non distorto di un parametro θ, che nel caso regolare è dato da:
2 -1
2
  ∂ log L  
  ∂ log L 

V(Tn) ≥ 1/In(θ) = E 
E
=


 
2
  ∂θ  
  ∂θ

2
-1
 ∂ log L 
essendo In(θ) = E 
 l'informazione del campione su θ ed L la
 ∂θ 
verosimiglianza campionaria.
2
 ∂ log f(x;θ) 
E' noto che se I1(θ) = E 
 è l'informazione della
∂θ


singola osservazione su θ, per un campione casuale semplice di n
178
Marcello Chiodi
osservazioni estratte da una distribuzione di densità f(x; θ) si ha: In(θ) =
n I1(θ).
Da ciò discende il noto risultato asintotico, nel caso di problemi di
stima univariati regolari, per campioni casuali semplici:
-1
2
.   ∂ log f(x;θ) 
n V(Tn) →
- E 

n→∞
∂θ2
 

Nel caso regolare si ha, per n→∞:
2
  ∂ log L  
E 
(Tn-θ)
  ∼ N (0;1)
  ∂θ  
Risultati analoghi, come è noto, valgono quando θ = [θ1, θ2, … ,θk] è
un vettore di k parametri: lo stimatore Tn di massima verosimiglianza di θ
ha matrice di varianze e covarianze asintotiche data dall'inversa della
matrice di informazione In(θ), di elemento generico:
 ∂ log L ∂ log L 
{In(θ)}ij = E 

∂ θj 
 ∂ θi
i,j = 1,2,…,k
V∞(Tn) = [In(θ)]-1
e:
In ogni caso la varianza asintotica fornisce il limite inferiore della
varianza campionaria di uno stimatore corretto, e in generale questa è
proporzionale a n-1. Quindi in un piano di simulazione, in cui si simuli la
distribuzione di uno stimatore Tn per diversi valori di n, è sempre utile
confrontare la varianza della distribuzione simulata di Tn, Sm2 (Tn), con tale
valore asintotico V∞(Tn). Per eliminare la dipendenza da n si può
confrontare l'inverso dell'informazione di Fisher per singola
osservazione, con la sequenza dei valori n· Sm2 (Tn), oppure si può costruire
la sequenza di valori Sm2 (Tn)/ V∞(Tn) potendo così apprezzare,
eventualmente anche in modo grafico, come tali valori tendono a
convergere al valore asintotico.
Si può anche valutare l'informazione osservata nel singolo campione x
in corrispondenza della stima di massima verosimiglianza θ^ :
2
I^n(θ^
2
 ∂ log L (θ; x)
; x) = E 
θ=θ^
∂θ2


Tecniche di Simulazione in Statistica.
179
e calcolare poi la media, nelle m simulazioni, delle quantità valutate
nei singoli campioni. Questa sarà ovviamente una stima consistente
dell'informazione di Fisher.
9.4.4.
Esempio sulla distribuzione di Laplace
Per chiarire alcuni dei concetti del paragrafo precedente, riprendo
ancora il problema della stima dei due parametri della distribuzione di
Laplace, o esponenziale doppia, di densità:
1 -|x-µ|/σ1
e
.f(x)=
; con E(X) = µ e E[|X-µ|] = σ1,
2σ1
per cui µ è il parametro di posizione e σ1 quello di scala. Se si dispone
di un campione casuale semplice di n osservazioni, lo stimatore di
Massima Verosimiglianza di µ è la mediana campionaria Me, mentre lo
stimatore MV di σ1 è S1, scostamento semplice medio dalla mediana,
cioè:
n
S1 =
∑ |xi-Me|/n.
i=1
E' facile verificare che:
2
1
 ∂ log f(x;µ,σ1) 
I1(µ) = E 
 = 2,e
µ
σ
∂


1
2
1
 ∂ log f(x;µ,σ1) 
I1(σ1) = E 
 = 2,
σ1
∂ σ1


per cui le varianze asintotiche dei due stimatori MV risultano date da:
.
σ 21
V∞( Me) = lim
V(Me)
=
n →∞
n, e
.
σ 21
V∞(S1) = lim
V(S
)
=
1
n →∞
n.
Dato che questo problema è indipendente dai particolari valori dei
parametri di posizione e di scala si possono estrarre campioni di
ampiezza n da una distribuzione di Laplace standardizzata, ossia con
parametri veri µ = 0 e σ1 = 1, applicando le relazioni precedenti,
dovremo avere asintoticamente:
E(Me) = µ = 0,
(questa relazione vale per ogni valore di n, per
•
ovvie considerazioni di simmetria)
E(S1) = σ1 = 1,
•
n V∞( Me) = 1,
•
180
•
Marcello Chiodi
n V∞(S1) = 1.
σ 21
V∞( Me)= lim
V(Me) = n , e
n →∞
.
σ 21
V∞(S1)= lim
V(S 1) = n .
n →∞
.
E' interessante allora stimare, attraverso un piano di simulazione, il
comportamento dei due stimatori per diversi valori di n, per capire quale
validità pratica possano avere i valori asintotici sopra riportati, ossia per
valutare approssimativamente per quali valori di n essi sono delle buone
approssimazioni rispettivamente delle medie e delle varianze
campionarie dei due stimatori.
Fissati dunque 13 diversi valori di n, tutti dispari per evitare ambiguità
nel calcolo della mediana, ho simulato per ciascuno di essi l'estrazione di
m = 10.000 campioni di ampiezza n da una distribuzione di Laplace, con
il metodo di inversione citato nel capitolo 4; su ciascun campione
simulato ho calcolato:
•
la mediana Me;
•
lo scostamento semplice medio dalla mediana S1;
(Me ed S1 sono le stime MV dei due parametri µ e σ1: nel corso della
simulazione ovviamente ci si comporta come se non si conoscessero i
veri valori dei parametri!).
Ho ottenuto quindi, per ciascun valore di n, 10.000 coppie di stime
simulate (Me;S1) di cui ho calcolato medie e varianze empiriche; non
riporto per brevità, le correlazioni e le covarianze simulate, che risultano
comunque molto prossime al valore teorico di zero.
La tavola che segue mostra, per ciascuno dei valori di n riportati nella
prima colonna, i risultati più interessanti:
ƒnella seconda e nella terza colonna vi sono le medie simulate dei due
stimatori;
ƒnella quarta colonna sono riportate le varianze simulate di Me,
moltiplicate per n, in modo da facilitare il confronto col valore
asintotico;
ƒnella quinta colonna sono riportate le varianze teoriche di Me, ancora
moltiplicate per n; tali varianze teoriche esatte, per campioni di
ampiezza dispari, si possono calcolare in modo esatto, ma con un
procedimento non elementare, calcolando la distribuzione esatta della
mediana in campioni di ampiezza dispari estratti dalla distribuzione
di Laplace;
Tecniche di Simulazione in Statistica.
181
ƒnella sesta colonna sono riportate le varianze simulate di S1,
moltiplicate per n, in modo da facilitare il confronto col valore
asintotico;
ƒnella settima colonna è riportato l'errore quadratico medio simulato di
S1, poiché questo stimatore risulta in generale distorto; non ho
riportato l'errore quadratico medio simulato della mediana, dal
momento che quest'ultima ha una distorsione simulata trascurabile.
n
5
7
11
15
25
35
51
75
101
151
201
301
501
M(Me)
-0,0039
-0,0092
0,0035
-0,0000
-0,0002
-0,0002
-0,0026
-0,0028
0,0011
-0,0009
-0,0003
0,0006
-0,0002
M(S1)
0,8641
0,9075
0,9511
0,9625
0,9767
0,9857
0,9890
0,9943
0,9934
0,9968
0,9965
0,9978
0,9983
n×Var(Me)
simulata
1,7438
1,6280
1,5157
1,4382
1,3378
1,2637
1,2503
1,1911
1,1870
1,1539
1,1159
1,0706
1,0860
teorica
1,7559
1,6495
1,5211
1,4452
1,3420
1,2870
1,2359
1,1930
1,1654
1,1344
1,1160
1,0943
1,0727
n· var(S1) n· Eqm(S1)
0,8550
0,9012
0,9750
0,9674
0,9766
0,9566
0,9792
1,0177
0,9872
1,0033
0,9835
0,9887
1,0055
0,9473
0,9611
1,0013
0,9885
0,9902
0,9638
0,9854
1,0201
0,9916
1,0048
0,9860
0,9902
1,0068
Tavola 32 Risultati sintetici di 13 simulazioni, ciascuna di 10.000 campioni
estratti da una distribuzione di Laplace standardizzata (si sono usati solo
valori dispari di n per evitare ambiguità nel calcolo della mdiana)
Per brevità, e per non appesantire troppo la tavola ed i grafici, non ho
riportato gli intervalli di confidenza asintotici (asintotici perché m è
grande!) costruiti attorno le medie e le varianze simulate. Per facilitare la
lettura dei dati, nella figura che segue sono riportati i valori delle
varianze simulate (moltiplicate per n) al variare di n. Empiricamente
possiamo dire che per quanto riguarda la distribuzione campionaria della
mediana la convergenza al valore asintotico appare molto lenta: ancora
per n = 501 vi è uno scarto intorno all'8%. Per la distribuzione di S1
invece il valore asintotico della varianza appare soddisfacente già per n
prossimo a 50.
Dal momento che però S1 è uno stimatore distorto, è opportuno
esaminare anche la figura successiva, in cui sono riportate le medie
simulate di S1 e gli errori quadratici medi moltiplicati per n, confrontati
182
Marcello Chiodi
col valore asintotico, che è uguale ad uno per entrambe le quantità.
L'errore quadratico medio, moltiplicato per n, si assesta presto verso il
valore asintotico, mentre la distorsione continua ad essere presente anche
per valori di n intorno a 100.
1.8
1.7
1.6
1.5
1.4
n Var (Me)
n Var (S 1 )
1.3
1.2
1.1
1.0
0.9
0.8
0
50
100 150 200 250 300 350 400 450 500
n
Figura 41
Varianze simulate della mediana e di S1, moltiplicate per n.
1.1
1.0
M (S 1 )
n × e.q.m. (S 1 )
0.9
0.8
0
50
100 150 200 250 300 350 400 450 500
n
Figura 42 Medie simulate di S1 ed errori quadratici medi simulati di S1
moltiplicati per n.
Per avere un'idea sulla distribuzione congiunta simulata dei due
stimatori, nella figura successiva sono riportate le rappresentazioni
Tecniche di Simulazione in Statistica.
183
grafiche relative alla distribuzione delle 10.000 coppie di valori simulati
(Me;S1) per n = 15; a sinistra è riportato l'istogramma, mentre a destra è
rappresentata la densità bivariata con curve di livello, ottenuta
interpolando l'istogramma mediante una funzione spline bivariata, in
modo da ottenere una migliore resa grafica e delle buone
approssimazioni delle curve di livello. L'esame dei due grafici consente
di dire che certamente per n = 15 non si può approssimare la
distribuzione congiunta dei due stimatori mediante la distribuzione
asintotica, ossia la normale bivariata. La distribuzione simulata delle
10.000 coppie di valori simulati (Me;S1) per n = 501, che non riporto per
brevità, risulta invece abbastanza vicina a quella di una normale
bivariata.
Figura 43 Distribuzione congiunta simulata di Me e S1, ricavata da
m = 10.000 campioni di ampiezza n = 15 provenienti da una distribuzione di
Laplace standardizzata: a sinistra l'istogramma empirico delle 10.000
coppie di valori; a destra stima della densità e curve di livello mediante
spline bivariata.
9.5.
Simulazioni e inferenza
Come si è visto nelle sezioni precedenti con degli esempi, le
simulazioni in statistica possono servire per stimare delle distribuzioni
campionarie; l'idea di base è quella di prendere un campione di ampiezza
184
Marcello Chiodi
m da una distribuzione ignota; l'errore standard nella stima di tali
distribuzioni è proporzionale in generale a 1/ m . E' evidente che le
simulazioni sono dunque uno strumento importante per l'inferenza
statistica, dal momento che per poter fare inferenza è fondamentale la
conoscenza delle distribuzioni campionarie di test e stimatori.
I vantaggi sono:
•
grande flessibilità di uso e applicabilità ad un gran numero di
situazioni, almeno tutte quelle per le quali può essere impostato un
modello parametrico;
•
grande semplicità: infatti per applicazioni elementari è sufficiente
saper generare particolari campioni di numeri casuali e saper
calcolare lo stimatore o il test di interesse su ciascun campione, per
cui tale tecnica è utilizzabile a diversi livelli dello studio;
rapidità di applicazione;
•
•
facilità di comunicazione: essendo ormai molto comune l’impiego di
tecniche di simulazione in lavori scientifici, raramente è necessario
spiegare in dettaglio il particolare schema utilizzato.
•
Il valore di uno studio di simulazione può anche essere di tipo
essenzialmente comparativo: far vedere che uno stimatore è migliore
di un altro33, che un test è più potente di un altro, che una certa
approssimazione analitica è soddisfacente (o è migliore di altre) per
certi valori di n, etc.
•
Le tecniche di simulazione forniscono uno strumento molto flessibile
per valutare empiricamente l'efficacia di alcune tecniche inferenziali
di cui non si conoscono le caratteristiche esatte, come vedremo più
avanti con alcuni esempi
Gli svantaggi, a mio avviso, sono fondamentalmente:
Ç si tratta di un approccio empirico; una cosa è, ad esempio, far vedere
tramite simulazione che facendo crescere n il livello di significatività
empirico di un test si avvicina al valore nominale α, e che non se ne
discosta in modo significativo, un' altra è invece dimostrare
analiticamente che il livello di significatività tende ad α al divergere
di n!
Ç I risultati ottenuti, pur con le cautele del punto precedente, sono
riferibili solo alle situazioni effettivamente sperimentate; pertanto, se
33
Nel senso che ha una distorsione simulata inferiore, e presenta una varianza campionaria
simulata inferiore.
Tecniche di Simulazione in Statistica.
185
un certo risultato appare applicabile in situazioni nelle quali si sono
simulati campioni provenienti da una popolazione che dipende da un
parametro θ, e si sono fissati ad esempio 10 valori di θ, nulla in
generale garantisce che i risultati possano essere estesi a qualsiasi
valore di θ!
Ç Si potrebbe fare anche un’altra obiezione: e’ poco elegante ricorrere
ad una simulazione se è possibile ricorrere a qualche risultato analitico
ancorchè asintotico.
A questo proposito voglio fare una considerazione personale: poiché
la teoria dell’inferenza statistica in buona parte si fonda sulle proprietà
delle distribuzioni campionarie di funzioni dei dati campionari (quali test
e stimatori), la possibilità di fare materialmente inferenza si basa quasi
sempre sulla possibilità di trovare le distribuzioni campionarie esatte di
particolari funzioni dei dati campionari. Tuttavia è noto che tali
distribuzioni campionarie esatte sono note solo in casi particolarissimi,
sebbene importanti in teoria, ed in buona parte riconducibili alla famiglia
di distribuzioni esponenziali: ad esempio le medie aritmetiche di
campioni provenienti da distribuzioni normali, o da distribuzioni di
Poisson, o da distribuzioni gamma (ma solo se è noto il parametro di
forma!); la frequenza relativa di successo in esperimenti bernoulliani; la
varianza campionaria per campioni provenienti da distribuzioni normali,
e tutta una serie di statistiche da essa derivate: test χ2 per la verifica di
ipotesi concernenti la varianza, e test di bontà dell'adattamento X2 (ma
solo per grandi campioni!); test t, test F per confronto fra varianze, o per
l’analisi della varianza, il valore massimo di un campione proveniente da
una uniforme, etc. Se non si ipotizza la normalità degli universi da cui
provengono i campioni, sono pochi i casi di stimatori di massima
verosimiglianza di cui si conosce la distribuzione esatta! Si pensi che
pure per campioni provenienti da distribuzioni normali si può ad esempio
effettuare un test esatto sulla differenza fra due medie per campioni
indipendenti con varianze incognite, solo ipotizzando che le varianze
incognite siano uguali.
Con questo inciso ho voluto solo ricordare che le distribuzioni
campionarie esatte note sono veramente poche, rispetto alla gamma
infinita di possibili modelli ipotizzabili, o comunque utilizzati in pratica.
186
Marcello Chiodi
Il più delle volte sono note solo delle approssimazioni asintotiche fra cui
ricordo le più classiche, fra quelle usate in statistica34:
• il teorema limite centrale, secondo il quale una media aritmetica (per
una distribuzione con varianza finita), opportunamente standardizzata,
si distribuisce asintoticamente secondo una normale standard;
• lo stimatore di massima verosimiglianza, sotto certe condizioni di
regolarità, asintoticamente ha valore atteso uguale al valore vero del
parametro e varianza campionaria proporzionale all’inverso
dell’informazione di Fisher ed inoltre, standardizzato mediante tali
valori teorici, si distribuisce asintoticamente secondo una normale
standard;
• per test costruiti mediante il rapporto delle verosimiglianze λ si sa che
asintoticamente, e sotto opportune condizioni di regolarità, -2logλ si
distribuisce secondo una v.c. χ2.
I risultati sopra ricordati non sono esatti ma solo asintotici; pertanto
sebbene siano stati ricavati in modo analitico, hanno valore pratico solo
se si utilizzano come approssimazioni per valori di n grandi. Come
succede sempre per dei risultati asintotici o in generale per degli sviluppi
in serie analitici: oltre l’indiscutibile e ovvia importanza teorica, la loro
utilità pratica risiede nel fatto che si presuppone che il risultato, per n>nε
risulti esatto a meno di ε. Comunque quando si applicano tali risultati a
campioni di dimensione finita, grandi quanto si vuole, hanno sempre il
valore di approssimazioni. Quindi a poco vale dire che mediante
simulazione si ottengono solo risultati approssimati, perché questa è la
regola, eccetto pochi casi, per quasi tutte le distribuzioni campionarie.
Il valore di una simulazione però può risiedere proprio nel fatto che
spesso esistono dei risultati asintotici di riferimento: una simulazione
condotta ad esempio per valori di n = 5,10,20,50,100,200 può servire per
capire per quale valori di n l’approssimazione asintotica è già utilizzabile
a fini pratici e per valutare l'ordine di grandezza dell'errore che si
commette. In fondo se non si conosce una distribuzione campionaria,
estrarne un campione di numerosità m elevata è ragionevole, così come è
34
Oltre quelle citate nel testo cito, fra le altre, alcune tecniche più complesse per la
determinazione di approssimazioni a distribuzioni campionarie: la formula di
Barndorff-Nielsen per la distribuzione condizionata dello stimatore di massima
verosimiglianza (Barndorff-Nielsen, 1983), le tecniche fondate sulla determinazione dei punti
di sella (si veda anche Chiodi, 1994, Daniels, 1954, Ronchetti, 1990) e i miglioramenti alla
distribuzione di -2logλ fondati sulle correzioni di tipo Bartlett.
Tecniche di Simulazione in Statistica.
187
ragionevole condurre un'indagine campionaria per avere delle
informazioni su una distribuzione empirica non rilevabile in modo totale!
Addirittura in alcuni lavori recenti si ritrova il termine "exact sampling
distributions" (Daniels, 1991) con riferimento a distribuzioni
campionarie simulate su m = 5.000.000 di campioni, o comunque su un
numero di campioni tanto elevato che lo scarto fra la distribuzione
simulata e quella teorica è trascurabile a fini pratici, essendo dell'ordine
di 1/ m . D'altra parte, secondo una estensione del concetto di
distribuzione campionaria, questa è il limite cui tende la distribuzione dei
valori assunti da uno stimatore in un numero infinito di campioni. Invece
di un numero infinito di campioni, si estrae un numero m molto grande di
campioni.
9.6.
Simulazione di distribuzioni campionarie di test
In molti degli esempi fatti finora, si è trattato prevalentemente il
problema della simulazione di distribuzione campionarie di stimatori di
parametri della popolazione.
In effetti le tecniche di simulazione sono applicabili per indagare sulla
distribuzione di qualsiasi funzione dei dati campionari: in particolare si
può indagare sulla distribuzione di test statistici per la verifica di
particolari ipotesi su parametri di interesse o per la verifica di ipotesi
funzionali.
Le tecniche di simulazione si prestano bene a questo scopo in quanto
nella fase di impostazione della simulazione si fisserà il vero stato di
natura, ad esempio H0 o H1 e quindi si valuteranno i test sui campioni
simulati generando dalla popolazione specificata da H0 o da H1, e si
vedrà ad esempio quante volte portano a delle decisioni corrette.
Nell'ambito della verifica di ipotesi, la simulazione relativa a
statistiche-test, pur rientrando nel contesto generale della simulazione di
distribuzioni campionarie, presenta tuttavia caratteristiche in parte
differenti. Infatti per l'uso di un test non sempre interessa conoscere
l'intera distribuzione campionaria, ma alcuni aspetti particolari fra cui:
•
il livello di significatività α effettivo relativo a particolari regioni di
rifiuto R, costruite magari con metodi approssimati, oppure costruite
per modelli diversi da quelli per i quali si sta simulando l'estrazione
campionaria sotto H0; tipico il caso della verifica di ipotesi relative a
medie o altri parametri impiegando test costruiti sotto l'assunzione di
188
•
•
•
•
Marcello Chiodi
normalità: spesso si vuole verificare il comportamento di tali test per
campioni estratti da popolazioni non normali;
il valore critico, o in generale la regione di rifiuto, in corrispondenza
di valori di α prefissati; questo può essere utile per esempio quando
si vuole costruire mediante simulazione un prontuario per un test di
cui non si conosce la distribuzione campionaria esatta: i punti critici
stimati corrispondono a particolari percentili della distribuzione
campionaria simulata estraendo campioni dal modello specificato da
H0;
simulare l'estrazione di campioni generando dalla distribuzione
specificata da H1 anziché da H0, serve per stimare il potere di un test
(1-β);
la simulazione può essere uno strumento molto efficace per
confrontare test costruiti con tecniche diverse per la verifica di una
stessa ipotesi H0: si potrà valutare se un test è significativamente più
potente di un altro, o se due test hanno livelli α effettivi
significativamente diversi.
il confronto fra test può essere effettuato calcolando le diverse
statistiche test sugli stessi campioni simulati, calcolando alla fine in
quanti casi i test forniscono lo stesso risultato, in termini di
accettazione o rifiuto di H0 e quali si mostrano migliori, ossia
portano più spesso a decisioni corrette.
9.6.1.
Stima dei livelli di significatività e del potere di un test
Il livello di significatività di un test Z per la verifica di una ipotesi H0
con regione di rifiuto Rα è definito come:
α = Prob{Z∈Rα|H0}
e per le distribuzioni dotate di densità:
α =⌠

⌡
f(x1,x2…,xn|H0)dx1dx2…dxn
z(x)∈Rα
Anche questo livello di significatività può essere stimato attraverso
una simulazione, se la distribuzione campionaria di Z sotto H0 non è nota.
Dal momento che α è una probabilità, un’idea elementare è quella di
stimare α attraverso una frequenza relativa di successo secondo uno
schema binomiale:
Tecniche di Simulazione in Statistica.
•
•
•
•
•
189
si fissa una zona di rifiuto Rα;
si generano m campioni indipendenti di ampiezza n dalla
distribuzione di densità f(x1,x2…,xn|H0) ossia da una distribuzione per
la quale H0 è vera;
su ciascuno di essi si calcola il valore del test zj (j = 1,2,…,m)
si verifica se zj∈Rα,, ossia se per quel campione simulato si rifiuta
l'ipotesi nulla, che sappiamo essere vera per costruzione!
quindi si conta il numero mα di valori zj tali che zj∈Rα, e si stima
α mediante la relazione:
α^ = mα/m
numero di campioni simulati che portano
al rifuto di H0
livello di significatività
= numero totale di campioni simulati da H
simulato
0
Come è ovvio il problema è del tutto simile a quello della stima di un
integrale del capitolo precedente o della stima di una probabilità
accennata nel secondo capitolo.
Spesso Rα è la regione di rifiuto con livello di significatività α esatto
nell'ipotesi che il campione provenga da una certa distribuzione
f(x1,x2…,xn|H0): usualmente si vuole vedere se il test è robusto (nel senso
di Box, 1954), ossia se il livello di significatività ed il potere del test non
cambiano sensibilmente anche se la distribuzione congiunta di
provenienza del campione ha densità g(x1,x2…,xn;ψ|H0) anzichè f(⋅);
occorrerà possibilmente valutare la robustezza del test in funzione di
diversi valori del parametro (o vettore di parametri) ψ che specifica il
tipo di allontanamento (parametrico) dalle assunzioni di base.
Ad esempio per un test bilaterale per una media, essendo incognita la
varianza, il test ottimo per campioni provenienti da distribuzioni normali
è il test t di Student, e la regione di rifiuto Rα è costituita dai valori t per i
quali |t|≥tα/2; può essere interessante vedere, mediante simulazione, se il
test t è robusto, rispetto alle assunzioni di base, o solo rispetto ad alcuni
allontanamenti, ossia se, cambiando f(x1,x2…,xn|H0), il livello effettivo di
significatività è sufficientemente vicino all'α nominale, lasciando
190
Marcello Chiodi
inalterati uguali tutti gli altri elementi, ossia l'ampiezza campionaria, la
funzione test, la regione Rα, e l'ipotesi nulla!
Si veda ora la figura riportata più avanti. Nella parte di sinistra, è
rappresentato il livello di significatività di un test unilaterale, ossia l’area
α sottesa alla destra del valore critico dalla densità della distribuzione
campionaria di un test generico Z sotto l’ipotesi nulla, insieme con la
probabilità di un errore di seconda specie β commesso in corrispondenza
di una particolare ipotesi alternativa H1 (area alla sinistra di zα sottesa
dalla densità della distribuzione campionaria di Z sotto l'ipotesi
alternativa; se invece prendessimo l'area a destra di zα avremmo il potere
del test). E’ raro che le distribuzioni campionarie di Z sotto le diverse
ipotesi siano note!35 Anche il problema della determinazione dell’errore
di seconda specie è dello stesso tipo: infatti occorrerà valutare:
βj = 1-Prob{z∈Rα|H1j}
βj = 1-⌠

⌡
f(x1,x2…,xn|H1j)dx1dx2…dxn
z(x)∈Rα
essendo H1j la j-esima ipotesi alternativa.
35
Qui ovviamente non ci si pone il problema della costruzione del test, che ovviamente
costituisce un dato del problema.
Tecniche di Simulazione in Statistica.
191
^
f(z|H 0 )
f(z|H0 )
^
f(z|H 1 )
f(z|H 1 )
β
α
z
α^
β
zα
z
zα
Figura 44 Distribuzione teorica (a sinistra) di un generico test z sotto
l'ipotesi nulla e sotto un'ipotesi alternativa: probabilità teoriche di errori di
primo tipo (α) e di secondo tipo (β). A destra la distribuzione simulata dello
stesso test z sotto l'ipotesi nulla e sotto un'ipotesi alternativa:
^
probabilità stimate di errori di primo tipo (α^ ) e di secondo tipo (β ).L'
esempio è basato sulla distribuzione di una varianza campionaria con 10
gradi di libertà.
Si può allora stimare α con il procedimento visto prima, mentre per la
stima di β (o dei diversi βj se si sono simulate diverse distribuzioni
alternative) occorrerà procedere ad un esperimento di simulazione con m
campioni generati da H1 anziché da H0. Si veda infatti la parte destra
della figura appena riportata: rappresenta la stessa situazione della parte
sinistra della figura, solo che le distribuzioni campionarie del test Z,
quella sotto l’ipotesi nulla e quella sotto l'alternativa, sono state ottenute
mediante simulazione su 1.000 campioni ciascuna. I vari βj verranno
stimati con la stessa relazione empirica utilizzata per la stima di α:
β^j = 1-mα|Η1j/m
potere del test simulato =
1-β^ j = mα|Η1j/m
numero di campioni simulati da H1 che
portano al rifuto di H0
numero totale di campioni simulati da H1
avendo indicato con mα|Η1j il numero dei campioni che, nell’esperimento
simulato dalla popolazione specificata da H1j, ricadono nella zona di
accettazione (complementare di Rα) dell’ipotesi nulla, per un particolare
192
Marcello Chiodi
livello nominale α. In pratica si conta il numero di campioni, generati da
ciascuna delle distribuzioni alternative, che non conducono al rifiuto di
H0. Nella figura precedente la parte sinistra è quella classica riportata nei
testi di inferenza statistica; la parte destra è sempre la stessa figura, in cui
però le distribuzioni sono simulate. Sarà opportuno ripetere l’esperimento
in corrispondenza di diverse ipotesi alternative, e si potrà, come al solito,
costruire un intervallo di confidenza di ampiezza 1-γ per i livelli di
significatività α e per gli errori di seconda specie β dalla teoria asintotica
sulla distribuzione delle frequenze relative di successo:
α∈{α^ ± kγ
α^ (1-α^ )/m }
essendo kγ il valore teorico36 della distribuzione normale
standardizzata che ha una probabilità γ di essere superato in valore
assoluto per effetto del caso. In modo analogo si costruiscono gli
intervalli per il potere del test 1-βj.
Il piano di simulazione dovrà dunque prevedere la generazione di
campioni di ampiezza n dalla distribuzione specificata da H0 e da
ciascuna delle H1j: in generale si tratterà di campioni provenienti dalla
stessa famiglia di distribuzioni, in cui varia solo un parametro θ
(eventualmente a più componenti) che è l'oggetto dell'ipotesi nulla; su
ciascun campione si valuterà il test e si aggiornerà il conteggio del
numero di campioni per i quali il test porta al rifiuto di H0 in
corrispondenza di diversi valori nominali di α o comunque per diverse
regioni di rifiuto. L'esperimento dovrà essere ripetuto per diversi valori di
n.
Ricordo che per i test costruiti sulla base del rapporto delle
verosimiglianze:
max L( θ, x |H0)
θ
λ=
,
max L( θ, x )
θ
si conosce il risultato asintotico sotto condizioni di regolarità relative
alla distribuzione di X ed ai vincoli su θ specificati da H0: -2logλ si
distribuisce asintoticamente secondo una χ2k, in cui il numero dei gradi di
libertà k è uguale al numero dei vincoli indipendenti sui parametri
36
Ovviamente uso il simbolo γ per non fare confusione con α.
Tecniche di Simulazione in Statistica.
193
imposti da H0. Ovviamente mediante simulazione si potrà saggiare la
validità, caso per caso, di tale approssimazione, ed eventualmente di suoi
miglioramenti quali correzioni di tipo Bartlett, etc. Hall e Titterington
(1989) trattano il problema dell’ordine di approssimazione ottenuto dai
test condotti mediante metodo Montecarlo rispetto a quelli condotti
mediante approssimazioni asintotiche. Bølviken e Skovlund (1996)
trattano il problema della determinazione dei valori dei parametri da
fissare per specificare la particolare H0 da cui si simulerà l’estrazione di
campioni, in presenza anche di parametri di disturbo.
9.6.2.
Livelli di copertura empirici di intervalli di confidenza
Si può utilizzare un piano di simulazione anche per indagare sul
livello di copertura effettivo di un criterio di costruzione di intervalli di
confidenza per un parametro, o di regioni di confidenza per vettori di
parametri. Occorre rifarsi alla definizione di intervallo di confidenza ad
un certo livello di probabilità fiduciaria: sarà sufficiente simulare
l'estrazione di m campioni da una popolazione con θ fissato; costruire su
ciascuno di essi l'intervallo di confidenza di probabilità fiduciaria teorica
1-α, quindi contare quanti sono i campioni nei quali gli intervalli
contengono il vero valore θ. Questo conteggio diviso per il numero m di
campioni generati, fornisce una stima dell'effettivo livello di copertura
dell'intervallo su cui si può costruire un intervallo di confidenza nel
modo descritto nel paragrafo precedente (secondo il tipo di problema può
essere opportuno ripetere l'esperimento per un range di valori del
parametro di interesse). Con lo stesso piano di simulazione si può anche
valutare ad esempio la lunghezza media degli intervalli, poichè a parità di
livello effettivo di copertura, è migliore un criterio che fornisce intervalli
mediamente più corti, o regioni con superfici o volumi più piccoli, nel
caso di regioni di confidenza costruiti per vettori di parametri.
9.6.3.
Stima dei percentili
Per la stima dei percentili, utili per la costruzione di regioni di rifiuto
di un test mediante simulazioni, occorre avere la distribuzione ordinata
dei valori, come accennato prima per la stima di F(· ). Se m è tanto grande
da rendere problematica la memorizzazione degli m numeri da ordinare,
si lavorerà sulla distribuzione raggruppata in classi.
194
Marcello Chiodi
Indicato comunque con zp il p-percentile teorico della distribuzione
campionaria di Z, soluzione dell'equazione:
F(zp) = p,
il percentile empirico z^ p è la soluzione dell'analoga equazione:
F^ m(z^ p) = p,
in cui F^ m(z^ p) è la funzione di ripartizione di z stimata sulla base di m
campioni simulati.
Si può effettuare inferenza su zp considerando che, sotto condizioni di
regolarità piuttosto generali, z^ p si distribuisce asintoticamente secondo
una normale con media zp e varianza asintotica data da:
Var(z^ p) ≅ p(1-p)/{m[f(zp)]2}
essendo f(zp) il valore della densità di Z in corrispondenza del
percentile teorico zp (Kendall, Stuart,1977, pag.252); f(zp) si può stimare
per mezzo dell'istogramma della distribuzione di Z.
9.7.
Banda di confidenza per la distribuzione di frequenza
simulata
La tecnica mediante la quale si costruisce un intervallo di confidenza
per un livello di significatività teorico può essere estesa alla costruzione
di intervalli per probabilità relative ad un qualsiasi intervallo di valori (di
un test, o di uno stimatore di cui si sta simulando la distribuzione).
Se si sta indagando sulla distribuzione campionaria f(t) di uno
stimatore37 Tn, o comunque di una funzione dei dati campionari
t(x1,x2,…,xn), indichiamo con pA il valore di una probabilità teorica
relativa ad un generico intervallo (o una regione) di valori A, definita
dalla relazione:
pA=Prob(t∈A)= ⌠
f(t)dt=⌠
f(x1,x2,…,xn)dx1dx2…dxn.


⌡t∈A
⌡t(x1;x2;...;xn)∈A
Una stima puntuale (corretta) di pA è al solito data dalla frequenza
relativa empirica calcolata su m campioni simulati:
p^ A = mΑ /m
37
O comunque di una funzione dei dati campionari t(x)
Tecniche di Simulazione in Statistica.
195
essendo mΑ il numero dei campioni simulati per i quali risulta t∈A,
mentre un intervallo di confidenza asintotico per pA con probabilità
fiduciaria 1-γ è dato da:
pA ∈{p^ A ± kγ p^ (1-p^ )/m }.
Si badi bene però che tale intervallo è relativo ad un solo valore di pA.
Se si vuole una banda di confidenza con probabilità fiduciaria 1-2γ per
l'intera funzione di ripartizione F(t), si può utilizzare la banda di
confidenza ricavata dal test di Kolmogorov-Smirnov e data da:
^
F(t)∈{ F(t) ± γDmax },
essendo F^ (t) la funzione di ripartizione empirica di t valutata sugli m
campioni simulati, e γDmax il valore critico del test di KolmogorovSmirnov38 ad un livello γ di significatività. Se m è tanto grande da rendere
poco plausibilie il calcolo di F^ (t) sui valori singoli (perché occorrerebbe
tenere memorizzati tutti gli m valori di t) si può operare sulla
distribuzione di t suddivisa in classi di valori.
Riprendo l'esempio accennato nel secondo capitolo e relativo alla
distribuzione simulata dello stimatore t di massima verosimiglianza del
parametro di posizione µ di una curva normale di ordine p, per p = 1,1 e
per campioni di ampiezza 5 (Chiodi, 1994).
Nella figura è riportato un particolare della banda di confidenza al
95% per F(t), fondata su m = 1.000.000 di campioni simulati; si noti che
nella figura è riportato solo un particolare della distribuzione simulata di
Tn relativa a valori di F(t) compresi fra 0,94 e 0,96. Per i valori di α e di
m stabiliti risulta:
F(t)∈{ F^ (t) ± 0,0013581}.
Evidentemente tale banda di confidenza risulta più larga dell'
intervallo costruito sul singolo valore pA riportato pure nella figura: ciò è
dovuto al fatto che la banda di confidenza costruita sulla base di γDmax è
valida per l'intera funzione di ripartizione e non per un singolo valore; in
altri termini è 1-2γ la probabilità fiduciaria che l'intera funzione di
ripartizione risulti compresa in quella banda di confidenza!
38
Si riveda eventualmente la tabella dei valori critici di γDmax riportata nel 3° capitolo.
196
Marcello Chiodi
Banda di confidenza al 95%
per l'intera distribuzione F(t)
costruita in base al test
di Kolmogorov-Smirnov
F(t)
0,955
0,950
Intervallo di confidenza al 95%
per un singolo valore di F(t)
ricavato dalla binomiale
0,945
t
Figura 45 Particolare della funzione di ripartizione di uno stimatore basata
su 1.000.000 di campioni simulati, con bande di confidenza per l'intera
distribuzione F(t), e per singoli valori di F(t).
Risulta inoltre evidente dall'esempio perché una distribuzione
campionaria stimata su milioni di campioni simulati possa considerarsi
un'ottima approssimazione della distribuzione esatta; nella figura
successiva è riportata per lo stesso esempio l'intera funzione di
ripartizione stimata: la banda di confidenza di Kolmogorov-Smirnov è
tanto stretta (0,0013581×2) che è arduo distinguerla nel grafico dalla
funzione di ripartizione stimata!
Tecniche di Simulazione in Statistica.
197
1,00
0,95
0,90
0,85
F(t)
0,80
0,75
0,70
0,65
0,60
0,55
0,50
0,00
0,25
0,50
0,75
1,00
1,25
1,50
1,75
2,00
t
Figura 46 Stima della funzione di ripartizione di uno stimatore basata su
1.000.000 di campioni simulati.
9.8.
Altri usi delle tecniche di simulazione in Statistica
Vi sono altri campi di impiego delle tecniche di simulazione, o
comunque delle tecniche di campionamento di tipo Montecarlo,
nell'ambito dell'inferenza, che non affronto in queste pagine, perché al di
là degli scopi di questo testo, fra cui: le tecniche di ricampionamento,
quali il bootstrap, la verosimiglianza simulata, i test di permutazione, etc.
9.9.
Esempi
9.9.1.
Verifica della validità di un'approssimazione teorica
Come già accennato prima, le tecniche di simulazione possono servire
per valutare empiricamente l'errore commesso mediante una particolare
approssimazione analitica ad una distribuzione campionaria. Molte
approssimazioni sono valide solo asintoticamente, anche se di solito si
conosce l'ordine dell'approssimazione (ad esempio op(nr)): è raro però
che si sappia valutare l'errore commesso in corrispondenza di piccoli
valori di n!
Per lo stesso esempio del paragrafo precedente, nelle due figure sono
riportati i risultati sintetici di un confronto fra la distribuzione
campionaria di uno stimatore, simulata tramite l’estrazione di 1.000.000
di campioni di ampiezza 5, e due approssimazioni analitiche alla
198
Marcello Chiodi
distribuzione dello stesso stimatore: le curve riportate sono le probabilità
che un valore di t sia superato per effetto del caso, ossia 1-F(t). Lo
stimatore in oggetto è lo stimatore di massima verosimiglianza del
parametro di posizione µ di una distribuzione normale di ordine p = 1,1
per campioni di ampiezza n=5. Si veda la figura con il particolare della
distribuzione di Tn in prossimità del 95° percentile: la simulazione ha
consentito di valutare il notevole errore commesso mediante
l'approssimazione normale, ad esempio per la stima del 95° percentile,
mentre l'approssimazione basata sulla determinazione dei punti di sella,
sebbene molto costosa da un punto di vista computazionale, si dimostra
adeguatamente accurata anche per piccoli valori di n.
0,50
0,100
0,45
0,35
Approssimazione normale
0,075
1-F(t)=Prob(T>t)
0,40
1-F(t)=Prob(T>t)
Distribuzione simulata
Approssimazione mediante simulazione
Approssimazione normale
Approssimazione non normale
0,30
0,25
0,20
0,15
Approssimazione non normale
0,050
0,025
0,10
0,05
0,00
0,00
0,25
0,50
0,75
1,00
1,25
1,50
t
0,000
0,7
0,8
0,9
1,0
1,1
1,2
t
Figura 47 Probabilità di coda (1-F(t)) simulata di uno stimatore: confronto
fra la distribuzione simulata e due approssimazioni analitiche (a sinistra) e
particolare di tale probabilità di coda simulata in prossimità del 95°
percentile.
9.9.2.
Regressione non lineare
Riporto qui un esempio di applicazione delle tecniche di simulazione
all'inferenza nella regressione non lineare39. Si supponga, per semplicità,
di volere indagare sulla distribuzione degli stimatori di massima
verosimiglianza dei parametri di un modello di regressione non lineare,
con errori additivi:
39
Le simulazioni sono state effettuate mediante il mio programma didattico sulle simulazioni
citato nelle pagine iniziali.
Tecniche di Simulazione in Statistica.
199
Y = g(X;θ) + ε,
essendo θ un vettore di p parametri incogniti. Per la singola
osservazione si ha:
Yi = g(xi, θ)+ εi
con: E(Yi) = g(xi, θ)
(i = 1,2,…n).
E' noto che se si assume che le εi sono distribuite normalmente, con
varianze uguali σ2 e con correlazione nulla, ossia ε~N(0n; σ2In), le stime
tj dei parametri θj (j = 1,2,…p) di massima verosimiglianza che si
ottengono da un campione di n osservazioni (xi,yi), coincidono con quelle
dei minimi quadrati, ottenute minimizzando rispetto a t la quantità:
n
R(t) =
∑ [yi-g(xi; t)]2
i=1
La determinazione della soluzione t avviene mediante il ricorso a
tecniche numeriche di ottimizzazione.
In generale non si conoscono risultati esatti per la distribuzione
campionaria di t; si sa però che asintoticamente, sotto condizioni di
regolarità generali, t ha una distribuzione normale multivariata a k
componenti, con vettore delle medie uguale al vettore vero dei parametri
θ (e quindi t è asintoticamente corretto) e con una particolare matrice di
varianze e covarianze (Seber, Wild, 1989); in sintesi:
t ∼ Nk [θ, σ2(FΤ F) −1], per n→∞
Nell'espressione della matrice di varianza e covarianza asintotica
σ2(FΤ F) −1, la matrice F[n × k] è la matrice delle derivate parziali degli n
valori teorici rispetto ai k parametri, di generico elemento:
Fij =
∂g(xi;θ)
∂θj
Si sa che in generale per piccoli campioni t risulta distorto e non
normale; ottenere delle approssimazioni analitiche soddisfacenti per
qualsiasi modello non lineare non è agevole e pertanto le tecniche di
simulazione possono avere un ruolo determinante per indagare su tali
distribuzioni campionarie ed in particolare sull'adeguatezza
dell'approssimazione normale o di altre approssimazione.
200
Marcello Chiodi
Pertanto ho simulato l'estrazione di campioni da un modello per il
quale g(xi;θ) è una funzione esponenziale con due soli parametri α e β ed
un solo regressore x per cui:
E(Yi) = α eβ xi
(i = 1,2,…n).
Ho fissato un numero di campioni m = 1.000 ed ho effettuato
l'esperimento inizialmente per n = 5, avendo fissato:
•
σ2=1 (varianza dell' errore);
xi = i (i = 1,2,…5);
•
α=1 e β = 0,3;
•
e quindi gli n valori teorici ξi = α eβ xi = e 0,3 xi
(i = 1,2,…,n).
•
Successivamente si sono generati m = 1.000 campioni di ampiezza 5
di scarti normali standardizzati (ossia determinazioni pseudo-casuali
delle εi), che, aggiunte ai valori teorici attesi ξi (costanti per tutta la
simulazione), forniscono i valori simulati yji = ξi+εji (i = 1,2,…,5;
j = 1,2,…,1.000).
Il j-esimo campione è dunque costituito dalle n coppie di valori (xi yji):
questa è la simulazione di una situazione osservabile in un
esperimento reale con n osservazioni.
Nella figura qui sotto riportata è rappresentato un campione simulato:
la linea col tratto più marcato rappresenta la relazione vera, mentre l'altra
linea più sottile rappresenta la relazione stimata attraverso i valori di
questo particolare campione. Le cinque ordinate dei valori simulati sono
state ottenute aggiungendo ai valori veri dei numeri pseudo-casuali
normali.
Figura 48 Campione simulato di 5 elementi da un modello di regressione non
lineare E(Yi) = α eβ xi con errori distribuiti normalmente.
Tecniche di Simulazione in Statistica.
201
Ci si mette quindi nei panni dell'ipotetico sperimentatore e si procede
alla stima dei due parametri, α,β. Qui ho ipotizzato che la forma
funzionale sia comunque nota, e che l'unica cosa non nota siano i valori
dei due parametri: in altri termini la forma esponenziale non è messa in
discussione, ed è considerata nota; diversamente avremmo un problema
di identificazione e di scelta del modello. In realtà anche σ2 è stato
stimato, ma per brevità e per non appesantire l’esempio non ne ho
riportato la distribuzione simulata. Nel j-esimo campione si calcolano le
stime aj e bj applicando la tecnica dei minimi quadrati iterati, ed i valori
vengono memorizzati in una matrice che risulterà alla fine della
simulazione di 1.000×2 elementi. Il diagramma di dispersione delle 1.000
coppie di valori simulati (aj,bj) è riportato nella figura più avanti, dove
sono anche rappresentati gli ellissi di equiprobabilità della distribuzione
normale bivariata, ottenuta sulla base dei risultati asintotici esposti prima.
La non normalità della distribuzione congiunta di a e b è manifesta!
Figura 49. Distribuzione simulata di m = 1.000 stime a e b di massima
verosimiglianza dei parametri α e β di un modello di regressione non
lineare E(Yi) = α eβ xi con errori distribuiti normalmente, per campioni di
ampiezza n = 5.
202
Marcello Chiodi
Figura 50 Densità bivariata e curve di livello con livelli equispaziati della
distribuzione congiunta simulata di a e b ricavata da m = 1.000 campioni di
ampiezza n = 5
Si vedano anche le tre figure successive in cui sono riportati i risultati
sintetici di un'analoga simulazione condotta su 1.000 campioni di
ampiezza 20 dallo stesso modello teorico. La distribuzione congiunta di a
e b è ancora palesemente non normale.
Figura 51 Campione simulato di 20 elementi da un modello di regressione
non lineare E(Yi) = α eβ xi con errori distribuiti normalmente.
Tecniche di Simulazione in Statistica.
203
Figura 52 Distribuzione simulata di m = 1.000 stime a e b di massima
verosimiglianza dei parametri α e β di un modello di regressione non
lineare E(Yi) = α eβ xi con errori distribuiti normalmente, per campioni di
ampiezza n = 20.
Figura 53 Densità bivariata e curve di livello con livelli equispaziati della
distribuzione congiunta di a e b ricavata da m = 1.000 campioni di ampiezza
n = 20.
In sintesi il valore metodologico di questa simulazione per lo statistico
è che per questo particolare modello non lineare, e per i particolari
valori fissati per le x e per i parametri, la teoria asintotica non fornisce
approssimazioni soddisfacenti, almeno con riferimento alla distribuzione
congiunta di a e b, anche per campioni di ampiezza 20.
E' quindi da escludere, sulla base delle risultanze empiriche di tale
simulazione, che la distribuzione normale bivariata possa ben
approssimare la distribuzione congiunta dei due stimatori, per piccoli
204
Marcello Chiodi
valori di n. Un' esame delle statistiche univariate può comunque servire a
valutare se le medie e le varianze asintotiche costituiscono una
approssimazione anche sommaria dei valori ottenuti sulle mille coppie di
valori simulati di a e b. Nella tavola che segue sono riportate le medie, le
mediane, le varianze simulate di a e b, per le simulazioni relative ai
campioni di ampiezza 5 e 20, insieme con le varianze asintotiche. Si può
vedere che per quanto riguarda il valore medio, la stima a del parametro
α appare distorta: infatti standardizzando lo scarto fra il valore empirico
M(a) e quello teorico α, secondo quanto descritto nei paragrafi
precedenti, otteniamo uno scarto standardizzato di 6,451, per n = 5 e di
4,7072 per i campioni di ampiezza 20. Questi valori possono essere
giudicati sulla base della distribuzione normale standard, dato che il
numero di campioni m (e quindi il numero di valori di aj) è abbastanza
grande (m = 1.000), per cui potremo dire che tali scostamenti non sono
casuali! Non si confonda la distribuzione di a con quella di M(a)! E'
quest'ultima che può assumersi normale, perché si tratta di una media
aritmetica di un campione di ampiezza 1.000, e non certo quella di a,
come si è già visto. E' interessante notare che invece il valore della
mediana di a in questo caso si avvicina di più al valore teorico: ciò è
dovuto al fatto che la distribuzione campionaria di a non è normale, ed
anzi è fortemente asimmetrica, per cui non è detto che il miglior
stimatore di E(a) sia M(a)! Invece gli scarti standardizzati fra i valori
empirici di M(b) e quelli teorici β appaiono più bassi, per cui potrebbero
ritenersi dovuti a circostanze casuali.
Tecniche di Simulazione in Statistica.
205
n=5
a
1.0996
1.0000
5,1694
n = 20
a
b
1.0307
0.3023
1.0000
0.3000
3,1059
0,8703
b
Empiriche
0.3136
Teoriche
0.3000
2,6780
scarto standardizzato
(M-µ)√m/s
Empiriche
1.0045
0.3000
1.0052
0.3004
Mediane
Teoriche
1.0000
0.3000
1.0000
0.3000
Empiriche
0.3712
0.0258
0.0977
0.0070
Varianza
Teoriche
0.3139
0.0178
0.0954
0.0064
0.9176
1.4401
0.4331
0.3100
Asimmetria empiriche
3.9826
12.0026
3.0638
3.4818
empiriche
Kurtosi
Tavola 33. Confronto fra valori empirici e teorici dei parametri delle
distribuzioni campionarie simulate di 1.000 valori di a e b per campioni di
ampiezza 5 e per campioni di ampiezza 20 generati da un modello di
regressione esponenziale.
Medie
206
Marcello Chiodi
10. Appendice e complementi
10.1. Simul2000: un programma didattico interattivo sulle
simulazioni statistiche.
Negli ultimi anni ho sviluppato un software didattico interattivo per
l'esemplificazione di alcuni aspetti dell'uso delle tecniche di simulazione
in statistica (Chiodi, 1995a); l’attuale versione Simul2000, che ho scritto
prevalentemente con il compilatore di Visual Basic 6, é scritta per sistemi
Windows a 32 bit.
Il software è stato realizzato in modo da privilegiare l'aspetto grafico
solo per evidenziare aspetti didatticamente utili e non è in alcun modo
concepito per sostituire le funzioni dei normali prodotti di software
matematico-statistico per la ricerca scientifica. In effetti, ho potuto
utilizzare questo mio programma sulle tecniche di simulazione anche
nell'ambito di corsi brevi di statistica allo scopo di introdurre visivamente
alcuni concetti di base dell’inferenza, come le distribuzioni campionarie,
il teorema limite centrale e l'inferenza nella regressione lineare (ed in
quella non lineare) semplicemente facendo vedere dinamicamente una
simulazione, ossia visualizzando i singoli campioni simulati e le
corrispondenti stime calcolate, confrontate con i valori veri dei parametri.
Ciò mi ha dato modo di introdurre in modo intuitivo e grafico alcuni
argomenti che necessitano di una base teorica piuttosto consistente.
Alcune delle elaborazioni grafiche dei capitoli precedenti sono state
realizzate con tale software.
Il software Simul2000 é scaricabile cercando la sezione download delle
mie pagine web:
http://ccrs.economia.unipa.it/ccrs1/chiodi/italianomenu.htm
L’indirizzo é soggetto a variazioni, e in caso di difficoltà mi si può
chiedere aiuto via e-mail all’indirizzo: [email protected]
10.1.1. Caratteristiche generali del programma.
La breve descrizione che segue è molto generale ed è riferita alla
versione più recente di Simul2000: tuttavia poiché apporto delle
modifiche al programma, di solito all'inizio dei semestri didattici (o
Tecniche di Simulazione in Statistica.
207
quando scopro degli errori) questa descrizione può anche essere
leggermente differente da quella in uso al momento della lettura di queste
pagine. Il programma ha delle istruzioni in linea molto sintetiche,
confidando sulla semplicità delle opzioni e dell'interfaccia, e sul fatto che
di solito questo software viene usato da studenti che seguono le mie
lezioni. L'utilizzo delle varie opzioni avviene mediante le normali
interfacce di Windows95, mediante pulsanti e/o voci di menu comandati
da mouse sinistro e destro: le voci di menu sono raggruppate secondo
analogie di funzionamento che mi sono apparse logiche e razionali, ma
che potrebbero non risultare tali per chi dovesse usare il programma per
la prima volta.
In tutti i moduli é possibile scegliere fra diverse opzioni per il
generatore di base dei numeri uniformi e per la scelta del seme iniziale; é
inoltre possibile cambiare il colore di sfondo delle varie finestre, il tipo di
griglia ed altre opzioni grafiche. Quasi tutte le finestre realizzate sono
trasferibili su files esterni o sulla clipboard di Windows. Altre opzioni
sono descritte direttamente nel programma.
I moduli principali sono:
ÇSimulazioni univariate
ÇDistribuzione simulata di medie aritmetiche
ÇIntegrazione con metodo Montecarlo
ÇMetodi di generazione di numeri pseudo-casuali
Çmodelli di regressione lineare e non lineare
Çmodelli lineari generalizzati (GLM)
Çmodelli ARMA
ÇSimulazioni di distribuzioni bivariate
ÇArchivio sulle simulazioni
I seguenti moduli sono in allestimento:
ÇAllontanamento dalle assunzioni nell’analisi della varianza
ÇApprossimazioni asintotiche
ÇDistribuzione di stimatori di massima verosimiglianza
10.1.2. Brevissima descrizione dei moduli:
Simulazioni univariate
Generazione di numeri pseudo-casuali da diverse distribuzioni
univariate a scelta dell'utente, fra cui l'uniforme, la normale, la normale
di ordine p, la gamma, la beta, la Weibull, l’esponenziale, la Poisson, etc.
208
Marcello Chiodi
E' possibile scegliere quanti numeri generare dalla distribuzione
prescelta. Sono implementate diverse opzioni per la visualizzazione
progressiva dei grafici e dei vari output numerici; confronto fra
distribuzione simulata e distribuzione teorica, momenti empirici e teorici,
intervalli di confidenza, etc.
Distribuzione simulata di medie aritmetiche
Distribuzione simulata di medie aritmetiche di m campioni di n
numeri pseudo-casuali generati da distribuzioni univariate a scelta
dell'utente. E' possibile scegliere sia l'ampiezza campionaria n sia il
numero dei campioni m da generare. Sono implementate diverse opzioni
per la visualizzazione progressiva dei grafici (per i singoli campioni e per
la distribuzione delle medie) e dei vari output numerici.
Integrazione con metodo Montecarlo
Visualizzazione grafica dell'integrazione con metodo Montecarlo, con
la tecnica elementare hit or miss. A scelta la funzione da integrare e il
numero di punti su cui basare la stima dell'integrale.
Metodi di generazione di numeri pseudo-casuali
Esemplificazione dinamica della tecnica di generazione di numeri
pseudo-casuali mediante inversione della funzione di ripartizione.
modelli di regressione lineare e non lineare
Simulazione di modelli di regressione univariata, lineare e non lineare,
del tipo x y=g(x;θ) + ε. Scelta di diversi parametri per la componente
sistematica e per la componente accidentale; é anche possibile scegliere il
tipo di configurazione delle x. Vengono simultaneamente visualizzati in
differenti finestre di output i singoli campioni di valori (yi,xi), le relazioni
vere e simulate, e la distribuzione congiunta delle stime simulate dei
parametri del modello. In altre finestre, richiamabili da menu o da
pulsanti, è possibile visualizzare le distribuzioni marginali dei due
parametri
Questo modulo è molto utile per vedere l'influenza che hanno sulla
distribuzione delle stime le diverse assunzioni fatte sul modello (tipo di
errore, tipo di componente sistematica, scelta delle x). Inoltre è possibile
apprezzare (o meglio, farla apprezzare ad uno studente) dinamicamente
la differenza fra relazione vera e relazione stimata, fra valori osservati,
Tecniche di Simulazione in Statistica.
209
valori stimati e valori attesi delle y; è facile anche far vedere anche la
diversa distribuzione dei valori stimati in corrispondenza di valori delle x
più o meno distanti dalla media.
modelli lineari generalizzati (GLM)
Simulazione di modelli lineari generalizzati (GLM) univariati del tipo
g(E(Yi))=β0+β1 xi, con legami di tipo canonico con errori binomiali, di
Poisson e Gamma. Scelta di diversi parametri. Visualizzazione dei
singoli campioni, delle relazioni vere e simulate, e della distribuzione
congiunta delle stime simulate dei parametri del modello (gli stessi
output del modulo sulla regressione).
modelli ARMA
Simulazione di serie da modelli ARMA(p,q). Scelta dei p+q
parametri; visualizzazione dell'intera serie e di una finestra relativa ad un
sottoinsieme della serie.
Simulazioni di distribuzioni bivariate
Generazione di coppie di numeri pseudo-casuali da alcune
distribuzioni bivariate a scelta dell'utente fra cui: la distribuzione
uniforme bivariata, la normale bivariata a componenti correlate, la
distribuzione di Dirichlet bivariata. E' possibile scegliere quante coppie
generare dalla distribuzione prescelta che vengono visualizzate
dinamicamente.
210
10.2.
Marcello Chiodi
Test di casualità su generatori congruenziali
Riporto di seguito i risultati di alcuni test di casualità effettuati su
sequenze ottenute mediante particolari generatori congruenziali: come
primo esempio si sono generate 25 sequenze di lunghezza 50.000
mediante il generatore interno del software Pv-Wave, Visual Numerics,
che utilizza un moltiplicatore λ = 75 ed un modulo c = 231-1 (c è un
numero primo ed il generatore è di periodo pieno c-1).
Nella tavola che segue sono riportati alcuni risultati sintetici relativi
alle 25 sequenze: ciascuna sequenza è stata suddivisa in 1024 classi di
ampiezza uguale, e sulla base di questa suddivisione si è calcolato
l'indice X2 riportato nella colonna 2, la cui distribuzione è approssimabile
da quella di una v.a. χ2 con 1023 gradi di libertà. Il livello di
significatività corrispondente, ossia Prob{X2 > χ21023}, è riportato nella
colonna 3. Per ciascuna sequenza si sono considerate poi le 25.000
coppie distinte di numeri Ui, Ui+1, per i = 1,3,…,49.999. L'intervallo
unitario è stato suddiviso in 32 classi, di modo che il quadrato di
superficie unitaria è risultato suddiviso in una griglia di 322 = 1024 classi
quadrate di valori, e si è contato quindi il numero delle coppie Ui, Ui+1
che ricadono in ciascun quadrato: nella colonna 4 è riportato il test X2 per
la verifica dell'ipotesi di uniformità della distribuzione di tali coppie.
Nella colonna 5 vi è il valore p della significatività di tale valore X2.
Nella colonna 6 è riportato il valore del test di Kolmogorov-Smirnov per
la verifica dell'ipotesi di uniformità della distribuzione delle U e nella
colonna 7 la probabilità che ha questo valore di essere superato per
effetto del caso.
Tecniche di Simulazione in Statistica.
1
Numero
sequenza
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Test di
Kolmogorov sui
25 valori delle
p(⋅)
p
3
2
2
X
p
211
4
2
X
5
6
7
p
Dmax
p
per coppie
967.63
992.37
1014.33
1020.19
990.41
1149.50
1099.20
1031.08
1047.83
915.66
1004.13
970.99
1059.06
1028.95
1112.39
1023.50
1034.73
963.99
1026.45
1083.88
999.99
1006.34
980.70
1035.96
1058.07
0.08211
0.996
0.891
0.748
0.570
0.519
0.762
0.003
0.049
0.424
0.288
0.993
0.657
0.876
0.211
0.442
0.026
0.490
0.392
0.906
0.464
0.091
0.691
0.639
0.825
0.382
0.217
1008.54
987.24
1043.35
1086.11
996.33
1000.67
1012.96
1034.75
1029.51
1013.37
1024.10
1011.98
1086.77
1009.76
1031.23
1108.23
1042.37
1050.56
1027.13
953.57
1021.23
1009.52
1032.37
1069.89
1050.31
0.19959
0.272
0.620
0.784
0.322
0.083
0.719
0.685
0.582
0.392
0.437
0.579
0.484
0.591
0.081
0.610
0.422
0.032
0.330
0.268
0.458
0.940
0.510
0.612
0.412
0.150
0.270
0.00260
0.00300
0.00296
0.00482
0.00413
0.00283
0.00482
0.00410
0.00421
0.00332
0.00338
0.00346
0.00382
0.00321
0.00385
0.00580
0.00470
0.00389
0.00306
0.00447
0.00470
0.00231
0.00676
0.00446
0.00486
0.11970
0.866
0.888
0.760
0.772
0.195
0.360
0.817
0.196
0.371
0.337
0.639
0.619
0.588
0.460
0.681
0.450
0.069
0.219
0.437
0.736
0.270
0.219
0.952
0.021
0.273
0.188
212
Marcello Chiodi
Nella tavola successiva sono riportati i test relativi alla distribuzione
delle 50.000-r coppie del tipo Ui,Ui+r, i = 1,2,…,50000-r, e per valori del
lag r = 1,2,…,8. Queste coppie sono state raggruppate in k×k = 32×32
classi quadrate. Come si è visto nel capitolo 3, il test X2 va modificato in
modo da ottenere una quantità S2 che asintoticamente segue la
distribuzione di una v.a. χ2 con k(k-1) = 992 gradi di libertà:
k
2
S =
k
k
∑ ∑ (nhj-m/k ) /(m/k )- ∑ (nh.-m/k)2/(m/k)
2 2
2
h=1 j=1
i=1
con nhj frequenza empirica della classe di posto (h,j), ossia numero di
coppie Ui, Ui+r che appartengono alla classe di posto (h,j) e nh. è la
frequenza empirica marginale della classe h, ossia numero di singoli
elementi Ui osservati nella i-esima classe.
In pratica questo test serve per verificare l'ipotesi di assenza di
autocorrelazione seriale di lag r per sequenze di numeri uniformi.
2
tavola riassuntiva dei valori S per coppie con lag differenti
N°
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
lag 1
960.57
1024.47
1038.86
1050.09
983.41
948.77
988.62
1025.59
957.72
959.36
994.29
1016.05
984.50
1046.41
1024.34
1090.87
1058.23
1007.15
931.50
1049.35
954.89
1008.54
1001.81
1044.82
1024.71
lag 2
1085.17
1062.36
984.96
985.29
1008.85
1012.67
1060.42
948.30
983.77
918.23
985.49
1051.81
959.02
1049.89
1036.95
1011.45
998.63
995.44
995.07
1011.42
958.33
1016.90
895.97
935.54
1063.58
lag 3
935.71
1003.42
985.08
1035.88
883.88
999.19
1010.25
1041.15
1011.58
955.55
1023.66
934.30
994.53
895.02
996.32
965.29
1060.81
975.82
1028.82
948.67
999.37
986.59
1030.16
1035.61
979.12
lag 4
997.43
922.56
956.29
985.58
934.63
1003.70
1014.38
1065.03
960.87
974.39
1035.62
966.49
1004.90
974.73
988.50
1030.12
1009.94
994.74
978.11
990.40
1034.15
963.69
1028.40
978.51
996.52
lag 5
1002.68
1020.66
1023.50
904.15
1009.55
995.09
1119.57
967.22
992.25
952.97
1007.16
983.73
1076.21
945.73
998.82
936.24
993.68
976.06
937.32
1039.92
995.32
951.24
943.03
1001.82
987.35
lag 6
927.23
939.85
986.64
946.01
1026.22
1023.64
1008.65
1030.67
923.52
989.46
1067.61
894.07
1082.35
1038.83
992.30
979.21
1015.63
1044.67
891.61
1013.38
1067.49
949.80
938.45
1004.89
1025.98
lag 7
1019.92
999.61
967.76
1035.75
962.07
1028.48
999.97
915.98
948.34
957.88
1029.07
1056.93
1001.74
1040.26
972.07
1022.75
1037.42
967.30
983.36
968.74
1004.49
1055.07
1077.10
1035.73
1034.00
lag 8
1003.99
1068.71
1082.04
1005.61
1012.04
976.09
943.93
994.50
937.24
957.93
943.99
927.74
1015.18
987.30
981.45
1069.73
1018.50
958.90
968.12
1031.61
962.75
976.71
1020.53
1003.58
986.00
Tecniche di Simulazione in Statistica.
213
tavola riassuntiva Prob{S2 > χ2992} per coppie con lag differenti:
Numero sequenza
lag 1
lag 2
lag 3
lag 4
lag 5
lag 6
lag 7
lag 8
1
0.757
0.020
0.899
0.446
0.400
0.929
0.262
0.389
2
0.231
0.060
0.393
0.943
0.257
0.880
0.426
0.045
3
0.147
0.557
0.556
0.787
0.237
0.542
0.703
0.024
4
0.098
0.554
0.162
0.552
0.978
0.849
0.163
0.375
5
0.571
0.348
0.994
0.903
0.342
0.219
0.747
0.322
6
0.834
0.317
0.430
0.391
0.466
0.236
0.205
0.635
7
0.524
0.065
0.336
0.304
0.003
0.349
0.423
0.860
8
0.223
0.837
0.136
0.053
0.707
0.192
0.959
0.472
9
0.777
0.568
0.326
0.755
0.492
0.941
0.836
0.892
10
0.766
0.954
0.792
0.649
0.809
0.517
0.776
0.776
11
0.474
0.552
0.236
0.163
0.362
0.047
0.201
0.860
12
0.291
0.091
0.904
0.713
0.568
0.988
0.075
0.928
13
0.561
0.768
0.471
0.381
0.032
0.024
0.408
0.298
14
0.112
0.099
0.987
0.646
0.851
0.147
0.140
0.536
15
0.232
0.156
0.455
0.525
0.433
0.491
0.668
0.588
16
0.015
0.327
0.722
0.195
0.896
0.608
0.242
0.043
17
0.071
0.435
0.064
0.339
0.479
0.294
0.154
0.273
18
0.362
0.463
0.637
0.470
0.635
0.120
0.707
0.769
19
0.915
0.467
0.203
0.617
0.892
0.990
0.571
0.700
20
0.101
0.327
0.835
0.508
0.141
0.311
0.695
0.186
21
0.796
0.773
0.429
0.172
0.464
0.048
0.384
0.742
22
0.350
0.285
0.543
0.735
0.819
0.828
0.080
0.629
23
0.407
0.987
0.195
0.205
0.865
0.887
0.031
0.258
24
0.119
0.899
0.164
0.614
0.407
0.381
0.163
0.392
25
0.229
0.057
0.609
0.454
0.536
0.221
0.172
0.548
Test di
0.18827 0.17237 0.07550 0.11284 0.12215 0.12796 0.19762 0.07802
Kolmogorov sui 25
valori delle p(⋅)
p
0.338
0.448
0.999
0.908
0.850
0.808
0.283
0.998
Come secondo esempio si sono generate 25 sequenze di lunghezza
50.000 mediante un generatore moltiplicativo con moltiplicatore
λ = 8192 ed un modulo c = 67101323 (c è un numero primo ed il
generatore è di periodo pieno c-1).
Nella tavola che segue sono riportati per le 25 sequenze gli stessi
risultati sintetici relativi all'esempio precedente.
214
Marcello Chiodi
1
2
3
4
5
6
7
Numero
sequenza
X2
p
X2
p
Dmax
p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Test di
Kolmogorov sui
25 valori delle
p(⋅)
p
per coppie
993.60
1072.00
1066.02
1041.73
1094.69
992.41
985.90
1062.42
983.94
975.91
1035.91
1013.06
1079.00
1018.10
1092.73
1087.69
1030.47
999.95
1056.52
1003.15
1018.10
1016.87
1051.03
1077.69
986.64
0.13486
0.753
0.739
0.140
0.170
0.335
0.059
0.748
0.793
0.191
0.805
0.851
0.382
0.582
0.109
0.537
0.064
0.078
0.429
0.691
0.227
0.665
0.537
0.548
0.265
0.114
0.788
1130.19
978.47
1057.36
1073.25
1067.27
1082.84
990.10
1075.38
1010.50
994.69
953.89
1053.92
1002.96
967.74
1011.16
1051.38
1038.19
965.12
955.61
985.93
1066.04
976.26
1026.15
1016.81
1039.26
0.07775
0.998
0.011
0.838
0.222
0.134
0.164
0.095
0.764
0.124
0.604
0.731
0.939
0.245
0.667
0.891
0.598
0.262
0.364
0.901
0.934
0.792
0.170
0.850
0.466
0.549
0.355
0.00280
0.00263
0.00580
0.00439
0.00378
0.00379
0.00427
0.00412
0.00537
0.00302
0.00509
0.00470
0.00286
0.00359
0.00353
0.00599
0.00430
0.00310
0.00354
0.00300
0.00362
0.00452
0.00326
0.00204
0.00439
0.09985
0.964
0.827
0.881
0.069
0.289
0.472
0.468
0.320
0.363
0.112
0.752
0.150
0.220
0.809
0.540
0.560
0.055
0.313
0.722
0.559
0.760
0.530
0.259
0.664
0.985
0.290
Tecniche di Simulazione in Statistica.
215
2
tavola riassuntiva dei valori S per coppie con lag differenti
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
lag 1
lag 2
lag 3
lag 4
lag 5
lag 6
lag 7
lag 8
1014.86
1032.84
996.72
1064.01
1087.48
979.31
1095.35
1042.63
954.66
1005.95
1017.66
969.21
923.13
1027.45
1026.51
1007.91
1042.98
941.20
1011.49
1031.27
1039.91
1072.39
998.30
1038.85
1029.91
996.28
1017.05
933.74
983.63
904.33
1008.00
944.76
1007.81
1032.55
957.35
995.69
1009.66
936.79
945.68
978.61
1087.46
952.94
1004.47
1030.07
1030.65
1005.78
897.48
948.89
975.88
953.27
1020.32
988.08
980.10
947.78
950.16
990.38
990.06
988.87
1059.20
899.99
997.02
1096.76
1026.06
934.60
983.12
1055.33
990.41
950.11
979.31
1036.86
1037.06
943.92
1016.16
973.73
1019.03
1015.06
971.35
1013.58
1008.14
923.88
879.00
963.50
980.82
1018.22
1038.74
937.28
941.22
992.78
998.18
954.76
981.47
963.41
982.86
1061.38
960.29
963.61
935.62
1034.87
1031.35
1038.72
955.00
1000.67
1084.72
1013.65
961.40
990.24
905.82
938.30
968.12
994.33
957.96
940.27
1021.73
981.18
985.65
986.51
991.83
955.71
1004.24
961.20
1000.53
1011.67
982.46
997.41
984.31
955.23
985.13
982.67
918.92
1045.57
997.97
981.91
950.78
913.31
1004.32
1020.46
979.48
1037.84
919.80
962.60
960.84
963.13
977.80
1086.42
892.86
1077.59
1008.86
1009.15
954.22
945.99
973.47
1058.67
962.26
955.59
945.02
1026.82
949.20
948.50
1012.40
967.10
971.96
937.43
943.25
964.67
944.35
906.06
1014.44
980.07
980.94
1066.75
937.03
1041.84
955.13
952.55
985.61
1011.94
1026.76
1113.55
1044.33
997.68
988.95
905.48
960.16
965.65
1000.82
926.03
990.70
975.55
1044.24
1025.89
980.01
865.86
1039.85
949.20
916.11
1030.10
981.19
1012.08
1045.62
936.01
216
Marcello Chiodi
tavola riassuntiva Prob{S2 > χ2992} per coppie con lag differenti:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Test di
Kolmogorov sui
25 valori delle
p(⋅)
p
lag 1
lag 2
lag 3
lag 4
lag 5
lag 6
lag 7
lag 8
0.300
0.179
0.452
0.055
0.018
0.607
0.012
0.129
0.798
0.372
0.279
0.692
0.942
0.211
0.217
0.356
0.127
0.874
0.326
0.188
0.141
0.038
0.438
0.147
0.196
0.456
0.283
0.907
0.569
0.978
0.355
0.856
0.356
0.181
0.780
0.461
0.341
0.894
0.851
0.613
0.018
0.809
0.384
0.195
0.192
0.373
0.985
0.833
0.636
0.807
0.260
0.529
0.600
0.840
0.826
0.509
0.511
0.522
0.068
0.983
0.449
0.011
0.220
0.903
0.573
0.080
0.508
0.826
0.607
0.157
0.156
0.860
0.290
0.655
0.269
0.299
0.674
0.310
0.354
0.940
0.996
0.736
0.594
0.275
0.147
0.892
0.874
0.487
0.439
0.797
0.588
0.737
0.576
0.062
0.759
0.735
0.899
0.168
0.188
0.147
0.796
0.417
0.021
0.309
0.751
0.510
0.976
0.887
0.700
0.473
0.776
0.878
0.250
0.590
0.551
0.543
0.496
0.791
0.386
0.753
0.418
0.325
0.579
0.446
0.563
0.794
0.556
0.577
0.952
0.116
0.441
0.584
0.822
0.964
0.386
0.259
0.605
0.152
0.950
0.743
0.756
0.739
0.620
0.019
0.989
0.030
0.348
0.345
0.801
0.850
0.657
0.070
0.745
0.792
0.855
0.215
0.832
0.836
0.319
0.708
0.669
0.891
0.864
0.727
0.858
0.976
0.303
0.600
0.593
0.049
0.893
0.132
0.795
0.811
0.551
0.323
0.216
0.004
0.121
0.443
0.521
0.977
0.760
0.720
0.416
0.933
0.506
0.639
0.121
0.221
0.601
0.998
0.142
0.831
0.959
0.195
0.590
0.322
0.116
0.897
0.06703 0.15946 0.11952 0.07729 0.19552 0.25102 0.07361 0.16846
1.000
0.549
0.867
0.998
0.295
0.086
0.999
0.477
Tecniche di Simulazione in Statistica.
217
10.3. Esercizi e temi di studio
es1) Di seguito sono riportate delle sequenze di 50 numeri interi
compresi fra 1 e 6, che sono state ottenute in modi diversi:
23433661213245126156216324422541513424532144346651
54443162343665452263452416444336546456133221556333
61525352442212136156341544324365235163633555155221
65522622244141624521435433263412614656553352425261
15263542534251425366635362433222132326326464365432
45354256422136366662335112233324453464613112324342
• E' possibile capire come sono state ottenute queste sequenze, e se
possono essere assimilate a sequenze casuali? Sapreste distinguere
le sequenze ottenute con meccanismi casuali da quelle ottenute con
algoritmi?
N.B. Negli esercizi successivi con Ui si intende una v.a. (o un numero
pseudo-casuale, secondo il contesto) con distribuzione uniforme
nell'intervallo 0-1.
es2) Si supponga di dovere generare alcuni numeri casuali uniformi
standard Ui e di non avere a disposizione un computer, nè una
tavola di numeri casuali. Come fareste?
es3) Determinare la distribuzione di (U1+U2)/2; oppure, se si generano
coppie di numeri pseudo-casuali uniformi, (U1, U2), che
caratteristiche ha la sequenza di numeri pseudo-casuali Y ottenuta
da Y = (U1+U2)/2?
es4) Determinare la distribuzione di Z = max(U1,U2)
es5) Determinare la distribuzione di Z = max(U1,U2,…,Uk) (ossia
determinare le caratteristiche della sequenza ottenuta prendendo i
valori massimi di gruppi di k numeri pseudo-casuali uniformi)
es6) Come si distribuisce la parte decimale di U1+U2?
es7) Si trovino altre coppie di numeri c e λ tali che c sia un numero
primo e λ una radice primitiva di c. Si verifichino poi le
caratteristiche di casualità delle corrispondenti sequenze di numeri
pseudo-casuali. Si faccia uso ovviamente di software apposito.
es8) Si generano coppie di numeri pseudo-casuali normali standard, (Z1,
Z2); che caratteristiche ha la sequenza di numeri pseudo-casuali Y
ottenuta da Y = (Z1+Z2)/2?
218
Marcello Chiodi
es9) E quella ottenuta da X = Z1/Z2?
es10) E, infine, quella ottenuta invece da T = Z12+Z22?
es11) Si sono generati 1.000 numeri casuali uniformi Ui. Avete idea di
quanto possano essere il minimo e il massimo di questi 1.000
numeri?
es12) Si sono generati 100 numeri casuali normali standardizzati. Il più
grande è risultato 2,3898. E' un risultato sospetto?
es13) Si sono generati 10.000 numeri casuali normali standardizzati. Il
più grande è risultato (guarda caso!) 2,3898. E' un risultato
sospetto? Se la risposta è diversa rispetto al caso precedente (con
100 numeri) commentare il perchè.
es14) Si dimostri la formula di Box-Muller con le usuali tecniche
analitiche. (Si consideri prima la trasformazione inversa [U,V in
funzione di X,Y] e se ne calcoli lo Jacobiano; oppure più
comodamente si calcoli l'inverso dello Jacobiano della
trasformazione diretta; risulta comunque comodo considerare
X/Y = … e X2+Y2 = …
es15) Si dimostri analiticamente la trasformazione polare di Marsaglia.
es16) Si dimostri analiticamente la tecnica del rapporto di uniformi.
es17) Si riveda l'algoritmo proposto nel capitolo 6 per la generazione di
numeri casuali da una distribuzione di Poisson con parametro
λ = 1,5 e si estenda al caso di λ qualsiasi.
es18) Si giudichi, per l'esercizio precedente, qual è un intervallo di valori
di λ per i quali conviene utilizzare un algoritmo misto (accettazione
rifiuto+inversione).
es19) Si riveda l'esempio del capitolo 9 relativo alla simulazione della
distribuzione campionaria della media aritmetica di campioni di
ampiezza 5 estratti una distribuzione beta di parametri α = 0,5 e
β = 0,9. Se si estraggono 10.000 di tali campioni, calcolando su
ciascuno di essi la media aritmetica, qual è secondo voi il campo di
variazione probabile della media aritmetica di tali 10.000 medie?
es20) Si supponga di simulare l'estrazione di m campioni di ampiezza n
da una distribuzione gamma di parametri c e λ. Che caratteristiche
avrà la distribuzione delle m medie aritmetiche?
es21) Si implementi un algoritmo per la generazione di numeri pseudocasuali da una distribuzione binomiale mediante tecnica di
accettazione-rifiuto.
Tecniche di Simulazione in Statistica.
10.4.
Ris.1.
219
RISPOSTE AD ALCUNI ESERCIZI
Le sei sequenze sono state ottenute nei seguenti modi:
a) da computer: x = Int(random*6+1)
b) tirando dadi veri
c) da computer: x = Int(random*6+1)
d) trasformando la c): 7-i e da destra verso sinistra
e) pestando sui tasti
f) tirando dadi veri
Ris.2.
Ad esempio:
• consultando estrazioni del lotto (ma è scomodo perchè occorrerebbe
considerare solo le cifre delle unità dei primi estratti);
• estraendo carte da una mazzo di carte da gioco regionali (da 40 carte);
considerando il 10 come 0, k carte estratte (con reimmissione!) in
questo modo costituiscono le k cifre decimali di un numero casuale
uniforme;
• oppure si possono lanciare h monete: se testa = 0 e croce = 1; si
ottengono h cifre binarie della parte frazionaria di un numero
uniforme; occorrono 10 cifre binarie per averne 3 decimali (perchè
210 = 1.024).
Ris.7.
Utilizzando per esempio Mathematica (ver. 2.2), si
trovano facilmente numeri primi c nella forma c = 2p-1, con p primo
(numeri primi di Mersenne); per esempio c = 289-1 è un numero primo.
Per ottenere generatori di periodo massimo c-1, occorre ottenere le radici
primitive di c. La più piccola radice primitiva di 289-1 è 3. Anche 319 è
una radice primitiva di c, in quanto 19 e c-1 sono primi fra loro. Fra gli
altri, sono pure radici primitive di 289-1, i numeri 37,311,313,329: infatti
7,11,13,29 sono tutti numeri primi con c-1 (i fattori primi di c-1 = 289-2
sono: 2, 3, 5, 17, 23, 89, 353, 397, 683, 2113 e 2931542417); queste
potenze di 3 possono essere dunque prese come valori del moltiplicatore
λ per generatori congruenziali di modulo c = 289-1 di periodo massimo
c-1.
Difficilmente però tali valori sarebbero utilizzabili dai compilatori più
comuni; infatti impiegando: λ =319 = 1.162.261.467 e
c = 289-1 = 618.970.019.642.690.137.449.562.111, sarebbe necessario
memorizzare (senza troncamento!) numeri interi fino a λ(c-1), ossia con
36 cifre esatte!
220
Marcello Chiodi
Ris.19.
Ricordando per una v.a. X distribuita secondo una Beta di
parametri α e β si ha:
E(X) = α/(α+β) e
Var(X) = αβ/((α+β)2(1+α+β))
con i valori dell'esempio, α = 0,5 e β = 0,9, si ha:
E(X) = 0,357143 e Var(X) = 0,095663.
Pertanto per la distribuzione della media aritmetica M5 di campioni di
ampiezza 5 si ha:
E(M5) = E(X) = 0,357143 e Var(M5) = Var(X)/5 = 0,019133.
Quindi per la media aritmetica M di un campione di 10.000 di tali
medie M5 si avrà:
E(M) = 0,357143 e Var(M) = Var(M5)/10.000 = 0.0000019133.
Inoltre, data l'ampiezza del campione di medie (m = 10.000) si può
approssimare a distribuzione di M con quella di una normale, con la
media e la varianza di M già calcolate. Dunque con una probabilità del
99% M sarà incluso nell'intervallo:
E(M)±k Var(M) , (essendo k = 2.5758 il valore della curva normale
standardizzata che racchiude il 99% dell'area) ossia:
Prob{0,353580≤M≤0,360706} = 0,99
Ris.20.
Ricordo che per una v.a. X distribuita come una Gamma di
E(X) = c/λ; Var(X) = c/λ2; β1 = 2/ c e
parametri c e λ si ha:
β2 = 3+6/c;
inoltre si sa che la distribuzione gamma è additiva, per cui la somma
di n v.a. Xi indipendenti e con identica distribuzione Gamma(c,λ) si
distribuisce come una Gamma(cn,λ), mentre la loro media ha
distribuzione Gamma(cn,λn).
Tecniche di Simulazione in Statistica.
10.5.
ν
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
30
40
50
60
70
80
90
99
399
992
1023
221
TAVOLE
0,1
.016
.211
.584
1.064
1.610
2.204
2.833
3.489
4.168
4.865
5.578
6.304
7.041
7.789
8.546
9.312
10.085
10.864
11.650
12.442
20.598
29.048
37.685
46.454
55.322
64.269
73.280
81.437
363.130
934.854
964.944
Probabilità integrali
0,2
0,5
0,9
0,95
0,99
0,999
.064
.455
2.706
3.842
6.635
10.829
.446
1.386
4.605
5.992
9.211
13.817
1.005
2.366
6.252
7.815
11.346
16.269
1.649
3.357
7.780
9.488
13.278
18.470
2.343
4.352
9.237
11.071
15.088
20.519
3.070
5.348
10.645
12.593
16.814
22.462
3.822
6.346
12.018
14.068
18.478
24.327
4.594
7.344
13.363
15.509
20.093
26.130
5.380
8.343
14.685
16.921
21.669
27.883
6.179
9.342
15.988
18.309
23.213
29.594
6.989
10.341
17.276
19.677
24.729
31.271
7.807
11.340
18.551
21.028
26.221
32.917
8.634
12.340
19.814
22.365
27.693
34.536
9.467
13.339
21.066
23.688
29.146
36.132
10.307
14.339
22.309
24.999
30.583
37.706
11.152
15.339
23.544
26.299
32.006
39.262
12.002
16.338
24.771
27.591
33.415
40.801
12.857
17.338
25.992
28.873
34.812
42.323
13.715
18.338
27.206
30.147
36.198
43.832
14.578
19.338
28.415
31.415
37.574
45.327
23.363
29.336
40.261
43.780
50.904
59.722
32.343
39.336
51.812
55.768
63.707
73.428
41.446
49.336
63.177
67.518
76.175
86.694
50.637
59.335
74.409
79.099
88.406
99.649
59.893
69.335
85.542
90.552 100.458 112.367
69.201
79.335
96.596 101.904 112.367 124.897
78.551
89.335 107.586 113.174 124.161 137.276
86.997
98.335 117.431 123.258 134.692 148.307
374.969 398.339 435.772 446.795 467.972 492.490
953.993 991.347 1050.116 1067.196 1099.739 1137.006
984.395 1022.347 1082.029 1099.369 1132.399 1170.214
Tavola 34 Percentili della distribuzione χ2 per alcuni valori dei gradi di
libertà ν e in corrispondenza di alcuni valori della probabilità integrale.
222
z=D
max√n
0,35
0,40
0,45
0,50
0,55
0,60
0,65
0,70
0,75
0,80
Marcello Chiodi
F(z)
0,0003
0,0028
0,0126
0,0361
0,0772
0,1357
0,2080
0,2888
0,3728
0,4559
z = Dma
x√n
0,85
0,90
0,95
1,00
1,05
1,10
1,15
1,20
1,25
1,30
F(z)
0,5347
0,6073
0,6725
0,7300
0,7798
0,8223
0,8580
0,8878
0,9121
0,9319
z = Dm
ax√n
1,35
1,40
1,45
1,50
1,55
1,60
1,65
1,70
1,75
1,80
F(z)
0,9478
0,9603
0,9702
0,9778
0,9836
0,9880
0,9914
0,9938
0,9956
0,9969
z = Dmax√n
1,85
1,90
1,95
2,00
2,05
2,10
2,15
2,20
2,25
2,30
F(z)
0,9979
0,9985
0,9990
0,9993
0,9996
0,9997
0,9998
0,9999
0,9999
0,9999
Tavola 35. Distribuzione di probabilità asintotica del test Dmax di KolmogorovSmirnov per alcuni valori di Dmax√n
Tecniche di Simulazione in Statistica.
223
10.6. Algoritmo di compressione per la generazione di numeri
casuali da una distribuzione normale di ordine p
Passi di inizializzazione
Consideriamo i punti della figura citata nel paragrafo 6.2.5, e riportata
per comodità qui sotto.
A
B
f(x)
h(x)
b(x)
D
f(x f) F N
C
M
f(x 2 )
O
0
H
G
x1
xf
E
x2
Indichiamo con A(P1P2…Pk) l'area del poligono di vertici P1P2…Pk e
poniamo:
+∝
h(x)dx = f(0)exp(-x2p/p)/x2p-1 (area sottesa da h(X) per
Sh =⌠

⌡x
2
X>x2)
A1 = A(OGCF); A2 = A1 +A(FNBA); A3 = A2 + A(BNC); A4 = A3
+ A(GEHM);
A5 = A4 +A(CMH); A6 = A5 +Sh.
Calcoliamo i valori degli Ai mediante le relazioni:
A1 = xf f(xf); A2 = A1+x1(f(x0)-f(xf)); A3 = A2+(xf-x1)(f(x0)-f(xf))/2;
A4 = A3+(x2-xf)f(x2); A5 = A4+(x2-xf)(f(xf)-f(x2))/2;
A6 = A5+f(x0)exp(-x2p/p)/x2p-1.
Dopo questi passi di inizializzazione necessari per un valore di p
fissato, i principali passi dell'algoritmo sono:
U0;
(1) generare
un
numero
uniforme
standard
se U0 < 0.5 allora porre U = 2U0A6 e W = -1 altrimenti si pone
224
(2)
(3)
(4)
(5)
(6)
(7)
(8)
Marcello Chiodi
U = 2(1-U0)A6 e W = +1(assegnazione casuale del segno) e quindi
si seleziona la regione da cui generare secondo il valore di U:
se U ≤ A1 (prima area: il punto casuale è dentro il rettangolo
OGCF), porre X = U/f(xf) e andare al passo 8;
se A1 <U ≤ A2, (seconda area, rettangolo FNBA), calcolare X per
inversione
dell'appropriata
distribuzione
uniforme:
X = (U-A1)/(f(x0)-f(xf)) e generare V Uniforme standard e:
se b(X)/h(X)>V (pre-test), allora si va al passo 8;
altrimenti
se f(X)/h(X)>V si va al passo 8 altrimenti si rifiuta il
numero e si ricomincia dal passo 1
se A2 <U ≤ A3 (terza area, triangolo BNC), porre
U1 = (U-A2)/(A3-A2) e generare un altro numero U2 da una uniforme
standard in modo tale che U3 = min(U1,U2)variabile con
distribuzione triangolare; si calcola X con la trasformazione lineare:
X = x1+U3(xf-x1); si genera ora V da una distribuzione uniforme e:
se b(X)/h(X)>V (pre-test), allora andare al passo 8
altrimenti se f(X)/h(X)>V allora andare al passo 8
altrimenti si rifiuta X e si ritorna al passo 1;
se A3 <U ≤ A4 (quarta area: rettangolo GEHM), porre
X = (U-A3)/f(x2) e andare al passo 8
se A4<U≤A5 (terza area, triangolo BNC), porre U1 = (U-A4)/(A5-A4)
e generare un altro numero uniforme standard U2 ,così che
U3 = min(U1,U2) abbia una distribuzione triangolare; si calcola X
mediante la trasformazione lineare: X = xf+U3(x2-xf); quindi si
genera un ulteriore numero uniforme V e:
se b(X)/h(X)>V (pre-test), allora andare al passo 8
altrimenti se f(X)/h(X)>V allora andare al passo 8
altrimenti si rifiuta X e si ritorna al passo 1;
se U>A5 (sesta area, coda della distribuzione, alla destra di x2),
si pone X = [x2p - p log((U - A5) / (A6-A5)]1/p e quindi si
genera V da una distribuzione uniforme e
se V<(x2/X)p-1 allora si va al passo 8 altrimenti si rifiuta
X e si ritorna al passo 1;
Si pone Xp = W· X e si accetta Xp come numero casuale desiderato
da una distribuzione normale standardizzata di ordine p.
Tecniche di Simulazione in Statistica.
10.7.
225
RIFERIMENTI BIBLIOGRAFICI
I riferimenti sono relativi sia ai lavori esplicitamente citati che ai testi
ed agli articoli di carattere generale, importanti per gli approfondimenti
di alcuni argomenti.
Atkinson, A. C. (1979). Recent developments in the computer generation of
Poisson random variables. Applied Statistics. 28, 260-263.
Barabesi, L. (1993). Optimized ratio-of-uniform method for generating
exponential power variates. Statistica Applicata. 5, 2, 149-155.
Barabesi, L. (1993). Random variate generation by using ratio-of-uniform
method. Univ. degli studi di Siena, Dip. di Metodi quantitativi, Collana di
Pubblicazioni, Serie ricerca monografie,1.
Barndorff-Nielsen O.E. Cox D.R.. (1989). Asymptotic Techniques for Use in
Statistics. Chapman and Hall, London.
Barndorff-Nielsen, O.E. (1983). On a formula for the distribution of the
maximum likelihood estimator. Biometrika 70, 343-365.
Bølviken, E., Skovlund E. (1996). Confidence intervals from Monte
Carlo tests. Journal of the American Statistical Association, 91, 10711078.
Bowell, M.T., Gore, S.D., Patil, G.P., Taille, C. (1993). The art of computer
generation of random variables. In Computational Statistics (Handbook
of statistics, vol.9, ed. Rao,C.R.). North-Holland. New York
Box, G. E. P., Muller, M. E. (1958). A note on the generation of random
normal deviates. Annals of Mathematical Statistics, 29, 610-611.
Box, G. E. P., Tiao, G.C. (1973). Bayesian inference in statistical analysis,
Addison-Wesley, Reading, Mass, 1-588.
Box, G. E. P. (1954). Some theorems on quadratic forms applied in the study
of analysis of variance problems. I: Effect of inequality of variance in the
one-way classification. II: Effects of inequality of variance and of
correlation between errors in the two-way. Annals of Mathematical
Statistics, 25, 290, 484.
Boyett, J. M. (1979). Random R×C tables with given row and column totals.
Applied Statistics, 28, 3, 329-332.
226
Marcello Chiodi
Casella, G. and George, E.I. (1992). Explaining the Gibbs sampler. The
American Statistician, 46, 2, 167-174.
Cheng, R. C. H. (1977). The generation of gamma variables with non-integral
shape parameter. Applied Statistics, 26, 71-75.
Cheng, R. C. H. (1984). Generation of inverse gaussian variates with given
sample mean and dispersion. Applied Statistics, 33, 309-316.
Cheng, R. C. H. Feast, G. M. (1979). Some simple gamma variate generators.
Applied Statistics, 28, 290-295.
Chiodi, M. (1986). Procedures for generating pseudo-random numbers from a
normal distribution of order p (p>1). Statistica Applicata, 1, 7-26.
Chiodi, M. (1994). Approssimazioni saddlepoint alle distribuzioni
campionarie degli stimatori di massima verosimiglianza dei parametri
delle curve normali di ordine p per piccoli campioni. Atti della XXXVII
Riunione Scientifica della SIS Ed. C.I.S.U. Roma; 1, 139-146.
Chiodi, M. (1995). A teaching experience through the development of
hypertexts and object oriented software. Atti del NGUS 1995, Napoli.
Chiodi, M. (1995). Generation of pseudo random variates from a normal
distribution of order p. Statistica Applicata, 7,4, 401-416
D'Ambra, L. (1996). Lezioni di inferenza statistica. Rocco Curto ed. Napoli.
Daniels H.E. (1954). Saddlepoint approximations in statistics. Ann. Math.
Stat., 25, p. 631-650.
Daniels H.E. Young G.A. (1991). Saddlepoint approximations for the
studentized mean, with an application to the bootstrap. Biometrika, 78, p.
169-179.
Devroye, L. (1984). On the use of probability inequalities in random variate
generation. Journal of statistical computation and simulation, 20, 91-100
Devroye, L. (1986). Non-uniform random variate generation. SpringerVerlag, New York.
Dodge, Y. (1996). A natural random number generator. International
Statistical Revue, 64, 3, 329-344.
Downham, D.Y. Roberts, F.D.K. (1967). Multiplicative congruential
pseudo-random number generators. Computer Journal, 10, 74-77.
Eichenauer-Herrmann, J. (1992). Inversive congruential pseudorandom
numbers: a tutorial. International Statistical Revue, 60, 2, 167-176.
Tecniche di Simulazione in Statistica.
227
Eichenauer-Herrmann, J. (1995). Inversive congruential pseudorandom
number generation by nonlinear methods. International Statistical Revue,
63, 2, 247-255.
Fishman, G. S. (1976). Sampling from the Poisson distribution on a computer.
Computing, 17, 147-156.
Fishman, G. S. (1979). Sampling from the binomial distribution on a
computer. Journal of the American Statistical Association, 74, 418-423.
Fishman, G. S. (1996). Monte Carlo. Springer–Verlag, New York.
Gelfand, A.E. and Smith, A,F,M, (1990). Sampling-based approaches to
Calculating Marginal Densities. Journal of the American Statistical
Association, 85, 398-409.
Golder, E.R. Settle, J.G. (1976). The Box-Muller method for generating
pseudo-random normal deviates. Applied Statistics, 25, 12-20.
Hall, P., Titterington, D.M. (1989). The effect of simulation order on level
accuracy and power of Monte Carlo tests. Journal of the Royal Statistical
Society, Serie B, 51,459-467.
Hopkins, T. R. (1983). A revised algorithm for the spectral test. Applied
Statistics, 32, 3, 328-335.
Isham, V. (1993). Statistical aspect of chaos: a review. Su: Networks and
Chaos- Statistical and Probabilistic aspects. Edito da: Barndorff
Nielsen,O. E. Jensen, J.L. Kendall, W.S.; Chapman & Hall, Londra.
Jöhnk, M. D. (1964). Erzeugung von Betarerteilten und Gammaverteilten
Zuffallszahlen. Metrika, 8, 5-15
Johnson, M. E. (1979). Computer generation of the exponential power
distribution. Journal of Statistical Computation and simulation, 9, 239240.
Johnson, M. E. (1987). Multivariate statistical simulation. Wiley, New York.
Kendall, M.G. Stuart, A. (1977). The advanced theory of statistics. 4. ed.
Griffin, London.
Kinderman, A. J. and Monahan, J. F. (1977). Computer generation of random
variable using the ratio of uniform deviates. ACM Transaction on
Mathematical Software, 3, 257-260.
Knuth, D. E. (1981). The art of computer programming, Vol. II:
Seminumerical algorithms. Addison-Wesley Edition, Reading,
Massachussetts.
228
Marcello Chiodi
Kronmal, R. A. Peterson, A.V. (1984). A variant of the acceptance-rejection
method for computer generation of random variables. Journal of the
American Statistical Association, 76, 446-451.
Lehmer, D.H. (1951). Mathematical methods in large-scale computing units.
Ann. Comp. Lab. Harvard University, 26, 141-146.
Lidl, R. Niederreiter, H. (1983). Finite Fields. Reading: Addison-Wesley.
Lunetta, G. (1963). Di una generalizzazione dello schema della curva normale.
Annali della Facoltà di Economia e Commercio di Palermo, 17, 2, 235244.
Marsaglia, G. (1977). The squeeze method for generating gamma variates.
Journal of the American Statistical Association, 79, 218-221.
Marsaglia, G. Tsang W. W. (1984). The exact-approximation method for
generating random variables in a computer. Journal of the American
Statistical Association, 79, 218-221.
Marsaglia, G. (1998). The Monty Python method for generating Gamma
variables. Journal of Statistical Software 1-8.
Marsaglia, G. Bray, T. A. (1964). A convenient method for generating normal
variables. SIAM rev. 6, 260-264.
Metropolis, N. Ulam, S. (1949). The Monte Carlo Method. Journal of the
American Statistical Association, 44, 335-341
Meyer, H.A. (Editor) (1954) Symposium on Monte Carlo methods. Ed. Wiley,
New York.
Mineo, A. (1978). La stima dei parametri delle curve normali di ordine r per
intervalli finiti e di quelle per intervalli infiniti. Studi in onore di Paolo
Fortunati, C.L.E.U.B. ed. Bologna, 1, 565-577.
Mineo, A. (1983). La miglior combinazione delle osservazioni per la stima dei
parametri di intensità e di dispersione. Atti del Convegno della S.I.S.
Trieste, 1, 463-487.
Mineo, A. (1989). The norm-p estimation of location, scale and simple linear
regression parameters. Lecture notes in Statistics, Statistical Modeling
Proceedings, Trento, 222-223.
Morgan, B. J. T. (1984). Elements of Simulation. Chapman and Hall, London.
Neiderreiter, H., (1992). Random number generation and quasi-Monte Carlo
methods. CBMS-NSF n°63 SIAM publications.
Tecniche di Simulazione in Statistica.
229
Patefield, W. M. (1981). An efficient method of generating random R×C
tables with given row and column totals. Applied Statistics, 30, 1, 91-95.
Piccolo, D. (1998). Statistica. Il Mulino, Bologna.
Rao, A.R., Jana, R., Bandyopadhyay, S. (1996). A Markov chain Monte Carlo
method for generating (0-1) matrices with given marginals. Sankhya,
Serie A, 58,2, 243-251.
Ripley, B. D. (1983). Computer generation of random variables: a tutorial.
International Statistical Review, 51, 301-319.
Rizzi, A. (1992). Inferenza statistica. UTET Libreria, Torino.
Ronchetti, E. (1990). Small sample asymptotics and bootstrap. Quaderni di
Statistica e Econometria, Centro di Specializzazione e Ricerche
Economiche Agrarie per il Mezzogiorno, Portici (NA). 12, p. 19-38
Rosenblatt, M. (1952). Remarks on a Multivariate Transformation. Annals of
Mathematical Statistics, 23, 470-472.
Rubinstein, R. Y. (1981). Simulation and the Monte Carlo Method. Wiley,
New York.
Rubinstein, R. Y. Kreimer, J. (1988). A batch acceptance-complement method
for generating random variables. European Journal of Operations
Research, 35, 278-285.
Sanchez-Bruno, A. San Luis-Costas, C. (1995). A statistical analyisis of seven
multipliers for linear congruential random number generators with
modulus 231-1. Quality and Quantity, 29, 331-337.
Schmeiser, B. W. (1980). Generation of variates from distribution tails.
Operation Research, 28,4, 1012-1017.
Schmeiser, B. W. Lal, R. (1980). Squeeze methods for generating gamma
variables. Journal of the American Statistical Association, 75, 679-682.
Seber, G.A.F., Wild, C.J. (1989), Non linear regression. Wiley, New York.
Stigler, S.M. (1991). Stochastic simulation in the nineteenth century.
Statistical Science, 6, 89-97.
Subbotin, M. T. (1923). On the law of frequency of errors. Matematicheskii
Sbornik, 31, 296-301.
Tadikamalla, P. R. (1980). Random sampling from the exponential power
distribution. Journal of the American Statistical Association, 75, 683-686.
230
Marcello Chiodi
Tanner, M. A. (1993). Tools for Statistical inference. Springer–Verlag, New
York.
Tausworthe, R. C. (1965). Random numbers generated by linear recurrence
modulo two. Math. Comp. 19, 201-209.
Thisted, R. A, (1988). Elements of Statistical Computing, Numerical
computation. Chapman and Hall, New York.
Ulam, S. (1995 ). Le avventure di un matematico. Sellerio editore, Palermo.
Vianelli, S. (1963). La misura della variabilità condizionata in uno schema
generale delle curve normali di frequenza. Statistica, 33. 447-474.
Von Neumann, J. (1951). Various techniques used in connection with random
digits 'Monte Carlo Method'. U.S: Nat. Bur. Stand. Appl. Math. Ser., N.
12, 36-38.
Wakefield, J. C., Gelfand, A. E. and Smith, A. F. M. (1991). Efficient
generation of random variates via the ratio-of-uniform method. Statistics
and Computing, 1, 129-133.
Walker, A. J. (1977). An efficient method for generating discrete random
variables with general distributions. Assoc. Comput. Mach. Trans. Math.
soft.., 3, 253-256.
Wichmann, B. A., Hill, I. D. (1982). Algorithm AS183. An efficient and
portable pseudo-random number generator. Applied Statistics, 31, 188190.
Wolfram, S. (1986). Random sequence generation by cellular automata.
Advances in Applied Mathematics, 123
Young, D. M. Turner, D. W. and Seaman, J. W. (1988). A ratio-of-uniforms
method for generating exponential power variates. Computer Science and
Statistics, Proceedings of the 20th Symposium on the Interface, Wegman
(ed.), 627-629.
Tecniche di Simulazione in Statistica.
10.8.
231
Indice degli algoritmi
Algoritmo 1.
Calcolo di z̄, inverso moltiplicativo di z (mod p) .......................35
Algoritmo 2
Generazione di numeri casuali da distribuzioni discrete
qualsiasi, con ordinamento delle modalità secondo probabilità
decrescenti: ..............................................................................................63
Algoritmo 3
Generazione di numeri casuali da una distribuzione
geometrica................................................................................................65
Algoritmo 4
Generazione di numeri casuali da una distribuzione
ipergeometrica di parametri N,V,n. ..........................................................67
Algoritmo 5
Generazione di una permutazione casuale dei primi n
numeri naturali: ........................................................................................68
Algoritmo 6
Generazione di numeri casuali da una distribuzione di
Laplace standardizzata (esponenziale doppia)........................................71
Algoritmo 7
Generazione di numeri casuali da una distribuzione di
Poisson di parametro λ. ...........................................................................92
Algoritmo 8
Tecnica generica di accettazione-rifiuto ...................................98
Algoritmo 9
Tecnica generica di compressione ...........................................99
Algoritmo 10
Generazione di numeri pseudo-casuali da una distribuzione
Gamma con c < 1 e λ = 1.......................................................................108
Algoritmo 11
Generazione di numeri casuali da una distribuzione di
Poisson di parametro λ = 1,5. ................................................................118
Algoritmo 12
Generazione di una tavola di contingenza pseudo-casuale
con margini assegnati ............................................................................151
Algoritmo 13
Schema generale
di simulazione di distribuzioni
campionarie (per campioni casuali semplici) .........................................175
Algoritmo 14
Estrazione in blocco di un campione di n elementi da una
popolazione di N unità............................................................................179
Algoritmo 15
Simulazione di estrazione di campioni da generici modelli di
regressione. ...........................................................................................183
232
Marcello Chiodi
10.9. Indice degli Autori citati
B
Bandyopadhyay .....................................155
Barabesi .........................................126; 128
Bølviken ................................................193
Boswell ..................................................129
Box ........................................................189
Boyett ....................................................143
C
Casella ...................................................153
Cheng.................................... 109; 125; 129
Chiodi ................. 17; 88; 89; 109; 186; 195
D
Daniels...........................................186; 187
Devroye .................................................100
Dodge ......................................................37
Downham.................................................32
E
J
Jana ....................................................... 155
Johnk................................. 85; 89; 138; 164
Johnson ........................................... 89; 130
K
Kendall.................................................. 194
Knuth ........................22; 26; 29; 31; 38; 47
Kreimer ................................................. 100
Kronmal ................................................ 100
L
Lal ......................................................... 108
Lehmer .................................................... 25
Lidl.......................................................... 34
Lunetta .................................................... 86
M
Marsaglia.....80; 81; 89; 111; 127; 135; 218
Mineo ............................................ 7; 15; 86
Eichenauer-Herrmann........................33; 34
F
N
Niederreiter ............................................. 34
Feast.......................................................125
G
Gelfand ..................................................153
Gentle ......................................................69
George ...................................................153
H
Hall ........................................................193
Hopkins....................................................47
I
Isham .......................................................26
P
Patefield ................................................ 143
Peterson................................................. 100
Piccolo .................................................... 15
R
Rao ........................................................ 155
Ripley...................................................... 33
Rizzi ........................................................ 44
Roberts .............................................. 32; 40
Ronchetti............................................... 186
Rosenblatt ............................................. 128
Rubinstein ..................................... 100; 147
Tecniche di Simulazione in Statistica.
S
San Luis-Costas ...................................... 32
Sanchez-Bruno........................................ 32
Schmeiser...................................... 102; 108
Seber ..................................................... 199
Skovlund ............................................... 193
Smith..................................................... 153
Stigler...................................................... 15
Stuart..................................................... 194
Subbotin.................................................. 86
T
Tanner ................................................... 153
Tausworthe.............................................. 36
Thisted .......................................... 156; 157
233
Titterington............................................ 193
U
Ulam.................................................. 11; 12
V
Vianelli.................................................... 86
Von Neumann .............................11; 22; 95
W
Wakefield .............................................. 126
Walker ............................................. 62; 115
Wild....................................................... 199
Wolfram .................................................. 36
234
Marcello Chiodi
10.10. Indice analitico degli argomenti
A
Accettazione-rifiuto ...........................95; 96
esempi ...............................................102
tecniche di compressione .... 95; 99; 100;
103; 104; 108; 109; 126; 223
variabili discrete........................112; 115
algoritmi ..................................................22
autocorrelazione...............................31; 212
B
Banda di confidenza.......................195; 196
bias.........................................................176
bootstrap ..................Vedi ricampionamento
Box-Muller, formula................................77
C
campionamento per importanza .....146; 147
campioni
di numeri uniformi ............................162
campioni casuali semplici......................168
campioni da popolazioni finite...............168
campioni di numeri pseudo-casuali163; 165
caotico................................................26; 36
condizionamento......................................81
curse of dimensionality ....................19; 144
D
determinazioni di variabili casuali ...........22
dimensionalità
problema della...................................144
distorsione
stima per simulazione .......................176
distribuzione campionaria
di stimatori ........................................165
distribuzioni
Beta............................ 83; 163; 164; 218
metodo di Johnk .............................85
Beta di parametri interi .......................83
Beta multivariata...............................137
binomiale .... 58; 60; 61; 63; 64; 90; 140;
218
Cauchy ...................72; 80; 81; 120; 123
con contorni ellissoidali............ 129; 130
Dirichlet ................................... 137; 138
esponenziale 70; 71; 72; 82; 90; 91; 105;
106; 161
gamma...................................... 218; 220
Gamma
relazione con altre distrib. ............. 82
Gamma (c<1) ................................... 106
Gamma di parametro c intero ............. 82
geometrica .................................... 64; 65
indicatori di evento....................... 63; 64
ipergeometrica............................ 66; 142
Laplace (esponenziale doppia) ........... 71
multinomiale ............................ 134; 140
multinomiale \b ................................ 140
normale......17; 54; 77; 88; 89; 105; 124;
130; 145; 158; 174; 175; 192; 199;
201; 203; 223; 224
normale bivariata................................ 77
normale di ordine p17; 88; 89; 109; 110;
198; 223
normale multivariata 130; 131; 132; 199
Poisson ...................62; 90; 92; 116; 218
esempio di metodo misto............. 118
triangolare ............32; 74; 101; 111; 224
uniforme ........................... 8; 22; 23; 151
statistiche d’ordine......................... 83
uniforme discreta............ 30; 36; 65; 113
Weibull............................................... 73
χ2 con 2 g.d.l. ..................................... 70
distribuzioni campionarie simulate 158; 159
esempio .............................................. 16
distribuzioni condizionate 52; 81; 128; 129;
137; 140; 141; 153; 154; 186
distribuzioni multivariate ...................... 128
distribuzioni simulate ............................ 175
banda di confidenza.......................... 194
dummy variables ................................... 172
E
errore medio di campionamento
stima per simulazione....................... 176
errore standard
degli studi di simulazione ................. 176
Tecniche di Simulazione in Statistica.
delle stime Montecarlo....................... 20
Esercizi
risposte ............................................. 219
estrazione in blocco............................... 168
exact-approssimation
metodo di generazione ..................... 127
exponential power distribution ........... Vedi
Distribuzione normale di ordine p
F
Fermat
teorema............................................... 30
formula di Box-Muller8; 77; 79; 80; 88; 89;
130; 133; 135; 218
frazione di campionamento ................... 169
G
generatori congruenziali..... 25; 30; 33; 210;
219
combinazione ..................................... 32
non lineari .......................................... 33
risoluzione dei.................................... 47
sequenze parallele .............................. 37
test...................................................... 45
Generatori congruenziali lineari.............. 25
la scelta dei parametri......................... 29
generazione di numeri aleatori da
particolari distribuzioni discrete......... 90
generazione di numeri casuali
da distribuzioni standardizzate........... 53
metodi ................................................ 51
ordinamento delle modalità............ 63
generazione di numeri pseudo-casuali
da distribuzioni qualsiasi.................... 51
distribuzioni discrete qualsiasi ........... 56
generazione di permutazioni casuali ....... 67
generazione di punti
all'interno di parallelogrammi ............ 75
in regioni triangolari........................... 75
generazione di vettori di numeri casuali 128
generazione di vettori di numeri pseudocasuali
distribuzione normale multivariata
qualsiasi....................................... 131
Gibbs sampler ................................... 7; 153
235
I
importance sampling ..Vedi campionamento
per importanza
inferenza ................................................ 183
informazione di Fisher...177; 178; 179; 186
informazione osservata.......................... 178
integrazione10; 18; 19; 144; 145; 146; 148;
151; 152; 155; 176
Integrazione con metodo Monetcarlo .... 144
funzioni di più variabili .................... 151
Integrazione con tecniche Montecarlo... 144
hit-or-miss ................................ 144; 149
metodi quasi-Montecarlo .......... 155; 156
integrazione numerica ........................... 157
inversione della funzione di ripartizione . 24
Inversione della funzione di ripartizione . 53
variabili continue ................................ 69
inverso moltiplicativo .............................. 34
L
limite inferiore di Rao-Cramer .............. 177
linguaggi.................................................. 22
livelli di significatività................... 152; 188
M
medie e varianze simulate
distribuzione asintotica ..................... 174
intervalli di confidenza ..................... 174
Metodi composti.................................... 118
Metodi misti .......................................... 118
metodi numerici....................................... 55
Metodo di Johnk...................................... 85
Metodo Monetcarlo ............................... 144
minimi quadrati ordinari........................ 172
miscugli di distribuzioni ................ 119; 133
miscugli di distribuzioni normali
multivariate....................................... 133
modelli ARMA...................................... 174
Montecarlo
metodo.... 7; 10; 11; 12; 15; 18; 20; 144;
146; 148; 149; 151; 152; 153; 155;
156; 176; 193; 197
metodo Montecarlo puro .................. 149
Monthy Python
metodo di generazione...................... 127
236
Marcello Chiodi
N
numeri a scelta
esempio ...............................................45
numeri casuali.... 22; 116; 218. Vedi numeri
pseudo-casuali
binomiali .............................................90
coppie..................................................40
da distribuzioni Beta qualsiasi ............85
da distribuzioni discrete ....................112
da distribuzioni unimodali ................109
da una distribuzione beta...................102
da una distribuzione esponenziale.......82
da una Poisson ....................................90
da variabili discrete .............................60
estrazione ............................................22
normali di ordine p..............................86
normali di ordine p....................109; 112
sequenze..............................................44
terne ....................................................47
numeri casuali normali................ 16; 79; 80
numeri casuali:.........................................85
numeri pseudo-casuali 22; 25; 55; 163; 217
da distribuzioni Gamma e Beta ...........81
normali multivariati ..........................131
software e packages ............................22
uniformi ..............................................24
vettori................................................128
numero di arrivi .......................................90
P
packages ..... 9; 22; 32; 41; 56; 69; 132; 143
percentili ........................................167; 188
simulati .............................................193
Percentili simulati ..................................221
permutazioni casuali ........... 23; 33; 68; 169
potere di un test......................................188
processo di arrivi......................................90
processo di Poisson..................................70
pseudo-casuali
numeri ...22; 88; 112. Vedi anche numeri
casuali
sequenza di numeri .............................38
sequenza di numeri .............................28
vettori................................................128
Q
qualità
dei numeri casuali............................... 93
R
rapporto delle verosimiglianze 15; 186; 192
rapporto di uniformi ......9; 72; 81; 120; 121
124; 125; 126;218
caso multivariato .............................. 128
ricampionamento................................... 197
riduzione della varianza ........................ 149
rimescolamento ....................................... 33
S
schemi di simulazione
diversi dal campionamento casuale
semplice....................................... 168
serie temporali....................................... 174
shuffling ..................... Vedi rimescolamento
simulated annealing ................................ 20
simulazione
ripetuta ............................................. 167
simulazione di distribuzioni campionarie
schema di algoritmo ......................... 165
simulazione di modelli di regressione .. 168;
170; 173
componente accidentale ................... 171
componente sistematica.................... 171
simulazione di serie temporali............... 168
simulazione di serie territoriali.............. 168
Simulazioni
metodo Montecarlo ............................ 11
Simulazioni di distribuzioni campionarie
......................................................... 158
simulazioni e inferenza ......................... 183
Simulazioni in statistica .................. 15; 157
statistiche d’ordine .................................. 83
subroutines ........................ 22; 61; 115; 174
T
Tavole di contingenza ........................... 141
margini assegnati.............................. 142
tavole di numeri casuali .......................... 37
tecnica mista
esempio. ........................................... 116
Tecniche di riduzione della varianza..... 146
tempi di arrivo......................................... 90
tempi di attesa ......................................... 90
teorema limite centrale ............ 72; 175; 186
Tecniche di Simulazione in Statistica.
test di casualità
psequenze non uniformi ..................... 92
Test di casualità......................... 37; 47; 210
test di permutazione .............................. 197
test spettrale............................................ 47
Trasformazione polare di Marsaglia ....... 80
trasformazioni di variabili....... 9; 77; 79; 82
Trasformazioni di variabili...................... 77
trasformazioni di vettori aleatori........... 128
237
V
valore critico..........145; 175; 188; 190; 195
Variabili di controllo ............................. 149
varianze asintotiche ............................... 177
verifica della bontà dell’adattamento....... 44
verosimiglianza simulata ....................... 197
vettori di numeri casuali ........................ 128
vettori di numeri pseudo-casuali............ 128
vettori pseudo-casuali............................ 132