1. seminarski rad ss3 - dina jankovic
DESCRIPTION
seminarski radTRANSCRIPT
1
Univerzitet u Beogradu
Matematički fakultet
Seminarski rad iz Statističkog Softvera 3
tema:
Metod Monte Karlo
Student: Asistent:
Janković Dina Marija Radičević
3/2011
u Beogradu, novembar 2014.
2
Sadržaj
1. Uvod : O metodi Monte Karlo i njenoj istoriji__________________________str.3
2. O slučajnim i pseudoslučajnim brojevima_____________________________str.7
3. Osnovni primeri Monte Karlo simulacije u jednoj i dve dimenzije _________str.11
4. Monte Karlo integracija__________________________________________str.16
5. Monte Karlo optimizacija________________________________________str.28
6. Literatura ____________________________________________________str.32
3
Uvod:
O metodi Monte Karlo i njenoj istoriji
Monte Karlo metode (ili Monte Karlo eksperimenti) predstavljaju široku klasu računarskih
algoritama koji se oslanjaju na ponovljeno slučajno uzorkovanje radi dobijanja numeričkih rezultata;
korisnik obično pokreće simulacije više puta kako bi dobio raspodelu nepoznatog verovatnosnog
entiteta. Naziv potiče od sličnosti sa tehnikom igranja i dobijenih ishoda u stvarnom kazinu. Oni se
najčešće koriste u fizičkim i matematičkim problemima i najkorisniji su kada je teško ili čak
nemoguće dobiti matematički izraz koji se može naći pomoću konačnog broja operacija, ili kada je
nemoguće primeniti deterministički algoritam. Monte Karlo metode se pretežno koriste u sledećim
klasama problema: optimizacija, numerička integracija i generisanje iz raspodele verovatnoća.
Kod problema vezanih za fiziku, metode Monte Karlo su veoma korisne za simuliranje sistema sa
mnogo uparenih stepena slobode, poput fluida i ćelijskih struktura. Ove metode se takođe
primenjuju u modeliranju pojava sa značajnom nesigurnošću o ulaznim podacima poput računanja
rizika u biznisu, zatim u matematici, pri nalaženju višedimenzionalnih određenih integrala sa
komplikovanim graničnim uslovima. Primenjuju se i u problemima vezanih za kosmos i
eksploataciju nafte, pri predviđanju neuspeha i prekoračenja predviđenih troškova i utrošenog
vremena, što je daleko bolje, rutinski gledano, nego ljudska intuicija ili druge alternativne metode.
Savremenu verziju Monte Karlo metode je osmislio poljsko-američki matematičar Stanislav Ulam,
tokom 40-ih godina XX veka, dok je radio na nuklearnim projektima u Los Alamos nacionalnoj
laboratoriji u Nju Meksiku. Naziv ovoj metodi je dao Nikolas Metropolis, grčko-američki fizičar, i
to po kazinu Monte Karlo, gde se Ulamov stric često kockao. Nakon Ulamovog proboja, Džon fon
Nojman je shvatio važnost ove metode i isprogramirao je ENIAC računar da izvršava Monte Karlo
kalkulacije.
Monte Karlo metoda, generalno, ima više i razlikuju se međusobno, ali sve otprilike imaju istu
strukturu :
1. Odrediti domen mogućih ulaznih podataka.
2. Slučajno generisati ulazne podatke iz neke raspodele verovatnoća, u okviru domena.
3. Izvršiti determinističko izračunavanje nad ulaznim podacima.
4. Skupiti i udružiti dobijene rezultate.
Na primer, posmatrajmo krug upisan u jedinični kvadrat. Ako pretpostavimo da je odnos površina
kruga i kvadrata , onda se vrednost broja može aproksimirati pomoću Monte Karlo metode, i
to na sledeći način:
1. Nacrtati kvadrat i u njemu upisati krug.
4
2. Ravnomerno razbacati neke objekte iste veličine (npr. zrna pirinča ili peska) po kvadratu.
3. Izračunati broj objekata unutar kruga i ukupan broj objekata.
4. Odnos ta dva broja je procenjen odnos dveju površina, koja je . Pomnožiti rezultat sa 4, i
dobija se procena broja .
U ovoj proceduri, domen ulaznih podataka je kvadrat opisan oko kruga. Generišemo slučajne ulazne
podatke rasipanjem zrna preko kvadrata, i onda testiramo svaki ulazni podatak – da li pripada krugu
ili ne. Konačno, ujedinjujemo rezultate da dobijemo naš konačni rezultat – aproksimaciju broja pi.
Ako zrnevlje nije ravnomerno raspoređeno, naša procena će biti loša. Poželjno je imati veliki broj
ulaznih podataka – procena je generalno loša ako se samo nekoliko zrna slučajno razbaca po
kvadratu. Dakle, što više ulaznih podataka – to je bolja procena.
Pre nego što su metode Monte Karlo razvijene, simulacije su testirale deterministički problem i
statističko uzorkovanje se koristilo za procenu nepouzdanosti u simulacijama. Monte Karlo
simulacije imaju obrnut pristup, rešavajući determinističke probleme uz pomoć verovatnosnog
analogona.
Prva varijanta metode Monte Karlo se javlja u eksperimentu „Bifonova igla“, gde se broj pi
procenjuje ispuštanjem igala na pod ispresecan paralelnim i ekvidistantnim linijama. Enriko Fermi,
italijanski fizičar, prvi je eksperimentisao sa metodom Monte Karlo, i to proučavajući difuziju
neutrona, ali ništa nije objavio na tu temu.
1946. godine, fizičari u Los Alamos naučnoj laboratoriji su proučavali medote zaštite od radijacije, ali
oni nisu bili u mogućnosti da reše problem koristeći konvencionalne, determinističke matematičke
metode. Stanislav Ulam je razmišljao o korišćenju slučajnih eksperimenata, i u tome mu se pridružio
Džon fon Nojman. S obzirom da su oni radili u tajnosti, njihov posao je zahtevao tajno ime – fon
Nojman je izabrao ime „Monte Karlo“, prema istoimenom kazinu u Monaku. Monte Karlo metode
su odigrale značajnu ulogu u simulacijama neophodnim za Menhetn projekat.
5
Monte Karlo kazino u Monaku
Ne postoji opšta, jedinstvena definicija za Monte Karlo metodu. Na primer, Ripli definiše
verovatnosno modeliranje kao stohastičku simulaciju, dok je „Monte Karlo“ rezervisan za Monte
Karlo integraciju i i Monte Karlo statističke testove. Savilovski jasno pravi razliku između
simulacije, Monte Karlo metode i Monte Karlo simulacije: za njega je simulacija fiktivna
reprezentacija realnosti, Monte Karlo metoda je tehnika koja služi za rešavanje matematičkog ili
statističkog problema, dok se Monte Karlo simulacija zasniva na ponovljenom uzorkovanju radi
određivanja osobina nekog fenomena ili ponašanja. Na primer:
Simulacija: Pseudoslučajna uniformna veličina na intervalu (0,1) može poslužiti za
simulaciju bacanja novčića: ako je njena vrednost manja ili jednaka 0.5, ishod je glava, a inače
je pismo. Ovo jeste simulacija, ali ne i Monte Karlo simulacija.
Monte Karlo metod: Kutija sa novčićima se izručuje na sto i potom se računa odnos broja
palih glava i pisama. Ovo je Monte Karlo metod za ispitivanje ponašanja uzastopnog bacanja
novčića, ali nije simulacija.
Mone Karlo simulacija: Uzimanjem velikog broja pseudoslučajnih uniformnih veličina na
(0,1) i pridruživanjem ishoda „glava“ ako je vrednost veličine manja ili jednaka 0.5, a
„pismo“ u suprotnom, imamo Monte Karlo simulaciju ponašanja višestrukog bacanja
novčića.
Kalos i Vitlok su naglasili da nije uvek lako očuvati ove razlike. Na primer, emisija radijacije iz
atoma je prirodan stohastički proces. Može biti direktno simuliran, ili se njegovo uobičajeno
ponašanje može opisati stohastičkim jednačinama koje se mogu rešiti pomoću metoda Monte Karlo.
„Zaista, isti kompjuterski kod se može istovremeno posmatrati kao „prirodna simulacija“ ili kao
rešenje jednačina prirodnim uzorkovanjem.“
Savilovski je izneo karakteristike visokokvalitetne Monte Karlo simulacije:
6
(pseudoslučajni) generator brojeva ima određene poželjne karakteristike (poput dugog
perioda pre nego što se niz ponavlja)
(pseudoslučajni) generator brojeva ima daje vrednosti koje prolaze testove slučajnosti
dovoljnan je broj uzoraka koji garantuju istinite rezultate
koristi se pogodna tehnika uzorkovanja
korišćeni algoritam je validan za ono što on modelira
zaista simulira fenomen koji se razmatra
Dakle, kao što smo već mogli da zaključimo, Monte Karlo metode imaju izuzetno široku primenu u
mnogobrojnim naučnim sferama i realnom životu. One se koriste u fizici, fizičkoj hemiji, hemiji,
inženjeringu (mikroelektronika, geostatistika, geometalurgija, energija vetrova, dinamika fluida,
robotika, telekomunikacija), zatim u biologiji, medicini, grafičkom dizajnu, primenjenjoj statistici,
veštačkoj inteligenciji kod igara, finansijama i biznisu, ali uveliko i u društvenim naukama.
7
O slučajnim i pseudoslučajnim brojevima
U osnovi metoda Monte Karlo najvažniji korak je svođenje konkretnog zadatka na određivanje
matematičkog očekivanja. Bolje rečeno, ako je potrebno izračunati vrednost veličine , tada treba
izabrati slučajnu veličinu takvu da je . Zatim treba modelirati nezavisnih realizacija
veličine . Na osnovu zakona velikih brojeva, matematičko očekivanje veličine je blisko
srednjoj vrednosti
( ).
Smatrajući da su realizovane vrednosti slučajnih veličina koje sve imaju istu
raspodelu kao i , sa matematičkim očekivanjem jednakim i disperzijom , prema Centralnoj
graničnoj teoremi važi
{| |
√ }
→
√ ∫
Ako je konačan, ali dovoljno veliki broj, tada je raspodela za ̅ približno normalna, a verovatnoća
na levoj strani poslednjeg izraza je približno * +, gde slučajna veličina ima
( ) raspodelu. Ako se postavi uslov * + , onda se iz tablica za normalnu
raspodelu može odrediti . Na taj način je određen interval vrednosti za u obliku .
√
√ /. Dužina tog intervala je
√ i teži 0 kad , ali je ta konvergencija spora, što
znači da je konvergencija ̅ ka isto spora. Zato je neophodno modelirati veliki broj vrednosti
slučajne promenljive
Kako postoji beskonačno mnogo slučajnih veličina čije je matematičko očekivanje jednako ,
postavljaju se sledeća dva glavna problema:
1. Kako izabrati pogodnu slučajnu promenljivu za konkretni zadatak?
2. Kako modelirati realizacije izabrane slučajne promenljive?
Odgovor na prvo pitanje ne može biti generalno dat. U svakom konkretnom slučaju izbora
raspodele se pristupa poštujući osnovna svojstva te raspodele. Što se drugog pitanja tiče, dovoljno je
znati kako se modeliraju vrednosti jedne slučajne veličine (sa uniformnom raspodelom), jer se
odgovarajućim postupkom od realizacija te slučajne veličine mogu dobiti realizacije bilo koje druge
slučajne veličine.
8
Radi jednostavnosti, za „osnovnu“ slučajnu veličinu izabrana je veličina sa uniformnom
( ) raspodelom, u oznaci ( ) Nezavisne vrednosti realizacije veličine sa ( )
raspodelom nazivaju se slučajni brojevi. Dobijanje slučajnih brojeva moguće je ostvariti korišćenjem
nekog „fizičkog“ aparata: kockice, simetričnog novčića, ruleta, brojača radioaktivnog zračenja, itd.,
koji se zove generator slučajnih brojeva. Eksperimentalno se dobija neki niz cifara: i pri bacanju
novčića; pri bacanju kockice; i kod Gajgerovog brojača (zavisno od toga da li je broj
impulsa u posmatranom vremenskom intervalu paran ili neparan) i onda se na odgovarajući način
prevodi dobijeni niz cifara u broj iz dekadnog brojnog sistema, iz intervala ( ) Realizacija slučajne
veličine ( ) se zove slučajni broj, a realizacija slučajne veličine sa diskretnom uniformnom
raspodelom
. /
se zove slučajna cifra. Njihovu vezu daje sledeća teorema:
Teorema 1: Veza slučajnih brojeva i slučajnih cifara
Dekadne cifre slučajnog broja predstavljaju nezavisne realizacije
slučajne veličine sa diskretnom uniformnom raspodelom i obratno.
Prva tablica slučajnih cifara je objavljena godine i sadržala je cifara. Rand Korporacija
je godine objavila tablicu od slučajnih cifara. Evo jednog dela te tablice:
Cifre su grupisane radi lakšeg čitanja, a mogu se čitati s leva na desno, odozgo prema dole ili po
nekom sasvim drugom pravilu, počevši od bilo kog mesta u tablici. Iako prethodna teorema ne važi
u slučaju konačnog decimalnog zapisa, ipak se iz tablica, po potrebi, mogu čitati „slučajni brojevi“ sa
izvesnim brojem decimala (npr. uzimajući redom iz prve vrste po cifre dobija se
).
Interesantno je da cifre iz decimalnog zapisa broja ili takođe mogu da se koriste kao tablice
slučajnih cifara.
Modeliranje vrednosti slučajne veličine sa uniformnom ( ) raspodelom ostvaruje se na
osnovu sledećeg tvrđenja:
9
Tvrđenje 1: Ako slučajna veličina ima uniformnu ( ) raspodelu, tada slučajna veličina
( ) ima uniformnu ( ) raspodelu.
Brojevi iz intervala ( ) koji se dobijaju po određenim pravilima zovu se pseudoslučajni brojevi.
Algoritam na osnovu koga se dobija niz pseudoslučajnih brojeva zove se generator pseudoslučajnih
brojeva. Dobijeni niz brojeva nije zaista slučajan jer je u potpunosti određen skupom početnih
vrednosti, ali zadovoljava veći broj uslova slučajnosti, koji se proveravaju statističkim metodama.
Pseudoslučajni brojevi se mogu dobiti na brži i jednostavniji način nego slučajni brojevi, a imaju
(skoro) sve osobine koje slučajni brojevi treba da imaju. Takođe se za prednost pseudoslučajnih
brojeva smatra i to što se može ponoviti generisanje istog niza brojeva, što znači da se eksperiment
može „ponoviti“ u identičnim uslovima.
Niz pseudoslučajnih brojeva se obično dobija nekom rekurentnom formulom.
Jedna od prvih primenjivanih formula je tzv. metoda sredina kvadrata koju je predložio Džon fon
Nojman godine:
, (
)-
gde označava decimalni, ceo deo broja a ima oblik . Broj se bira proizvoljno.
Problem kod nizova pseudoslučajnih brojeva dobijenih ovom metodom je što obično imaju mali
period (dužina niza pre nego što počne da se ponavlja). Neki izbori za nisu povoljni jer se
„prebrzo“ ponove iste vrednosti u nizu ili se dobije degenerisani niz čiji su svi elementi jednaki .
Postoje i razne druge matematičke formule za dobijanje pseudoslučajnih brojeva. Jedna od njih se
zasniva na sledećoj teoremi:
Teorema 2: Neka je proizvoljan prirodan broj i neka je slučajna veličina sa uniformnom
( ) raspodelom. Slučajna veličina ( ), gde označava decimalni deo broja, ima
( ) raspodelu.
Derik Henri Lemer je godine osmislio linearni kongruentni generator, koji se koristi u
najvećem broju dašanjih generatora pseudoslučajnih brojeva. Linearni kongruentni generator
proizvodi niz pseudoslučajnih brojeva , koji je određen početnim članom i
rekurentnom formulom
( ),
gde su , i dati prirodni brojevi, pri čemu je * +. Koristi se oznaka
( ). Za se uzima veoma veliki broj, pošto period niza ne može biti veći od .
Maksimalan period niza pseudoslučajnih brojva dobijenog LKG-om se može dobiti pri
pogodnom izboru konstanti , i . Važi sledeća teorema:
10
Teorema 3: Niz pseudoslučajnih brojeva koji se dobija linearnim kongruentnim generatorom ima
maksimalan period ako su ispunjeni sledeći uslovi:
1. Brojevi i su uzajamno prosti.
2. Svaki prost delilac broja m jeste delilac i broja .
3. Ako je broj deljiv sa , onda je i broj deljiv sa .
Svaki niz pseudoslučajnih brojeva pre primene prolazi kroz veliki broj testova.
11
Osnovni primeri Monte Karlo simulacije u jednoj
i dve dimenzije
Paket mc2d u R-u sadrži alate za konstrukciju i analizu jednodimenzionalnih i dvodimenzionalnih
Monte Karlo simulacija. Dvodimenzionalna Monte Karlo simulacija (tj. simulacija 2. reda) je
simulacija gde se raspodele koje reflektuju promenljivost i one koje reflektuju nepouzdanost
posebno uzorkuju u simulaciji, tako da se promenljivost i nepouzdanost u rezultatu mogu posebno
proceniti. Formalnije, ovakva simulacija služi za procenu nepouzdanosti raspodela verovatnoća
posmatranih slučajnih veličina (i nekih njihovih karakteristika). Osnovni koncept se može predstaviti
kao lanac triju slučajnih veličina:
koji se odlikuje marginalnom raspodelom od , - i uslovnim raspodelama , | - i
, | -, pod pretpostavkom da je zajednička raspodela ovih triju slučajni veličina:
, - , -, | -, | -.
je slučajna promenljiva koja nas zanima, je parametar koji karakteriše raspodelu veličine ; on
nije precizno poznat, ali se njegova nepouzdanost može okarakterisati raspodelom , | -; je
parametar koji karakteriše raspodelu nepouzdanosti od , i njegova raspodela , - je poznata.
Dvodimenzionalna Monte Karlo simulacija obezbeđuje familiju od raspodela , | -, gde
su nezavisno izabrani iz , | -, * +. Paket mc2d je skup R funkcija koje su vrlo
korisne u implentiranju takvih dvodimenzionalnih Monte Karlo simulacija. Poenta je da ovaj paket
koristi nizove od bar 2 dimenzije za dobijanje rezultata – prva dimenzija oslikava promenljivost, a
druga neopouzdanost.
Primer:
Procena kvantitativnog rizika: Bolest Ešerihija Koli se smatra povezanom sa konzumiranjem
smrznute govedine kod dece mlađe od 3 godine. Napomena: podaci su fiktivni i model je
maksimalno pojednostavljen kako bi bolje ilustrovao upotrebu paketa. Model pretpostavlja sledeće:
u komadu govedine Ešerihija Koli je uniformno raspodeljena sa prosečnom koncentracijom
od 10 bakterija po gramu proizvoda
nema zabeleženog porasta broja bakterija s obzirom da se meso čuva zamrznuto pre
upotrebe
12
2.7% korisnika ne obradi proizvod dovoljno dobro, 37.3% to uradi osrednje, a 60% onako
kako treba
pri nedovoljnoj obradi, sve bakterije prežive; pri osrednjoj obradi, 1/5 preživi, a pri dobroj,
svega 1/50
promenljivost u veličini porcija steka (veličina ) za decu mlađu od 3 godine se može opisati
gama raspodelom sa parametrima 3.93 i 0.0806
verovatnoća bolesti po jedinici je konstantna,
Ova raspodela će biti procenjena korišćenjem jednodimenzionalne i dvodimenzionalne Monte Karlo
simulacije u R-u.
Jednodimenzionalni slučaj:
Pretpostavljamo da ne postoji nikakva nepouzdanost u našem modelu, već sve raspodele
reprezentuju samo promenljivost. Model se može predstaviti kao:
gde ( ) predstavlja empirijsku raspodelu gde se svaka vrednost uzima sa verovatnoćom
. Radimo sa 1001 iteracijom. Model se može zapisati kao:
library(mc2d)
ndvar(1001)
[1] 1001
conc <- 10
cook <- mcstoc(rempiricalD, values=c(1,1/5,1/50), prob=c(0.027,0.373,0.600))
serving <- mcstoc(rgamma,shape=3.93,rate=0.0806)
expo <- conc * cook * serving
dose <- mcstoc(rpois,lambda=expo)
r <- 0.001
risk <- 1-(1-r)^dose
EC1 <- mc(cook,serving,expo,dose,risk)
print(EC1)
13
node mode nsv nsu nva variate min mean median max Nas type outm 1 cook numeric 1001 1 1 1 0.02 0.1045 0.0200 1.000 0 V each 2 serving numeric 1001 1 1 1 4.87 49.7383 44.7057 154.327 0 V each 3 expo numeric 1001 1 1 1 1.15 50.9290 14.6866 1364.665 0 V each 4 dose numeric 1001 1 1 1 0.00 51.0280 14.0000 1313.000 0 V each 5 risk numeric 1001 1 1 1 0.00 0.0467 0.0139 0.731 0 V each
summary(EC1)
cook : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 0.104 0.154 0.02 0.02 0.02 0.02 0.2 0.2 1 1001 0 serving : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 49.7 26.2 4.87 12.3 29.6 44.7 65.7 109 154 1001 0 expo : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 50.9 86.1 1.15 2.87 7.69 14.7 75.1 224 1365 1001 0 dose : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 51 85.8 0 2 7 14 75 228 1313 1001 0 risk : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 0.0467 0.0677 0 0.002 0.00698 0.0139 0.0723 0.204 0.731 1001 0
Ovaj jednodimenzionalni model daje procenu srednjeg rizika (približno 5%) i kvantile funkcije rizika
(2.5% populacije ima rizik od oboljevanja veći od 20.3%).
Dvodimenzionalni slučaj:
Pretpostavimo sada da koncentracija bakterija u proizvodu nije pouzdano poznata, ali je data
tačkasta ocena. Mikrobiolozi smatraju da se nepouzdanost oko ove procene može reprezentovati
normalnom raspodelom sa parametrima i . Epidemiološke studije kažu da je
parametar takođe nepouzdan. Nepouzdanost u okolini srednje vrednost 0.001 se može predstaviti
uniformnom raspodelom između 0.0005 i 0.0015. Model se može predstaviti kao:
Koristimo dvodimenzionalnu Monte Karlo simulaciju sa 1001 iteracijom u dimenziji promenljivosti i
101 iteracijom u dimenziji nepouzdanosti. R-kod je:
14
ndunc(101)
[1] 101
conc <- mcstoc(rnorm,type="U",mean=10,sd=2)
cook <- mcstoc(rempiricalD, type="V",values=c(1,1/5,1/50), prob=c(0.027,0.373,0.600))
serving <- mcstoc(rgamma,type="V",shape=3.93,rate=0.0806)
expo <- conc * cook * serving
dose <- mcstoc(rpois,type="VU",lambda=expo)
r <- mcstoc(runif,type="U",min=0.0005,max=0.0015)
risk <- 1-(1-r)^dose
EC2 <- mc(conc,cook,serving,expo,dose,r,risk)
print(EC2,digits=2)
node mode nsv nsu nva variate min mean median max Nas type outm 1 conc numeric 1 101 1 1 5.5102 10.118 10.1456 1.5e+01 0 U each 2 cook numeric 1001 1 1 1 0.0200 0.109 0.0200 1.0e+00 0 V each 3 serving numeric 1001 1 1 1 5.0504 46.713 42.8058 1.6e+02 0 V each 4 expo numeric 1001 101 1 1 0.5566 51.183 13.3796 1.2e+03 0 VU each 5 dose numeric 1001 101 1 1 0.0000 51.196 14.0000 1.2e+03 0 VU each 6 r numeric 1 101 1 1 0.0005 0.001 0.0011 1.5e-03 0 U each 7 risk numeric 1001 101 1 1 0.0000 0.048 0.0147 7.8e-01 0 VU each
summary(EC2)
cook : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 0.104 0.154 0.02 0.02 0.02 0.02 0.2 0.2 1 1001 0 serving : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 49.7 26.2 4.87 12.3 29.6 44.7 65.7 109 154 1001 0 expo : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 50.9 86.1 1.15 2.87 7.69 14.7 75.1 224 1365 1001 0 dose : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 51 85.8 0 2 7 14 75 228 1313 1001 0 risk : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 0.0467 0.0677 0 0.002 0.00698 0.0139 0.0723 0.204 0.731 1001 0 conc : NoVar median 10.15 mean 10.12 2.5% 6.72 97.5% 13.80 cook : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 0.109 0.166 0.02 0.02 0.02 0.02 0.2 0.2 1 1001 0 serving : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's NoUnc 46.7 23.6 5.05 11.9 29.4 42.8 59.5 102 161 1001 0 expo : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's median 51.3 86.3 1.025 2.98 7.58 13.52 74.2 218 816 1001 0
15
mean 51.2 86.0 1.022 2.98 7.56 13.48 74.0 218 813 1001 0 2.5% 34.0 57.2 0.679 1.98 5.02 8.95 49.1 145 540 1001 0 97.5% 69.8 117.3 1.394 4.06 10.31 18.38 100.9 297 1109 1001 0 dose : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's median 51.4 86.4 0.0000 2.0 7.00 14.0 74.0 225 794 1001 0 mean 51.2 86.4 0.0099 1.7 7.15 14.0 73.9 227 810 1001 0 2.5% 33.9 57.0 0.0000 1.0 5.00 9.5 47.5 149 518 1001 0 97.5% 69.9 117.8 0.0000 3.0 10.00 19.0 102.5 320 1132 1001 0 r : NoVar median 0.001120 mean 0.001043 2.5% 0.000538 97.5% 0.001485 risk : mean sd Min 2.5% 25% 50% 75% 97.5% Max nsv Na's median 0.0475 0.0710 0.00e+00 0.001438 0.00712 0.01403 0.0738 0.2064 0.561 1001 0 mean 0.0481 0.0710 1.36e-05 0.001769 0.00741 0.01443 0.0738 0.2081 0.549 1001 0 2.5% 0.0206 0.0329 0.00e+00 0.000613 0.00290 0.00578 0.0308 0.0908 0.287 1001 0 97.5% 0.0760 0.1064 0.00e+00 0.003270 0.01238 0.02349 0.1201 0.3214 0.755 1001 0
Summary obezbeđuje procene raspodela promenljivosti, ali sa merom njihove nepouzdanosti. Sada
je procena srednjeg rizika nepouzdana. Najbolja procena medijane je 0.0445 sa 95%-ntnim
intervalom poverenja , -.
16
Monte Karlo integracija
U ovom odeljku ćemo uvesti glavne koncepte Monte Karlo metoda – korišćenje mogućnosti
kompjuterski generisanih slučajnih promenljivih za aproksimaciju jednostrukih i višestrukih integrala.
Dve glavne klase numeričkih problema koje se javljaju u statističkom zaključivanju su problemi
optimizacije i problemi integracije. Zaista, brojni primeri pokazuju da nije uvek moguće analitički
odrediti ocene vezane za datu paradigmu (maksimalna verodostojnost, Bajes, metod momenata, itd.).
Stoga smo često prinuđeni na numerička rešenja. Pri tom, mogućnost dobijanja skoro beskonačnog
broja slučajnih veličina raspodeljenih u skladu sa datom raspodelom daje nam pristup korišćenju
frekventnih i asimptotskih rezultata mnogo lakše nego uobičajeno, kad je veličina uzorka često
fiksirana. Tako se mogu primeniti značajni rezultati iz verovatnoće poput Zakona velikih brojeva ili
Centralne granične teoreme, pošto one dozvoljavaju procenu konvergencije metoda simulacije.
Pre nego što opišemo određene Monte Karlo tehnike, jedna očigledna alternativa korišćenju
simulacionih metoda za procenjivanje integrala oblika
gde je funkcija gustine, bila bi oslanjanje na numeričke metode poput Simpsonove i Trapezne
formule. Tako nešto R omogućava svojim dvema funkcijama area i integrate.
Primer 1: Kao test, uporedimo korišćenje funkcije integrate za integral
sa računanjem ( ) pomoću gamma funkcije. Implementirano u R, to izgleda ovako:
ch=function(la){
integrate(function(x){x^(la-1)*exp(-x)},0,Inf)$val
}
plot(lgamma(seq(.01,10,le=100)),log(apply(as.matrix(seq(.01,10,le=100)),1,ch)),xlab="log(integrate(f))",
ylab=expression(log(Gamma(lambda))),pch=19,cex=.6)
Tako dobijemo sledeći grafik:
17
gde nema raskoraka ni za vrlo male vrednosti λ.
Velika poteškoća sa metodama numeričke integracije poput integrate funkcije je to što one
često ne mogu da obeleže regiju važnosti za funkciju koja se integrali. Nasuprot tome, simulacione
metode prirodno nanišane ovu oblast uz pomoć informacija koje obezbeđuje funkcija gustine u
integralima.
Primer 2: Posmatrajmo uzorak od 10 Košijevih RV-ova ( ) sa parametrom lokacije
. Marginal uzorka je tada:
Međutim, funkcija integrate vraća netačnu numeričku vrednost:
cac=rcauchy(10)+350
lik=function(the){
u=dcauchy(cac[1]-the)
for (i in 2:10)
u=u*dcauchy(cac[i]-the)
return(u)
}
integrate(lik,-Inf,Inf)
7.38034e-46 with absolute error < 1.5e-45
integrate(lik,200,400)
4.83155e-13 with absolute error < 9e-13
i neuspešno signalizuje poteškoću s obzirom da je procena greške apsurdno mala. Dalje, rezultat nije
uporediv sa rezultatom area funkcije:
cac=rcauchy(10)
nin=function(a){integrate(lik,-a,a)$val}
18
nan=function(a){area(lik,-a,a)}
x=seq(1,10^3,le=10^4)
y=log(apply(as.matrix(x),1,nin))
z=log(apply(as.matrix(x),1,nan))
plot(x,y,type="l",ylim=range(cbind(y,z)),lwd=2)
lines(x,z,lty=2,col="sienna",lwd=2)
U ovom slučaju, upotreba funkcije area daje mnogo pouzdaniji rezultat, kao što se to vidi na slici, s
obzirom da se area(lik,-a,a) ispravlja kako raste, ali to očigledno zahteva neko veće znanje
o lokaciji mode integranda.
Sve u svemu, alati numeričke integracije ne mogu lako izraziti višedimenzionalne integrale koji su
centralni objekti u statističkim problemima. Smišjanje specifičnih tehnika integracije za ovakve
probleme bi bilo preskupo, naročito zbog toga što možemo iskoristiti prednost probabilističke
prirode ovih integrala.
19
Klasična Monte Karlo integracija
Generalni problem jeste nalaženje integrala (dalje ćemo koristiti oznaku ** za njega):
gde je X skup gde promenljiva uzima svoje vrednosti, koji je obično jednak nosaču funkcije
gustine f. Princip Monte Karlo metoda za aproksimaciju prethodnog izraza je generisati uzorak
( ) iz gustine f i za aproksimaciju uzeti empirijsku sredinu
izračunati pomoću mean(h(x)) u R-u, s ozbirom na to da ̅ konvergira ka , ( )- skoro
sigurno, prema jakom Zakonu velikih brojeva. Dalje, kada ( ) ima konačno očekivanje za f,
brzina konvergencije od ̅ se može proceniti, s obzirom da je konvergencija reda (√ ) i
asimptotska varijansa procene je
što se može proceniti iz uzorka ( ) pomoću
Specijalno, za veliko , zbog Centralne granične teoreme,
se procenjuje ( ) raspodelom, i to dovodi do konstrukcije testa konvergencije i intervala
poverenja za aproksimaciju , ( )-.
Primer 3: Za funkciju
koja je predstavljena prvim grafikom na sledećoj slici, naći njen integral na intervalu , -. To se
može posmatrati kao uniformno očekivanje, i stoga generišemo nezavisne slučajne veličine
20
sa uniformnom ( ) raspodelom i aproksimiramo ∫ ( ) sa ∑ ( )
. Donji grafik
na sledećoj slici prikazuje dobijene sredine i granice dobijene iz procenjenih standardnih grešaka u
skladu sa broj simulacija, n. Implementacija u R-u izgleda ovako:
h=function(x){(cos(50*x)+sin(20*x))^2}
par(mar=c(2,2,2,1),mfrow=c(2,1))
curve(h,xlab="Function",ylab="",lwd=2)
integrate(h,0,1)
0.965201 with absolute error < 1.9e-10
x=h(runif(10^4))
estint=cumsum(x)/(1:10^4)
esterr=sqrt(cumsum((x-estint)^2))/(1:10^4)
plot(estint, xlab="Mean and error range",type="l",lwd=2,ylim=mean(x)+20*c(-esterr[10^4], esterr[10^4]),
ylab="")
lines(estint+2*esterr,col="gold",lwd=2)
lines(estint-2*esterr,col="gold",lwd=2)
Napomena: Dobijena „traka“ poverenja nije 95%-ntni interval poverenja u klasičnom smislu.
Monte Karlo metodologija ilustrovana gornjim primerom može se uspešno implementirati u
velikom broju slučajeva gde se raspodele vezane za model mogu simulirati. Na primer, možemo
koristiti Monte Karlo sume za nalaženje normalne kumulativne funkcije raspodele (i pored toga što
se ona lako može naći pomoću nekog softvera ili kalkulatora).
Primer 4: Neka je ( ) uzorak obima n iz ( ) raspodele. Aproksimacija funkcije
21
metodom Monte Karlo je
sa varijansom ( ), ( )- . Sledeća tabela daje verovatnoće iz normalne raspodele dobijene
regularnim Monte Karlo eksperimentom zasnovanim na generisanja. Posednji red daje tačne
vrednosti:
Implementacija u R-u koja dovodi do prethodne tabele je:
x=rnorm(10^8)
bound=qnorm(c(.5,.75,.8,.9,.95,.99,.999,.9999))
res=matrix(0,ncol=8,nrow=7)
for (i in 2:8)
for (j in 1:8)
res[i-1,j]=mean(x[1:10^i]<bound[j])
matrix(as.numeric(format(res,digi=4)),ncol=8)
Za vrednosti bliske 0, varijansa je približno , i kako bismo dobili preciznost na 4 decimala,
treba nam oko simulacija. Prethodna tabela daje „evoluciju“ ovih aproksimacija za nekoliko
vrednosti i daje tačnu vrednost za 100 miliona iteracija. Pri tom se veća tačnost dostiže na
repovima i mogu se koristiti mnogo efikasnije simulacione metode.
Monte Karlo aproksimacija funkcije raspodele verovatnoća ima značajnu primenu u proceni
raspodele test-statistike poput testa količnika verodostojnosti pri nultoj hipotezi. Možda se čini da je
za sada uvedena Monte Karlo metodologija dovoljna da aproksimira integrale poput **, međutim,
postoje mnogo efikasnije alternative koje ne samo da izbegavaju direktnu simulaciju iz , već se
mogu ponavljati za nekoliko integrala oblika **. Tako nešto je moguće za familiju funkcija ili
familiju gustina . Dalje, problemi „repne“ simulacije poput Primera 4 se mogu rešavati mnogo
22
efikasnije od simulacije iz , s obzirom da simulacije sa vrlo malom verovatnoćom zahtevaju veoma
veliki broj simulacija iz za dostizanje određene preciznosti.
23
Uzorkovanje po značaju
Metod koji sada izučavamo se naziva uzorkovanje po značaju jer se zasniva na tzv. funkcijama od
značaja. Nalaženje integrala ** zasnovano na simulacijama iz skoro nikada nije optimalno u smislu
da korišćenje alternativnih raspodela može poboljšati varijansu dobijene procene od **.
Ova metoda je zasnovana na alternativnoj reprezentaciji integrala **. Neka je gustina koja je
strogo pozitivna kada je različito od 0. Tada se ** drugačije može zapisati kao
i ova fundamentalna jednakost uzorkovanja po značaju opravdava upotrebu procene
koja je zasnovana na uzorku generisanog iz i koja konvergira ka **.
Primer 5: Kao što je rečeno na kraju prethodnog primera, aproksimiranje repnih verovatnoća
korišćenjem standardnih Monte Karlo suma ne prolazi kada se ode dovoljno daleko u repove. Na
primer, ako je ( ) i želimo da nađemo verovatnoću * +, koja je veoma mala,
pnorm(-4.5,log=T)
[1] -12.59242
simuliranje ( ) ( ) daje pogodak samo jednom u oko 3 miliona iteracija!
Naravno, problem je to što smo zainteresovani za verovatnoću veoma retkog događaja i tada
„naivna“ simulacija iz će zahtevati veliki broj simulacija za dobijanje stabilnog rešenja. Međutim,
zahvaljujući uzorkovanju po značaju, možemo znatno poboljšati našu tačnost i prilično smanjiti broj
simulacija.
Na primer, ako posmatramo raspodelu sa nosačem ( ), slučaj i simulacija nula nestaje.
Prirodan izbor jeste uzeti kao gustinu eksponencijalne raspodele:
a odgovarajuća procena repne verovatnoće je:
24
gde su nezavisne slučajne veličine generisane iz . Odgovarajući kod u R-u je:
Nsim=10^3
y=rexp(Nsim)+4.5
weit=dnorm(y)/dexp(y-4.5)
plot(cumsum(weit)/1:Nsim,type="l")
abline(a=pnorm(-4.5),b=0,col="red")
Konačna vrednost je , a tačna iznosi . Kao što se to vidi na narednoj slici,
tačnost ove aproksimacije je izvanredna, naročito ako se uzmu u obzir zahtevi za originalnu veličinu
nametnuti od strane normalne simulacije.
Uzorkovanje po značaju je stoga vrlo poželjno, s ozbirom da nema mnogo restrikcija za izbor
raspodele , koja može biti izabrana među raspodelama koje se ili lako mogu simulirati ili su efikasne
u aproksimaciji integrala. Zatim, isti uzorak (generisan iz ) se može koristiti više puta uzastopce, ne
samo za različite funkcije , već i za različite gustine .
Primer 6: Kada posmatramo opservaciju x iz ( ) raspodele,
postoji familija na ( ) oblika
25
gde su hiperparametri, s obzirom da je posterior jednak
Nije lako baratati sa ovakvom familijom raspodela zbog toga što je komplikovano koristiti gama
funkcije. Otuda je direktno simuliranje iz ( | ) nemoguće. Stoga nam treba druga raspodela
( ). Za , R kod je:
f=function(a,b){
exp(2*(lgamma(a+b)-lgamma(a)-lgamma(b))+a*log(.3)+b*log(.2))
}
aa=1:150
bb=1:100
post=outer(aa,bb,f)
image(aa,bb,post,xlab=expression(alpha),ylab=" ")
contour(aa,bb,post,add=T)
Na narednoj slici, gornji grafik govori da normalna ili Studentova raspodela za par ( ) može biti
pogodna. Biramo Studentovu ( ) raspodelu, gde je ( ) i .
/
(kovarijaciona matrica), a R kod je:
x=matrix(rt(2*10^4,3),ncol=2)
E=matrix(c(220,190,190,180),ncol=2)
image(aa,bb,post,xlab=expression(alpha),ylab=" ")
y=t(t(chol(E))%*%t(x)+c(50,45))
points(y,cex=.6,pch=19)
26
Primer 7: (nastavak na prethodni primer) Validnost aproksimacije
marginalne verodostojnosti (tj. konvergencije rešenja uzorkovanja po značaju), gde su ( )
nezavisnih realizacija iz može se proceniti pomoću sledećeg koda:
par(mfrow=c(2,2),mar=c(4,4,2,1))
weit=(apply(y,1,f)/den)/mean(apply(y,1,h)/den)
image(aa,bb,post,xlab=expression(alpha), ylab=expression(beta))
points(y[sample(1:length(weit),10^3,rep=T,pro=weit),], cex=.6,pch=19)
boxplot(weit,ylab="importance weight")
plot(cumsum(weit)/(1:length(weit)),type="l", xlab="simulations", ylab="marginal likelihood")
boot=matrix(0,ncol=length(weit),nrow=100)
for (t in 1:100)
boot[t,]=cumsum(sample(weit))/(1:length(weit))
uppa=apply(boot,2,quantile,.95)
lowa=apply(boot,2,quantile,.05)
polygon(c(1:length(weit),length(weit):1),c(uppa,rev(lowa)), col="gold")
lines(cumsum(weit)/(1:length(weit)),lwd=2)
plot(cumsum(weit)^2/cumsum(weit^2),type="l", xlab="simulations", ylab="Effective sample size",lwd=2)
27
gornje levo: superpozicija 103 ponovo uzorkovanih tačaka iz aposteriorne raspodele
( | ) nad parametrima β(α,β) raspodele za x=0.6
gornje desno: box-plot dijagram težina značajnosti
donje levo: konvergencija aptroksimacije m(x)
donje desno: evolucija efektivne veličine uzorka
Tehnika uzorkovanja po značaju je veoma svestrana, ali njena mana je to što loš izbor funkcije
značajnosti g može dati vrlo loše rezultate.
28
Monte Karlo optimizacija
Uvod
Postoje dve vrste problema optimizacije: ili treba naći ekstremume funkcije ( ) na domenu , ili
treba naći rešenja implicitne jednačine ( ) na domenu . Drugi problem se svodi na problem
minimizacije funkcije poput ( ) ( ), dok je prvi problem ekvivalentan rešavanju jednačine ( )
(uz pretpostavku da je funkcija diferencijabilna). Stoga se samo fokusiramo na problem
maksimizacije (dalje u oznaci ##):
s obzirom da se problem minimizacije može svesti na problem maksimizacije zamenom ili
za . Slično kao kod problema integracije razmatranog u prethodnom poglavlju, problem
maksimizacije se može obraditi numeričkim ili stohastičkim sredinama. To u numeričkom pogledu
uveliko zavisi od analitičkih svojstava ciljne funkcije, poput konveksnosti, ograničenosti i glatkosti,
dok ove osobine za funkciju igraju neznatnu ulogu u pristupima zasnovanim na simulaciji. Stoga,
ukoliko je funkciju teško analitički ispitati ili ako je domen isuviše složen, pribegava se
stohastičkom pristupu.
Metode numeričke optimizacije
U R-u postoji nekoliko ugrađenih funkcija koje rešavaju probleme numeričke optimizacije.
Najjednostavnija je optimize (ili optimise) koja radi sa jednodimenzionalnim slučajevima.
Primer 1: Kada maksimiziramo verodostojnost uzorka iz Košijeve ( ) raspodele,
niz maksimuma konvergira ka kada . To je prikazano na levom grafiku sledeće slike, a
R-kod je:
xm=rcauchy(500)
f=function(y){-sum(log(1+(x-y)^2))}
for (i in 1:500){
x=xm[1:i]
29
mi=optimize(f,interval=c(-10,10),max=T)$max
}
gde se prirodni logaritam verodostojnosti maksimizira sekvencijalno kako uzorak raste. Međutim,
korišćenje funkcije optimize daje divergentan niz s obzirom da verodostojnost postaje vrlo mala za
oko opservacija. Ako zamenimo glatku funkciju verodostojnosti sa nečim drugačijim
poput:
f=function(y){-sin(y*100)^2-sum(log(1+(x-y)^2))}
optimize funkcija postaje nestabilna, kao što se to vidi na desnom grafiku, s obzirom da dva niza
ocena maksimuma verodostojnosti nisu više identična.
Prirodan način za korišćenje simulacija da bi se dobila aproksimacija izraza ## jeste simuliranje
tačaka iz domena u skladu sa proizvoljnom raspodelom , svuda pozitivnom na , dok se ne
dobije dovoljno velika vrednost za ( ) Ovakvo rešenje može biti vrlo neefikasno ako nije
izabrano u skladu sa . Međutim, ako je ograničen, možemo simulirati iz uniformne raspodele na
teta, , i uzeti
za aproksimaciju ##.
Primer 2: Posmatrajmo već viđenu funkciju u prethodnom poglavlju:
( ) , ( ) ( )-
definisanu na , -. Pozivanjem funkcije optimize daje maksimum u koj iznosi
( ) . Ako hoćemo da procenimo promenljivost uniformnog uzorkovanja, možemo
koristiti višestruke uniformne nizove kao u kodu:
rangom=h(matrix(runif(10^6),ncol=10^3))
30
monitor=t(apply(rangom,1,cummax))
plot(monitor[1,],type="l",col="white")
polygon(c(1:10^3,10^3:1),c(apply(monitor,2,max), rev(apply(monitor,2,min))),col="grey")
abline(h=optimise(h,int=c(0,1),max=T)$ob)
i to daje sledeći grafik:
Dok je početna vrednost ( ) vrlo promenljiva, nakon 1000 iteracija, najgori niz među 1000
paralelnih je za 0.24 udaljen od maksimuma. Ovo rešenje ubrzo postaje nepraktično kako dimenzija
problema raste. Stoga je mnogo produktivnije dizajnirati simulacioni eksperiment u bliskoj vezi sa
isto koliko i sa domenom . Intuitivno, ima smisla povećati verovatnoću simuliranja u oblastima gde
je veliko, i smanjiti je tamo gde je ono malo. To znači formiranje raspodele verovatnoća koja je u
nelinearnoj vezi sa , ali sa (skoro) istim modama. U statističkim primenama, je uglavnom
verodostojnost.
Primer 3: Minimizirajmo sledeću funkciju 2 promenljive:
čiji se globalni minimum dostiže u ( ) ( ) i iznosi 0. Ova funkcija ima više lokalnih
minimuma, i to se vidi na sledećoj slici uz pomoć R koda:
h=function(x,y){(x*sin(20*y)+y*sin(20*x))^2*cosh(sin(10*x)*x)+(x*cos(10*y)-
y*sin(10*x))^2*cosh(cos(20*y)*y)}
x=y=seq(-3,3,le=435)
z=outer(x,y,h)
par(bg="wheat",mar=c(1,1,1,1))
persp(x,y,z,theta=155,phi=30,col="green4",ltheta=-120,shade=.75,border=NA,box=FALSE)
31
Stoga ona ne zadovoljava uslove za koje bi standardne metode minimizacije garantovale
obezbeđivanje globalnom minimuma.
S druge strane, raspodela na sa gustinom proporcionalnom ( ) bi mogla biti simulirana, iako
to nije standarna raspodela.
32
Literatura
1. http://en.wikipedia.org/wiki/Monte_Carlo_method
2. http://www.lancaster.ac.uk/pg/jamest/Group/stats2.html
3.http://stackoverflow.com/questions/16323053/code-for-monte-carlo-simulation-generate-
samples-of-given-size-in-r
4. http://jackman.stanford.edu/classes/BASS/ch3.pdf
5.http://www.lce.esalq.usp.br/arquivos/aulas/2010/LCE5813/Introducing%20Monte%20Carlo%2
0Methods%20with%20R.pdf
6. Materijali sa časova vežbi iz predmeta:
Statistički Softver 1
Statistički Softver 2