Statistikk og Simulering

Veke 2. Stokastiske hendingar og variablar

Lab. Simulering i Matlab

2.4. Lab. Simulering i Matlab

Målet med den den første timen er å koma i gang med å bruka Matlab til å simulera statistike forsøk og stokastiske variablar. Vha. dei fyrste simuleringa, skal me utforska sannsynsfordelingar.

Øvinga er lagt opp som ei serie enkle oppgåver. Utfordringa er å forstå kva kvar komando tyder. Prøv deg fram, reflekter, og drøft tolkingar med andre studentar. Ikkje nøl med å spørja meg om de står fast.

Mot slutten av øvinga vil vi be om presentasjon av resultatane frå utvalde oppgåver. Sjå til at du noterer og lagrer alt du gjer slik at du raskt kan demonstrera kva du har gjort på nytt.

2.4.1. Nokre grunnleggjande komandoar

Oppgåve 2.14 Prøv fylgjande kommandoar eit par gongar i Matlab, og forsøk å finna ut kva dei gjer.

1.
rand
2.
rand<0.5
3.
rand(2,3)
4.
rand(2,3)<0.5

Bruk gjerne hjelpefunksjonen for å forstå komandoen. Der er to utgåver:

  • help rand
  • doc rand

Oppgåve 2.15 (Diskusjon) Bruk rand-komandoen over til å simulera ti myntkast. Korleis kan du gjera det med éin komando?

Oppgåve 2.16 Prøv fylgjande komandoar:

1  n = 5 
2  x = rand(1,n)<0.5 
3  histogram(x,’BinMethod’,’integers’)
Den siste komandoen lagar eit plot (histogram). Kva informasjon gjev dette histogrammet?

Oppgåve 2.17 (Diskusjon) Kva skjer når me aukar verdien til variabelen n? Dvs. korleis ser histogrammet ut for ulike tal på myntkast, t.d. n = 5, 10, 25, 100, 500?

Oppgåve 2.18 Prøv fylgjande Matlab-kode:

1n=2 
2trials=5 
3for i=1:trials 
4  t = rand(1,n)<0.5; 
5  x(i) = sum(t); 
6end 
7x
Dette er òg ein simulering av ein serie myntkast. Forklar kva eksperiment som er simulert, i.e. korleis ville du ha gjort same eksperiment med fysiske myntar? Variabelen x er ein vektor som oppsummerer resultatet av eksperimentet. Kva er det me har observert i eksperimentet?

Her er det nyttig å innføra funksjonar. I Matlab kan ein skriva sine eigne funksjonar vha. m-filar, dvs. filar med filnamn som endar på .m.

Oppgåve 2.19 Lag ein m-fil, cointrial.m som gjer simuleringa frå problemet over, dvs. innhaldet kan sjå slik ut:

1function [x] = cointrial(n, trials) 
2 
3for i=1:trials 
4  t = rand(1,n)<0.5; 
5  x(i) = sum(t); 
6end
Test funksjonen på komandolina, som fylgjer: 1cointrial(2, 5) Liknar resultatet på tidlegare test?

Oppgåve 2.20 Me kan teikna eit histogram som før:

1  x = cointrial(2, 5) 
2  histogram(x,’BinMethod’,’integers’)
Test koden eit par gongar med fleire forsøk, og med fleire myntar per forsøk. Kva ser du?

Oppgåve 2.21 Prøv fylgjande kode og samanlikn med forrige oppgåve

1  x = cointrial(2, 5) 
2  histogram(x,’BinMethod’,’integers’,’Normalization’,’probability’)
Kva gjer dei to siste argumenta i histogram-lina?

2.4.2. Ein myntsimulering

No tek me for oss eksperimentet der me kastar n myntar, og let den stokastise variabelen X vera talet på myntar som viser kron. Me ynskjer å studera sannsynsfordelinga åt X for ulike verdiar av n. For å gjera det, må me gjenta eksperimentet mange gongar.

Oppgåve 2.22 (Diskusjon) Korleis bruker du cointrial-funksjonen for å gjenta eksperimentet med n = 3 myntar 100 gongar?

Oppgåve 2.23 Bruk kommandoane som me har testa over til å laga eit histogram som viser fordelinga for X over 100 forsøk med n = 3 myntar.

Oppgåve 2.24 Gjenta forrige oppgåve for n = 2, 5, 20, 100, 1000, og samanlikna histogrammet. Korleis påverkar n formen på histogrammet.

Merknad 2 Forrige oppgåve illustrerer eit viktig resultat som er kjend som sentralgrensesatsen. Dén skal me koma tilbake til fleire gongar i løpet av semesteret.

2.4.3. Teoretisk fordeling

Over har me simulert stokastiske forsøk. Me kan òg bruka matlab til å rekna på teoretisk sannsynsfordelign.

Oppgåve 2.25 Sett at me kastar mynt og kron n gongar, og let utfallsrommet vera alle ordna kombinasjonar av mynt/kron. Dvs. at me har 2n utfall. Talet på utfall som gjev mynt k gongar kan me finna i Matlab med funksjonen:

1    nchoosek(n, k) Svar på fylgjande:
1.
Test funksjonen og sjekk hjelpesida. Kva matematisk uttrykk svarer til Matlab-funksjonen nchoosek?
2.
Kva uttrykk kan du bruka i Matlab for å rekna sannsynet for å få k gongar mynt på n kast? Lag ein m-fil med ein funksjon coinprob(n,k) som reknar ut dette sannsynet.

Oppgåve 2.26 Du kan bruka fylgjande kode for å teikna eit histogram over den teoretiske sannsynsfordelinga:

1for k = 0:(n) 
2  prob(k+1) = coinprob(n, k) ; 
3end 
4bar((0:n), prob, ’grouped’)
Svar på fylgjande:
1.
Forklar kva løkka gjer. Kva slags objekt er prob?
2.
Forklar kva bar-funksjonen gjer. Bruk gjerne hjelpesidane.
3.
Bruk koden til å laga eit histogram for sannsynsfordelinga ved 10 myntkast.

Oppgåve 2.27 Bruk cointrial-funksjonen frå tidlegare til å simulera ti myntkast, og lag histogram over den empiriske fordelinga når du køyrer 10, 100, 1000 og 10 000 forsøk. Samanlikna dei empiriske fordelingane med den teoretiske fordelinga i forrige oppgåve. Kva ser du? Liknar den teoretiske fordelinga på den empiriske?