simulering introduktion exempel: antag att någon kastar tärning

36
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”) = 116 . 0 6 5 6 1 2 4 2 2 ) P(” ”) 13 . 0 Löses analytiskt

Upload: archer

Post on 05-Jan-2016

74 views

Category:

Documents


0 download

DESCRIPTION

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”) =. - PowerPoint PPT Presentation

TRANSCRIPT

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

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”) = 116.065

61

2

4 22

b) P(” ”) 13.0 Löses analytiskt

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

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?

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

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

mmod)bax(x n1n 1m,0xi

1,0mx

u ii

Diskreta stokastiska variabler - tabellmetoden

Kontinuerliga - Inversmetoden

0 1 2 3 4

)u(Fx i1

i

10

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

Slumptal - Pseudoslumptal

Kongruensgenerator utnyttjar rekursion

)mmod()bax(x n1n

1m,0xi

1,0mx

u ii

Där a,b,m och xn är heltal

x0 är startvärde vilket betyder att

Sätt som ger oss att 1m

1mu0 i

ui är nu ett pseudoslumptal från U(0,1)

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

Egenskaper

a) När ett xi återkommer upprepar sig följden periodiskt

Ex: )5mod(3x3x n1n

3x0x

4x2x3x0x

54

3210

1x1x1x 210

Periodlängden beror på startvärdet x0!

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

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

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

Ex: a = 3, b = 7, m = 9

43210

n1n

x1x1x7x0x

)9mod(7x3x

Villkor 2 ej uppfyllt för full periodlängd!

Ex: a = 4, b = 7, m = 9

osv0x5x4x6x2x

1x3x8x7x0x

)9mod(7x4x

98765

43210

n1n

Alla villkor uppfyllda!

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

Ex: IBM:s generator

)12mod(x16807x 31n1n

Periodlängd 231-2 … eftersom 0x0x 10

Implementering av IBM:s generator

Antagligen vanligast med 32 bitars dator.

Problem med 16807 xn !

Krav på mer än 32 bitars ordlängd.

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

Recept! Gör enligt följande

17,12777316807

1231

• Sätt W = 127773 C = 231 - 1 - 16807• 127773 = 2836• Bilda

cWx

)Wmod(x16807x nn1n

Kommer alltid vara 231-1 heltalsdelen

• Om xn+1 < 0 sätt xn+1 + 231-1

• Låt un = xn / (231-1)

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

Generering av slumptal från andra fördelningar

Diskreta fördelningar

Bin(1,p) dvs

p1tsannolikhemed0

ptsannolikhemed1X

Teknik: Generera ett slumptal U från U(0,1)

sätt

p1,0Uom0

1,p1Uom1X

X=0 X=10 1-p 1

)pU(IntX

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

X är ett slumptal från Bin(1,p) eftersom

p1)p1,0U(P)0x(P

p)p1(1)1,p1U(P)1x(P

Bin(n,p).

Om Xi Bin(1,p), i=1,2,…,n samt oberoende så är

)p,n(BinXYn

i

Generera n st Bin(1,p) slumptal enligt ovan och sätt

n

1i in

i )pU(IntXY

så kommer Y vara ett slumptal från Bin(n,p).

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

Alternativ: Tabellmetoden

Ex: Generera slumptal från XBin(5,0.3)

P(X=0) = 0.17P(X=1) = 0.36P(X=2) = 0.31P(X=3) = 0.13P(X=4) = 0.03P(X=5) = 0.002

0.00 0.17 0.830.53X=0

X=4X=3X=2X=1

X=5

1.00

Generera ett slumptal från UU(0,1) och kontrollera vilket intervall dethamnade i.

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

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

SP̂

)P,N(Bin S

SP̂

SP̂

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

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 integralenmed

SP̂ N)P̂1(P̂A SSK2/

)1,0(U

N

1i i )U(gN1

g

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

N

1

2i )g)U(g(

1N1

N1

gVar

Utnyttja CGS, och du kan göra konfidensintervall

gVarg 2/

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å

1

0

U dx)x(gdx)x(f)x(g

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

0 1 2 3 4 5

x <- seq(0, 5, len = 100)

010

020

030

040

0

x^2

+ 3

* x

^3 +

3

Ex: Antag att vi vill bestämma integralen

5

0

32 dx)3x3x(

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

Det enklaste : ) är givetvis nu att integrera och bestämma den.

4167.525x34x3

3x

dx)3x3x(5

0

435

0

32

dx)x(f)x(g U

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

5

0

U32 dx)x(f)3x3x(

väljer vi f(x) så att 5

0

U dx)x(gdx)x(f)x(g)U(gE

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

Således, om vi väljer f(x) = 1/5 så är detta uppfyllt.

En simuleringskörning med 10000 U(0,5) ger

529.7g

541,5187.527.529gVarg 2/

5.7gD

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å?

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

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 UU(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

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

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

)1,0UUdäre1UU)X(F)U(FX x1

och om vi använder oss av inversmetoden, dvs lös ut X

)U1ln(mx

)u1ln(m/Xu1e m/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!

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

0 2 4 6 8

0.0

0.2

0.4

0.6

0.8

1.0

Exponential distribution function

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

Normalfördelningen låter sig å andra sidan inte inverteras så enkelt.

Det finns snabbvarianter… trots det.

Utnyttja CGS

Bilda

12

1i iU

Enligt CGS är nu

)1,0(N~12/12

6U12

1i i

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

Ger dock ”bara” normalfördelade slumptal mellan (-6,6).

Vad är 1-P(-6<X<6)?

2 9.886 10-10, dvs ungefär 2 10-9.

Mer komplicerad variant

Lite teori: Låt N1 och N2 vara oberoende N(0,1).Paret(N1,N2) definierar en punkt i två dimensionerTransformationen från kartesiska koordinater till polära koordinaterges av

N1 = R cos N2 = R sin

och transformationen är 1-1.

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

Alla partiella derivator är kontinuerliga vilket betyder att vi kan skrivasimultana täthetsfunktionen som

1,R21N,N J),r(f)n,n(f

21

Så man kan plocka fram simultana fördelningsfunktionen för R och

rcosrsin

sinrcosn

rn

nrn

J22

11

1

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

)nn(

21

exp2r

),r(f 22

2,R 1

Så…

2r

exp2r 2

r0,20

Vi ser att R och är oberoende sv med

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

)2,0(Udvs,2/1)(f

)2(ExpRdvs],2/rexp[r)r(f 22R

Ok, nu till metoden (Box-Muller)

))2(()2(Exp)NN(Rdär 222

21

2

)U2sin()Ulog2(N

)U2cos()Ulog2(N

22/1

1e2

22/1

1e1

Ger oss två oberoende normalfördelade slumptal

Ok. Visa nu detta! Obs jag skämtar…

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

Polar Marsaglia metoden bygger på samma idé men hoppar överAnvä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 + V2

2 Om R > 1 gå tillbaka till 1.

3. Sätt

1U2V

)1,1(U1U2V

22

11

2/1

22

2/1

11

RRln2

VN

RRln2

VN

N1 och N2 är två oberoende slumptal från N(0,1)

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

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

Alla olika: a b c d e x1 P1 = P(alla olika)ett par: a a b c d x2 P2

två par: a a b b c x3 P3

triss: a a a b c x4 osvkåk: a a a b b x5

fyrtal: a a a a b x6

femtal: a a a a a x7

Typ Antal Sannolikhet

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

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 sannolikheterp1,p2, …,pr.

Låt x1,x2, …,xr vara de observerade antalet utfall på A1,A2,…,Ar.

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

P1,p2, …,pr antas vara okända och man vill testa en viss hypotes rörandedessa sannolikheter, dvs

H0: p1 = p1*, p2 = p2

*, …, pr = pr*

Konstruera en sk testvariabel

r

1i

2

värdeförväntatvärdeförväntatvärdeobserverat

Q

r

1i*i

2*ii

np

npx

Här är n antalet olika utfall som vi kan konstruera, dvs antalet 5-tupler i föregående exempel.

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

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

x <- seq(0.05, 20, len = 299)

dch

isq

(x,

6)

0 5 10 15 20

0.0

0.0

20

.04

0.0

60

.08

0.1

00

.12

0.1

4

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

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.)1r(Q 2

I pokertest testas H0 med

7

1i i

2ii

kpkpx

Arean =

Förkasta H0 om

)6(2

)6(Q 2

)6(2

= signifikansnivån, och den måste man välja själv. Det är vanligt med = 0.05, 0.01, 0.001.

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

Gap-test

Låt och vara två reella tal sådana att 10

Betrakta längden av delföljder Uj, Uj+1, …, Uj+r där Uj+r (, ) men därUj, 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.023U2=0.354U3=0.462U4=0.791U5=0.553U6=0.304U7=0.212U8=0.893U9=0.491

1

0

2

0

1

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

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

pt = 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+ …) =

tt )p1()p1(1

1)p1(p

Testa med Q =

r

1i*i

2*ii

np

npx)1r(Q 2

Och jämför om

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

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.

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

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!