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