FMS601 lab3 ht08 - Matematikcentrum - Lunds Tekniska Högskola
FMS601 lab3 ht08 - Matematikcentrum - Lunds Tekniska Högskola
FMS601 lab3 ht08 - Matematikcentrum - Lunds Tekniska Högskola
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