Presentation laddar. Vänta.

Presentation laddar. Vänta.

Simulering Introduktion Exempel: Antag att någon kastar tärning

Liknande presentationer


En presentation över ämnet: "Simulering Introduktion Exempel: Antag att någon kastar tärning"— Presentationens avskrift:

1 Simulering Introduktion Exempel: Antag att någon kastar tärning
a) Vad är sannolikheten att på fyra kast få två sexor? b) Vad är sannolikheten att på 100 kast få mellan 10 och 15 sexor och där summan av de 50 första kasten är mellan 165 och 185? a) P(”två sexor på fyra kast”) = b) P(” ”) Löses analytiskt

2 Simuleringsstudie Kasta 100 kast många gånger och räkna antalet gånger då villkoret är uppfyllt. Skatta sannolikheten med relativa frekvensen, dvs (antalet lyckade / totala antalet kast) Utnyttja dator Bilda slumptal Vad är ett slumptal?

3 Generering av likformigt fördelade slumptal
Hur kan vi bilda ett slumptal som ligger mellan noll och ett? Slumptal - Pseudoslumptal ”Det går aldrig att konstruera riktiga slumptal” Kongruensgeneratorer Diskreta stokastiska variabler - tabellmetoden Kontinuerliga - Inversmetoden 1

4 Slumptal - Pseudoslumptal
Kongruensgenerator utnyttjar rekursion Där a,b,m och xn är heltal x0 är startvärde vilket betyder att Sätt som ger oss att ui är nu ett pseudoslumptal från U(0,1)

5 Egenskaper a) När ett xi återkommer upprepar sig följden periodiskt Ex: Periodlängden beror på startvärdet x0!

6 b) (Knuth 1991) Full periodlängd erhåller man om
1) b och m ej har någon annan gemensam faktor än 1. 2) (a-1) är en multipel av varje primtal som delar m 3) (a-1) är en multipel av 4 om m är det

7 Ex: a = 3, b = 7, m = 9 Villkor 2 ej uppfyllt för full periodlängd! Ex: a = 4, b = 7, m = 9 Alla villkor uppfyllda!

8 Ex: IBM:s generator Periodlängd … eftersom Implementering av IBM:s generator Antagligen vanligast med 32 bitars dator. Problem med xn ! Krav på mer än 32 bitars ordlängd.

9 Recept! Gör enligt följande
Sätt W = C = • = 2836 Bilda Kommer alltid vara 231-1 heltalsdelen Om xn+1 < 0 sätt xn Låt un = xn / (231-1)

10 Generering av slumptal från andra fördelningar
Diskreta fördelningar Bin(1,p) dvs Teknik: Generera ett slumptal U från U(0,1) sätt X=0 X=1 1-p 1

11 X är ett slumptal från Bin(1,p) eftersom
Bin(n,p). Om Xi Bin(1,p), i=1,2,…,n samt oberoende så är Generera n st Bin(1,p) slumptal enligt ovan och sätt så kommer Y vara ett slumptal från Bin(n,p).

12 Alternativ: Tabellmetoden
Ex: Generera slumptal från XBin(5,0.3) P(X=0) = 0.17 P(X=1) = 0.36 P(X=2) = 0.31 P(X=3) = 0.13 P(X=4) = 0.03 P(X=5) = 0.002 0.00 0.17 0.83 0.53 X=0 X=4 X=3 X=2 X=1 X=5 1.00 Generera ett slumptal från UU(0,1) och kontrollera vilket intervall det hamnade i.

13 Tillämpningar Hur finner vi arean av sjön? Använd millimeterpapper och räkna eller utnyttja planinometer. Simulering: Slumpa ut N punkter i kvadraten K, dvs iid U(0,a) som x och y koordinater. Räkna antalet punkter som faller inom sjön, NS och uppskatta sjöarean med AK • NS / N = AK • Eftersom NS får vi att E[ ] = E[NS/N] = N •PS / N = PS V[ ] = N-2 V[NS] = N-2 N PS (1 - PS) = P(1-P)/N

14 Och om vi utnyttjar CGS, (giltigt om NP(1-P) > 10 tex) kan vi konstruera
konfidensintervall för vår skattning, dvs AK • En nackdel är dock att om man inte kan precisera konturen av sjön matematiskt är det lite svårt att implementera metoden på dator… Integralskattning En integral kan ganska lätt skattas mha simulering. Integralen kan uppfattas som arean mellan x-axeln och kurvan y = g(x). Simulera U1, U2, …, UN pseudoslumptal och skatta integralen med

15 Det fungerar eftersom E[g(U)] =
Tänk på att arean under kurvan är lika med medelhöjden på kurvan. Variansen för skattningen blir då Utnyttja CGS, och du kan göra konfidensintervall

16 Ex: Antag att vi vill bestämma integralen

17 Det enklaste : ) är givetvis nu att integrera och bestämma den.
Men man skulle även kunna använda sig av den ovan nämnda tekniken, dvs att utnyttja simulering till att skatta integralen. Eftersom vårt g(x) nu är lika med integralen ovan dvs väljer vi f(x) så att

18 Således, om vi väljer f(x) = 1/5 så är detta uppfyllt.
En simuleringskörning med U(0,5) ger Vi kan notera att sant värde är 525.4 Dock, en väldigt användbar teknik för komplicerade integraler. Vilken sats bygger det här på?

19 Kontinuerliga fördelningar
Inversmetoden Antag att vi vill generera slumptal från en fördelning med fördelningsfunktion F, vars invers F-1(U) är definierad på (0,1). Sats: Om UU(0,1) så har den stokastiska variabeln X = F-1(U) fördelnings- funktionen F. Man kan inse det på följande sätt X = F-1(U)  P(X≤x) = P( F-1(U) ≤x ) = P(U ≤F(x)) = F(x), eftersom P(U ≤a) = a

20 Inversmetoden. Om fördelningsfunktionen har en enkel invers kan vi utnyttja detta! Om X  Exp(m) dvs X är exponentialfördelad med fördelningsfunktion FX(x) = 1 - e -x / m, x≥0 Vi har och om vi använder oss av inversmetoden, dvs lös ut X Dvs generera ett slumptal U från U(0,1). Sätt in U i -m ln(1-U) = X. X är vårt slumptal!

21

22 Normalfördelningen låter sig å andra sidan inte inverteras så enkelt.
Det finns snabbvarianter… trots det. Utnyttja CGS Bilda Enligt CGS är nu

23 Ger dock ”bara” normalfördelade slumptal mellan (-6,6).
Vad är 1-P(-6<X<6)? , dvs ungefär Mer komplicerad variant Lite teori: Låt N1 och N2 vara oberoende N(0,1). Paret(N1,N2) definierar en punkt i två dimensioner Transformationen från kartesiska koordinater till polära koordinater ges av N1 = R cos  N2 = R sin  och transformationen är 1-1.

24 Alla partiella derivator är kontinuerliga vilket betyder att vi kan skriva
simultana täthetsfunktionen som Så man kan plocka fram simultana fördelningsfunktionen för R och 

25 Så… Vi ser att R och  är oberoende sv med

26 Ok, nu till metoden (Box-Muller)
Ger oss två oberoende normalfördelade slumptal Ok. Visa nu detta! Obs jag skämtar…

27 Polar Marsaglia metoden bygger på samma idé men hoppar över
Användandet av trigonometriska funktioner (cosinus och sinus). Algoritm: 1. Generera U1 och U2 från U(0,1) och bilda 2. Sätt R = V12 + V22 Om R > 1 gå tillbaka till 1. 3. Sätt N1 och N2 är två oberoende slumptal från N(0,1)

28 Test av slumptalsgeneratorer
Pokertest Betrakta en följd U1, U2, …, U5k, där varje Ui är ett slumptal som är likformigt fördelat på 0, 1, 2, …, 9. Dela upp följden i k st 5-tupler (U1, U2,…, U5), (U6, …, U10),…, (U5k-4, …, U5k) Bland dessa k st 5-tupler, räkna antalet av typen Typ Antal Sannolikhet Alla olika: a b c d e x P1 = P(alla olika) ett par: a a b c d x P2 två par: a a b b c x P3 triss: a a a b c x osv kåk: a a a b b x5 fyrtal: a a a a b x6 femtal: a a a a a x7

29 Formulera nu en hypotes som man brukar kalla för Nollhypotes H0
H0: Slumptalsgeneratorn genererar likformigt fördelade slumptal mellan 0 och 1 ( U(0,1)). För att nu testa H0 används ett sk ”Chi-två test”, 2 -test. 2 -test metoden. Antag att n ( i vårt fall n = 5k ) stycken oberoende försök har utförts. Varje försök kan resultera i r st olika utfall; A1,A2,…,Ar med sannolikheter p1,p2, …,pr. Låt x1,x2, …,xr vara de observerade antalet utfall på A1,A2,…,Ar.

30 P1,p2, …,pr antas vara okända och man vill testa en viss hypotes rörande
dessa sannolikheter, dvs H0: p1 = p1*, p2 = p2*, …, pr = pr* Konstruera en sk testvariabel Här är n antalet olika utfall som vi kan konstruera, dvs antalet 5-tupler i föregående exempel.

31 För att nu avgöra om vår generator ger bra ”slumptal” jämför vi vår
testvariabel med ett tabellvärde från 2 -fördelningen

32 Man bestämmer då en gräns för när man inte tror att generatorn ger
likformiga slumptal, dvs förkasta H0 om där  = signifikansnivån. I pokertest testas H0 med Arean =  Förkasta H0 om  = signifikansnivån, och den måste man välja själv. Det är vanligt med  = 0.05, 0.01,

33 Gap-test Låt  och  vara två reella tal sådana att Betrakta längden av delföljder Uj, Uj+1, …, Uj+r där Uj+r  (, ) men där Uj, Uj+1, …,Uj+r-1  (, ). Ui pseudoslumptal från U(0,1) Ex: =0.2, =0.5 Bestäm gaplängderna. Vi håller på tills vi fått n st gap U1=0.023 U2=0.354 U3=0.462 U4=0.791 U5=0.553 U6=0.304 U7=0.212 U8=0.893 U9=0.491 1 2

34 Räkna hur många ”gap” man fått av längd 0,1,2, …., ≥ t
Sätt p = β – α (Sannolikhet att hamna i intervall (, ) ) Låt pj = P(”gap”-längden är j) Då blir (geometrisk fördelad) pj = p (1-p)j pt = P(”gap”-längden är  t) = p(1-p)t + p(1-p)t+1 + … = = p(1-p)t (1+(1-p)+(1-p)2+ …) = Testa med Q = Och jämför om

35 Man bör se till att n, t, och p är sådana att npi > 5 för alla ”gap” storlekar.
Typiskt fall för Gap-testet är  = 0, β = 0.1 Många dåliga generatorer ger alldeles för många gap med ”för kort” längd Allmänt gäller vid dessa 2-test att npi > 5.

36 Permutationstest Betrakta en talföljd U1, U2, …, där Ui är slumptal från U(0,1) Dela in talföljden i t-tupler (U1, …,Ut), (Ut+1, …,U2t), … Map storleksföljden kan varje t-tupel vara ordnad på t! sätt. Ex: t = 3, t! = 3! = 6 U1 < U2 < U3 U1 < U3 < U2 U2 < U1 < U3 U2 < U3 < U1 U3 < U1 < U2 U3 < U2 < U1 Varje ordningsföljd har sannolikhet 1/t! (1/6) att erhållas. Bilda n st t-tupler och dela in i t! klasser. Testa med 2-test!


Ladda ner ppt "Simulering Introduktion Exempel: Antag att någon kastar tärning"

Liknande presentationer


Google-annonser