04.01.2015 Views

FMS601 lab3 ht08 - Matematikcentrum - Lunds Tekniska Högskola

FMS601 lab3 ht08 - Matematikcentrum - Lunds Tekniska Högskola

FMS601 lab3 ht08 - Matematikcentrum - Lunds Tekniska Högskola

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK<br />

DATORLABORATION 3<br />

MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08<br />

Laboration 3:<br />

Parameterskattning och Fördelningsanpassning<br />

1 Syfte<br />

Syftet med denna datorlaboration är att undersöka<br />

i vilken mån några av de fördelningar som<br />

presenterats i kursen kan användas för att beskriva<br />

olika slumpmässigt varierande fenomen, som<br />

vi kan iaktta i vår omvärld. Vi skall främst presentera<br />

några enkla grafiska metoder som man kan<br />

använda för att undersöka vilka fördelningar som<br />

vårt datamaterial skulle kunna komma från.<br />

Vi skall främst studera normal- och exponentialfördelningen<br />

med hjälp av simuleringar men också<br />

med utgångspunkt i verkliga datamaterial. Analysen<br />

kommer huvudsakligen att vara grafisk, men<br />

vi kommer också att illustrera begreppet punktskattning.<br />

I kommande laborationer och på räkneövningarna<br />

kommer ni att träna olika metoder<br />

att beräkna s. k. parameterskattningar. Exempel<br />

på parametrar som ni kommmit i kontakt med<br />

är p i binomialfördelningen och m i normalfördelningen.<br />

Parameterskattningar behövs i denna laboration<br />

för att kunna anpassa den fördelning vi<br />

ansatt till det givna datamaterialet. I dessa sammanhang<br />

kan MATLAB-funktionerna mean, var<br />

och std ofta vara till nytta.<br />

Förberedelseuppgifter<br />

Du skall ha läst igenom hela denna handledning<br />

och löst förberedelseuppgifterna innan du kommer<br />

till laborationen.<br />

Hemuppgift 1:<br />

Antag att ni erhållit ett datamaterial, stickprovet<br />

x = (x 1 , x 2 , x 3 , ..., x n ) och att ni vill beskriva detta<br />

datamaterial med hjälp av MATLAB. Fyll i nedanstående<br />

tabell:<br />

a<br />

b<br />

c<br />

Aritmetiskt<br />

medelvärde för x<br />

Stickprovsstandardavvikelse<br />

för x<br />

Stickprovsvarians<br />

för x<br />

Beteckning<br />

i boken<br />

Kommando<br />

i MATLAB<br />

Antag att ni har anledning att tro att x kommer<br />

från en normalfördelning. Lämna förslag på<br />

hur man med hjälp av stickprovet x skulle kunna<br />

skatta väntevärdet, m, och standardavvikelsen, s, i<br />

denna fördelning.<br />

Svar:<br />

Hemuppgift 2:<br />

Med hjälp av ett stickprov, t.ex. x, från en stokastisk<br />

variabel, t. ex. X , kan man även skatta fördelningsfunktionen<br />

för X . Datapunkterna, x i sorteras<br />

från minsta till största. Andelen datapunkter<br />

som är mindre eller lika med x i plottas sedan mot<br />

x i . Det blir en växande trappstegsfunktion som<br />

tar ett skutt med höjd 1/n för varje datapunkt.<br />

Denna funktion kallas empirisk fördelningsfunktion<br />

och genom den kan bl. a. kvantilerna för X<br />

skattas.<br />

En exakt beskrivning av hur man gör en empirisk<br />

fördelningsfunktion följer nedan.<br />

Vid ett givet slumpmässigt stickprov<br />

x=(x 1 , x 2 ,. . . ,x n ) gör man på följande sätt:<br />

(a) Först sorteras stickprovet i växande ord-


Datorlaboration 3, Matstat AK för Bygg, HT-08<br />

ning, betecknas x (1) , x (2) ,. . . ,x (n) .<br />

(b) Man skattar fördelningsfunktionen F(x)<br />

med det vi kallar för den empiriska<br />

fördelningsfunktionen F n (x). Den definieras<br />

som:<br />

⎧<br />

⎨<br />

F n (x) =<br />

⎩<br />

0, x < x (1) ,<br />

i/n, x (i) ≤ x < x (i+1) ,<br />

1, x (n) ≤ x<br />

(c) Därefter plottas de n stycken talparen<br />

(x (i) , i n<br />

) så att ett hopp från (i − 1)/n till<br />

i/n med höjd 1/n bildas för varje x (i) .<br />

Rita den empirska fördelningsfunktionen för<br />

stickprovet<br />

x =<br />

(−4.6, −1.6, −1.0, −0.8, 0.4, 0.9, 2.1, 2.7, 4.0, 4, 9)<br />

Vi ska snart se hur detta kan göras med hjälp av<br />

Matlab-kommandon.<br />

Skatta nu med hjälp av er figur medianen för den<br />

fördelning som x kommer ifrån.<br />

Svar:<br />

Vad anger y-axeln i er figur<br />

Svar:<br />

Hemuppgift 3:<br />

Läs om normalfördelningspapper i boken, s 274–<br />

277.<br />

Hemuppgift 4:<br />

Repetera avsnitt 6.3 om centrala gränsvärdessatsen<br />

i kursboken, s. 165–170.<br />

2 Fördelningspapper<br />

2.1 Empirisk fördelningsfunktion och<br />

normalfördelningspapper<br />

I MATLAB kan den empiriska fördelningsfuntionen,<br />

F n (x), ritas med hjälp av funktionen stairs.<br />

Nedanstående kommandorader exemplifierar tekniken<br />

med hjälp av 100 observationer från en stokastisk<br />

variabel X ∈ N (2, 1).<br />

>> A = normrnd(2,1,100,1);<br />

>> B = sort(A);<br />

>> Fn = (1:1:length(B))/length(B);<br />

% övre hörn för F_n<br />

>> stairs(B,Fn);<br />

>> grid on<br />

Istället för att skriva en egen m-fil som samlar<br />

ihop ovanstående kommandon kan man använda<br />

Matlabs inbyggda funktion cdfplot som automatiskt<br />

plockar fram den empiriska fördelningsfunktionen<br />

F n (x). Prova själv. Använd help för att<br />

komma underfund med funktionen. Plotta därefter<br />

den empiriska fördelningsfunktionen för stickprovet<br />

A.<br />

>> help(cdfplot)<br />

>> cdfplot(A);<br />

Uppgift 2.1:<br />

På y-axeln har vi F n (x). Använd denna för att skatta<br />

väntevärdet i den fördelning som vektorn A är<br />

en observation av.<br />

Svar:<br />

Uppgift 2.2:<br />

Eftersom vi känner m och s i det här fallet<br />

(se kommandot som användes för att generera<br />

A) kan vi komplettera figuren med den riktiga<br />

fördelningsfunktionen, F X (x). Gör det och glöm<br />

inte att använda hold on innan du plottar F X (x)<br />

ovanpå F n (x).<br />

Fördelningsfunktionen för en normalfördelning kallas i Matlab för<br />

normcdf(x,m, s)<br />

%generera först en x-vektor<br />

%med lämpliga ändpunkter<br />

>> x=min(B)-0.1:0.01:max(B)+0.1;<br />

>> hold on<br />

>> plot(x,normcdf(x,2,1))<br />

>> hold off<br />

Om vi vet eller misstänker att stickprovet kommer<br />

från en normalfördelning kan vi istället plotta<br />

det ordnade stickprovet i ett normalfördelningspapper.<br />

Skalan på y-axeln i ett normalfördelningspapper<br />

är anpassad så att observationerna kommer<br />

att följa en rät linje om de är normalfördelade.<br />

Om vi får någon kurvatur indikerar detta<br />

alltså att observationerna inte är normalfördelade.<br />

I MATLAB kan man direkt plotta ett stickprov<br />

2


Datorlaboration 3, Matstat AK för Bygg, HT-08<br />

i ett normalfördelningspapper med kommandot<br />

normplot. Använd help för att komma underfund<br />

med funktionen. Plotta därefter stickprovet<br />

A i ett normalfördelningspapper.<br />

>> help normplot<br />

>> normplot(A)<br />

Uppgift 2.3:<br />

Försök lista ut hur man skattar s i en normalfördelningsplott.<br />

Titta gärna i boken på sidan 277.<br />

Verifiera tekniken med er labhandledare. Skatta<br />

nu väntevärdet m och standardavvikelsen s i normalfördelningsplotten.<br />

Stämmer det med det använda<br />

stickprovet<br />

Svar:<br />

2.2 Validering av fördelning – normalfördelningspapper<br />

Under kursens gång har du kommit i kontakt med<br />

ett antal olika fördelningar – modeller för slumpvariation.<br />

Gemensamt för dessa fördelningar är att<br />

de innehåller en eller flera parametrar som påverkar<br />

fördelningens läge och spridning (och ibland<br />

även form).<br />

I praktiska sammanhang arbetar man ofta under<br />

antagande om att de mätningar man gör, observationer<br />

av slumpvariabler, kommer från en viss<br />

fördelning, men man känner inte värdena av de<br />

aktuella parametrarna för fördelningen. Ett naturligt<br />

tillvägagångssätt är då att använda det insamlade<br />

datamaterialet till att skatta dessa parametrar.<br />

Varje skattning som man åstadkommer på detta<br />

vis blir således en funktion av det insamlade datamaterialet.<br />

Stickprovsmedelvärdet, ¯x, och stickprovsvariansen,<br />

s 2 , är exempel på sådana funktioner.<br />

I det här laborationsmomentet skall du i första<br />

hand studera fördelningen hos ett stickprov och<br />

då speciellt i relation till normalfördelningen. För<br />

att få lite rutin på hur ett stickprov ser ut när det<br />

inte kommer från en normalfördelning, ska du<br />

plotta stickprov som kommer från andra fördelningar.<br />

Använd MATLABs inbyggda slumptalsfunktioner,<br />

normrnd, rand samt exprnd, för att generera<br />

slumptal från normal-, rektangel- och exponentialfördelningar.<br />

Uppgiften kan du lösa genom att<br />

simulera, till exempel, 100 slumptal från respektive<br />

fördelning.<br />

Skriv gärna era kommandon först i en m.fil, för smidig<br />

återanvändning<br />

>> N = normrnd(2,1,100,1);<br />

% slumptal från en normalfördelning<br />

>> R = 4*rand(100,1);<br />

% rektangelfördelade på (0, 4)<br />

>> E = exprnd(2,100,1);<br />

% Exponentialfördelade slumptal<br />

Uppgift 2.4:<br />

Undersök hur den empiriska fördelningsfunktionen,<br />

F n (x), ser ut för ett normalfördelat, rektangelfördelat<br />

respektive exponentialfördelat stickprov.<br />

För att kunna jämföra de tre fördelningarna är det<br />

bra att plotta dem med subplot-funktionen. Välj<br />

t. ex.<br />

>> figure<br />

subplot (311) för N,<br />

subplot (312) för R,<br />

subplot (313) för E<br />

% Exempel för normalfördelningen %<br />

>> subplot(311)<br />

>> cdfplot(N);<br />

>> grid on<br />

>> title(’Empirisk fördelningsfunktion<br />

från normalfördelning’)<br />

Upprepa för N, R och E så att ni får alla tre fördelningarna<br />

i var sin subplot. Jämför de tre plottarna.<br />

Svar:<br />

Uppgift 2.5:<br />

Avgör därefter hur N, R, och E ser ut i ett normalfördelningspapper.<br />

Använd först kommandot<br />

(figure) så att ni får fram en ny figur. Gör sedan<br />

en ny figur med tre subplottar i samma ordning<br />

som de tidigare med kommandot (normplot).<br />

Märk på något sätt ut vilken subplot som hänger<br />

ihop med vilken fördelning (T. ex. med title).<br />

Beskriv resultatet:<br />

Svar:<br />

3


Datorlaboration 3, Matstat AK för Bygg, HT-08<br />

Uppgift 2.6:<br />

Skatta väntevärde och varians för var och en av de<br />

tre fördelningarna med hjälp av MATLAB och de<br />

simulerade slumptalen från respektive fördelningar<br />

i N, R, samt E. Använd ¯x för att skatta väntevärdet<br />

och s 2 för att skatta variansen, dvs kommandona<br />

mean och var i MATLAB . Jämför era<br />

parameterskattningar med respektive fördelnings<br />

riktiga parametrar E(·) och V(·). Dessa kan erhållas<br />

genom att studera era kommandon när ni<br />

simulerade stickproven. Använd formelsamlingen<br />

och kurslitteraturen för att identifiera parametrarna.<br />

Hur stämmer era skattningar med de riktiga parametrarna<br />

Svar:<br />

Uppgift 2.7:<br />

Nu skall ni studera fördelningen för medelvärdet<br />

i de tre fördelningarna. Från varje fördelning kan<br />

man få 100 medelvärden genom att i stället simulera<br />

100 stickprov med till exempel 1000 observationer<br />

och lagra slumptalen i en 1000 × 100<br />

matris. När man i MATLAB bildar medelvärdet<br />

av en matris fås en vektor med medelvärdet för<br />

respektive kolonn. Studera först vad som händer<br />

när man tar medelvärdet av en 3x2-matris:<br />

>> Y=[3 30;5 25; 4 20]<br />

>> mean(Y)<br />

>> NN = normrnd(2,1,1000,100);<br />

% slumptal från en normalfördelning<br />

>> RR = 4*rand(1000,100);<br />

% rektangelfördelade på (0, 4)<br />

>> EE = exprnd(2,1000,100);<br />

% Exponentialfördelade slumptal<br />

Beräkna medelvärdet av respektive kolonn i matriserna,<br />

NN , RR samt EE. Du får alltså 100 observationer<br />

av medelvärden från respektive fördelning.<br />

Plotta dessa i varsitt normalfördelningspapper.<br />

%Exempel för normalfördelningen<br />

>> DN = mean(NN);<br />

>> figure<br />

>> subplot(311)<br />

>> normplot(DN);<br />

>> title(’Medelvärden av 1000 stickprov<br />

från en normalfördelning’)<br />

Komplettera med motsvarande figurer för de andra<br />

fördelningarna och jämför även med den tidigare<br />

bilden med normalfördelningsplottar för de<br />

tre fördelningarna.<br />

Uppgift 2.8:<br />

Vilken fördelning skall du approximativt få enligt<br />

teorin kring Centrala GränsvärdesSatsen (CGS) i<br />

vart och ett av de tre fallen Stämmer resultatet<br />

med CGS<br />

Svar:<br />

Uppgift 2.9:<br />

Vi vet att om X 1 , ..., X n är oberoende stokastiska<br />

variabler med E(X i ) = m och V (X i ) = s 2 för<br />

i = 1, ..., n så är<br />

∑ n<br />

i=1<br />

E(<br />

X i<br />

) = m<br />

n<br />

och<br />

∑ n<br />

i=1<br />

V (<br />

X i<br />

) = s2<br />

n n .<br />

Beräkna med hjälp av dessa uttryck väntevärde<br />

och varians hos var och en av de tre stokastiska variabler<br />

som mean(NN), mean(RR) och mean(EE)<br />

är observationer av. Skatta sedan, med hjälp av<br />

MATLAB-kommandona mean och var, väntevärde<br />

och varians hos dessa tre stokastiska variabler.<br />

Hur stämmer skattningarna med de teoretiska<br />

värdena<br />

Svar:<br />

3 Återanknytning till Lab 1 (* frivillig<br />

uppgift)<br />

3.1 Jordbävningar<br />

I laboration 1 studerade ni datamaterial över tidsavståndet<br />

mellan de stora jordbävningarna under<br />

1900-talet. Om det är så att dessa jordbävningar<br />

förekommer slumpmässigt i tiden så kommer<br />

tidsavståndet mellan två efterföljande händelser<br />

att vara exponentialfördelad, s.v. ∈ Exp(l). Datamaterialet<br />

kommer ni åt med hjälp av kommandot<br />

load(quakeper).<br />

4


Datorlaboration 3, Matstat AK för Bygg, HT-08<br />

Uppgift 3.1:<br />

Undersök ifall exponetialfördelningen eller normalfördelningen<br />

är en vettig modell för detta datamaterial.<br />

Plocka fram följande tre figurer med<br />

hjälp av Matlab.<br />

Svar:<br />

subplot (311) för Normerat histogram,<br />

subplot (312) för Empirisk fördelningsfunktion,<br />

subplot (313) för Koll av<br />

normalfördelningsantagandet<br />

Undersök nu om man kan anpassa en exponetialfördelning<br />

till datamaterialet.<br />

Uppgift 3.2:<br />

Hur skattar man väntevärdet E[x] i en exponentialfördelning.<br />

>> figure % Quakeperiod %<br />

>> subplot(211)<br />

>> hist2(quakeper,20);<br />

>> title(’Quakeperiod, normerat histogram’)<br />

>> grid on, hold on<br />

>> help(exppdf)<br />

>> ------- % Fixa en tidsaxel %<br />

>> ------- % Plotta täthetssfunktionen %<br />

>> subplot(212)<br />

>> cdfplot(quakeper);<br />

>> title(’Empirisk fördelningsfunktion’)<br />

>> grid on, hold on<br />

>> help(expcdf)<br />

>> ------- % Fixa en tidsaxel %<br />

>> ------- % Plotta Fördelningsfunktionen %<br />

Uppgift 3.4:<br />

Vad får ni för skattning av 10 %-kvantilen<br />

Svar:<br />

Svar:<br />

Uppgift 3.3:<br />

Hur använder man denna skattning för skatta värdet<br />

på parametern i exponentialfördelningen Vad<br />

fick ni för värde<br />

Svar:<br />

Plocka nu fram en ny figur och plotta en exponetialfördelning<br />

där ni som parametervärde använder<br />

er skattning. Täthetsfunktionen för en exponetialfördelad<br />

slumpvariabel heter i Matlab: exppdf<br />

och fördelningsfunktionen kallas för expcdf.<br />

4 Avslutning<br />

Vi har i denna datorlaboration sett exempel på<br />

hur man med en kombination av teori och empiri<br />

kan hitta fördelningar som mer eller mindre<br />

väl beskriver den slumpmässiga variationen hos<br />

verkliga händelser. Kan vi hitta en sannolikhetsfördelning<br />

vars teoretiska egenskaper är väl kända<br />

och som dessutom passar väl till de observationer<br />

vi gjort i verkligheten, så ger detta oss en möjlighet<br />

att beräkna olika sannolikheter och på mera<br />

objektiv grund bedöma risker, med mera.<br />

5


Datorlaboration 3, Matstat AK för Bygg, HT-08<br />

Användbara Matlab-kommandon<br />

help kommando ger en hjälptext till kommandot kommando<br />

load filnamn hämtar alla variabler från filen filnamn.mat och laddar in dem i Matlab<br />

whos<br />

ger en detaljerad lista över de variabler som finns definierade<br />

hist(x)<br />

ritar ett 10-intervalls histogram för elementen i vektorn x<br />

mean(x)<br />

beräknar aritmetiska medelvärdet av elementen i vektorn x<br />

mean(A)<br />

om A är en m × n–matris fås en 1 × n–matris innehållande aritmetiska<br />

medelvärdena för varje kolonn i A<br />

median(x)<br />

beräknar medianen av elementen i vektorn x<br />

std(x)<br />

beräknar standardavvikelsen av elementen i vektorn x<br />

var(x)<br />

beräknar variansen av elementen i vektorn x<br />

plot(x,y,str) plottar y mot x. Använder färg och form enligt strängen str<br />

plot(y,str) plottar de ordnade talparen (j, y j ). Använder färg och form enligt strängen str<br />

subplot(m,n,p) delar grafikfönstret i m × n delfönster, aktuellt fönster blir fönster nr p,<br />

delfönstren numreras från vänster till höger, uppifrån och ner<br />

title(text) skriver ut strängen text överst i grafikfönstret<br />

hold on<br />

håller kvar aktuellt grafikfönster så att man kan<br />

rita flera figurer i samma fönster<br />

hold off<br />

avlutar kvarhållningen av grafikfönster<br />

axis([v1 v2 v3 v4]) sätter axlarnas skalor så att<br />

x min = v1, x max = v2, y min = v3 och y max = v4<br />

sort(x)<br />

ger en vektor med elementen i vektorn x sorterade i växande ordning<br />

rand(m,n) ger en m × n-matris med slumptal från en rektangelfördelning på (0,1)<br />

normrnd(m,s,i,j) ger en i × j-matris med slumptal från en normalfördelning<br />

med väntevärde m och standardavvikelse s<br />

exprnd(m,i,j) ger en i × j-matris med slumptal från exponentialfördelning med väntevärde m<br />

i:j:k<br />

ger en följd av värden från i till j i steg om j, dvs i,i+j,i+2j,...k<br />

figure<br />

öppnar ett nytt grafikfönster<br />

stairs(z, x)<br />

ritar trappstegsdiagram över värdena i x i positionerna givna av vektorn z<br />

grid on<br />

ritar ut ett rutnät i grafikfönstret<br />

grid off<br />

tar bort rutnätet från grafikfönstret<br />

cdfplot(x)<br />

plottar den empiriska fördelningsfunktionen mot värdena i x<br />

normplot(x) plottar data i x i ett normalfördelningspapper<br />

expcdf(x,m) ger fördelningsfunktionen för en exponentialfördelad stokastisk variablel<br />

med väntevärde m, beräknad i punkterna i x<br />

exppdf(x,m) ger täthetsfunktionen för en exponentialfördelad stokastisk variablel<br />

med väntevärde m, beräknad i punkterna i x<br />

6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!