LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08 Laboration 2: Om väntevärden och fördelningar 1 Syfte I denna laboration skall vi försöka hitta begripliga tolkningar av begreppen väntevärde och varians, dels utifrån de teoretiska fördelningarna och dels utifrån datorsimuleringar. Vi skall också titta på några standardfördelningar och bland dessa välja en lämplig fördelning som passar till data. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) 2.1 Förberedelseuppgifter (a) Hur lyder definitionen av väntevärde? (b) Hur lyder definitionen av varians? (c) Hur kan variansen beräknas på annat sätt än direkt genom definitionen? (Det finns en omskrivning som ofta är mer användbar i praktiska sammanhang.) (d) Om E(X ) = 2 och V(X ) = 1/3, vad får då Y = (X 1)/3 för väntevärde respektive varians? (e) Om X är rektangelfördelad på intervallet (1, 3), vad har då X för väntevärde och varians? Vilken fördelning får Y = (X 1)/3? Vad har en sådan fördelning för väntevärde och varians? Hur stämmer detta överens med föregående uppgift? 2.2 Angående grafisk presentation Först en liten kommentar angående stolpdiagram och histogram. Då vi arbetar med diskreta stokastiska variabler och vill plotta resultat från studier av dessa använder vi stolpdiagram, just för att understryka variablernas diskreta karaktär. I ett stolpdiagram är det höjden av varje stolpe som representerar den relativa frekvensen (se Fig. 1). Vid arbete med kontinuerliga stokastiska variabler är det mera ändamålsenligt att indela materialet i klasser och rita ett histogram. I ett histogram är det arean av varje stapel som representerar den relativa frekvensen (se Fig. 2). På detta sätt får histogrammet en viktig egenskap gemensam med täthetsfunktionen nämligen att den sammanlagda arean under grafen är lika med ett. (Se i övrigt avsnittet om beskrivande statistik i kursboken.) Slumptalsgeneratorn rand i MATLAB genererar slumptal från en rektangelfördelning över intervallet från noll till ett, dvs observationer av en stokastisk variabel X R(0, 1). Med tex kommmandot >> x=rand(1,100) genereras 100 rektangelfördelade slumptal i intervallet [0, 1) och läggs i en 1 100-matris. Uppgift 2.1: Är den stokastiska variabeln X som rand ger diskret eller kontinuerlig? Uppgift 2.2: Ladda ner funktionen hist2 från kursens hemsida. Funktionen ritar ett normerat histogram. Vilken viktiga egenskap ur ett statistiskt perspektiv har ett normerat histogram?
Labortion 2, Matstat AK för Bygg, HT-08 0.4 0.4 0.3 0.3 0.2 0.2 0.1 0.1 0 0 1 2 3 4 5 6 0 0 1 2 3 4 5 6 Figur 1: Stolpdiagram Figur 2: Histogram Uppgift 2.3: Börja med att rita en bild av täthetsfunktionen för X. >> plot([0 0 1 1],[0 1 1 0]) >> axis([-0.5 1.5 0 1.5]) >> title([ Täthetsfunktion för... rektangelfördelning på (0,1) ]) >> xlabel( x ) >> ylabel( f(x) ) Generera sedan, till exempel, hundra slumptal från denna fördelning och plotta histogrammet över de relativa frekvenserna för detta stickprov i samma figur som täthetsfunktionen. Avsluta kommandot med semikolon för att hindra utskrift av de 100 slumptalen på skärmen. skall du plotta de successiva medelvärdena, mx = cumsum(x)./(1:1000), för de 1, 2, 3,..., 1000 första observationerna tillsammans med den linje som anger vad medelvärdena bör konvergera mot. Funktionen cumsum ger en vektor där element nummer j är summan av de j första elementen i inparametern. Notationen./ betyder elementvis division och (1:1000) är en vektor med talen 1 till och med 1000. >> mx = cumsum(x)./(1:1000); >> plot(mx) >> u =? % byt? mot väntevärdet >> line([0 1000],[u u]) Uppgift 2.4: >> hold on >> X = rand(1,100); >> hist2(x); >> hold off Allt detta och övriga kommandon i laborationen kan med fördel utföras i en så kallad kommandofil i MATLAB. Se Appendix A. Eftersom det i ett histogram enligt definitionen i kursboken (och avsnitt 2.2 ovan) är arean av varje stapel som representerar den relativa frekvensen, använder vi hist2 istället för den i MATLAB inbyggda hist som använder absoluta frekvenser till staplarnas höjd. 2.3 Väntevärde Gör om simuleringarna ovan men med 1000 observationer från X R(0, 1) istället och rita om histogrammet tillsammans med täthetsfunktionen. Öppna sedan ett nytt grafikfönster med kommandot figure. I detta fönster Använd dina figurer och beräkningar för att förklara vad väntevärdet för den stokastiska variabeln X är. 2.4 Varians Vi skall nu titta på variansen för X. Eftersom V(X ) är definierad som E((X m) 2 ) där m = E(X ) skall vi bilda slumptal från Y = (X m) 2. Detta görs genom kommandot >> Y = (X-mu).^2 % byt ut mu mot E(X) Plotta sedan, i ett annat fönster och på samma sätt som för väntevärdet, de successiva medelvärdena my = cumsum(y)./(1:1000) tillsammans med en linje som anger vad de borde konvergera mot. 2
Laboration 2, Matstat AK för Bygg, HT-08 Uppgift 2.5: Använd dina figurer och beräkningar för att förklara vad variansen för den stokastiska variabeln X är. Vi skall nu studera R( 1, 1)-fördelningen på samma sätt och sedan jämföra de två. Generera alltså, i en vektor X1, 1000 slumptal från denna fördelning. Ett rektangelfördelat slumptal i intervallet [a, b) fås med a+(b-a)*rand (tänk efter att det är rimligt!). Jämför också med förberedelseuppgift (e). Plotta sedan de successiva medelvärdena på sätt som ovan. Beräkna också Y1 = (X 1 m 1 ) 2, där m 1 = E(X 1 ), och plotta de successiva medelvärdena. Uppgift 2.6: Ge en tolkning av väntevärde och varians för en R( 1, 1)-variabel. Hur förhåller sig dessa till väntevärde och varians för en R(0, 1)-variabel? 3 Simulering av stokastiska variabler, några statistiska standardfördelningar I den här delen av laborationen kommer du att simulera slumptal från olika fördelningarna, rita histogram över slumptalen och även jämföra simulerade värden med motsvarande täthetsfunktioner. 3.1 Rektangelfördelning (likformig fördelning) Fördelningen, som är beskriven i kursboken, är användbar för att till exempel beskriva avrundningsfel vid mätningar. Den är också grundfördelningen vid simulering av andra fördelningar och vid Monte Carlo-metoder. Funktionen rand genererar, som vi har sett, rektangelfördelade slumptal i intervallet [0, 1). Vi såg också ovan att ett rektangelfördelat slumptal i intervallet [a, b) fås med a+(b-a)*rand. Uppgift 3.1: Generera 100 slumptal från en rektangelfördelning med a = 2 och b = 10. Plotta data i ett histogram med hjälp av hist2. Verkar det stämma med en rektangelfördelning? Öka antalet slumptal till 1000, 10 000 och 100 000 och gör respektive normerade histogram. Vad händer? 3.2 Normalfördelningen Täthetsfunktionen för en normalfördelad stokastisk variabel ges av f X (x) = 1 s 2p e(x m)2 /2s 2 för < x <. Den beror alltså på två parametrar m och s där m är väntevärdet i fördelningen och s är standardavvikelsen. Normalfördelningen är en av de fördelningar som används mest inom sannolikhets- och statistikteorin. Funktionen normrnd i MATLAB genererar normalfördelade slumptal. Kommandot >> y = normrnd(3,1,p,q); genererar slumptal från en normalfördelning med väntevärdet 3 och standardavvikelsen 1 och placerar dem i matrisen y med dimensionen p q. Uppgift 3.2: Generera 1000 slumptal från en normalfördelning med m = 2 och s = 0.5. Plotta data i ett histogram med hjälp av hist2. Uppgift 3.3: Generera 1000 slumptal från en normalfördelning med m = 2 och s = 2. Plotta data i ett histogram med hjälp av hist2. Hur påverkar s- värdet dina histogram? 3
Labortion 2, Matstat AK för Bygg, HT-08 Normalfördelningens täthetsfunktion, f X (x) fås genom normpdf. Rita ut normalfördelningar för olika värden på m och s och se hur fördelningarna påverkas: >> x = 0:0.1:10; >> plot(x,normpdf(x,2,0.5)) >> hold on >> plot(x,normpdf(x,7,0.5), r ) >> plot(x,normpdf(x,5,2), g ) >> plot(x,normpdf(x,5,0.1), y ) >> hold off Fördelningsfunktionen, F X (x), för en normalfördelad stokastisk variabel fås med kommandot normcdf. Uppgift 3.4: Rita ut samma normalfördelningar som ovan men nu med hjälp av fördelningsfunktioner. Lägg märke till hur olika värden på m och s påverkar fördelningsfunktionerna: >> x = 0:0.1:10; >> plot(x,normcdf(x,2,0.5)) >> hold on >> plot(x,normcdf(x,7,0.5), r ) >> plot(x,normcdf(x,5,2), g ) >> plot(x,normcdf(x,5,0.1), y ) >> hold off 3.3 Weibullfördelning* (frivillig uppgift) Weibullfördelningen är mycket användbar för att beskriva variationer i hållfasthetsdata, till exempel sträck-, brott-, och utmattningsgränser. Fördelningsfunktionen ges av F(x) = 1 e (x/a)c om x 0 och där a och c är konstanter som kan ges olika värden. Slumptal från Weibullfördelningen med parametrar a och c läggs i en p q matris med hjälp av MATLAB-kommandot wblrnd((1/a)^c,c,p,q). Uppgift 3.5: Generera 1000 slumptal från en Weibullfördelning med a = 0.5 och c = 0.7 och lägg dem i en vektor. Sätt alltså p = 1000 och q = 1 i wblrnd-kommandot. Plotta data i ett histogram med hjälp av hist2. Uppgift 3.6: Bestäm täthetsfunktionen för Weibullfördelningen genom att derivera fördelningsfunktionen F(x) = 1 e (x/a)c med a = 0.5 och c = 0.7. Täthetsfunktionen blir f (x) = Du kan rita ut täthetsfunktionen med kommandona >> x = 0:0.1:9; >> plot(x,fx, - ) där fx ersätts med det uttryck som du just beräknat. Jämför täthetsfunktionen med histogrammet i föregående uppgift. Du kan plotta histogrammet i samma figur om du har skrivit hold on. Glöm inte att skriva hold off innan du fortsätter att rita figurer. Uppgift 3.7: Generera 1000 slumptal från en Weibullfördelning med a = 2 och c = 1. Plotta data i ett histogram med hjälp av hist2. Med konstanten c = 1 får man som specialfall exponentialfördelningen. Rita upp dess täthetsfunktion. 4 Avslutning När man som ingenjör utför sina beräkningar, räcker det inte att de är formellt korrekta. Resultaten måste också sättas i relation till den omgivande verkligheten, tolkas i ett sammanhang. Väntevärde och varians är viktiga begrepp 4
Laboration 2, Matstat AK för Bygg, HT-08 i sannolikhets- och statistikteorin, men de är abstraktioner som i varje enskilt fall måste tolkas för att få en mening. Den mekaniska analogin vid sannolikhets- eller täthetsfunktioner samt frekvenstolkningen är två möjliga vägar som illustrerats i denna laboration. A m-filer i MATLAB MATLAB är som bekant ett interaktivt programmeringsspråk. Liksom andra programmeringsspråk kan även MATLAB utökas med egendefinierade funktioner som man skriver in i så kallade m-filer. MATLAB har två sorters m-filer, dels funktionsfiler och dels kommandofiler. m-filerna är vanliga textfiler som har filnamnstillägget.m. De kan skapas i vilken texteditor som helst men man kan med fördel använda den som finns inbyggd i (åtminstone PC-versionen av) MATLAB genom att välja menyalternativet File New M-file. A.1 Kommandofiler Om man skall utföra en längre sekvens beräkningar för att till exempel generera en figur händer det ofta att man mot slutet gör något fel så att man får skriva in den långa sekvensen med kommandon på nytt. Det kan då vara praktiskt att, i stället för att skriva kommandona på kommandoraden i MATLAB, lägga dem i en textfil som man kan gå in och ändra i om något blivit fel. Ett exempel kan se ut så här minfil.m: X=rand(1,100); hist2(x); Ger vi sen kommandot >> minfil i MATLAB beräknar MATLAB 100 rektangelfördelade slumptal på [0, 1) och ritar ett histogram över de relativa frekvenserna. De variabler som används i en kommandofil är globala, dvs samma variabler som när du arbetar interaktivt. A.2 Funktioner Antag att vill göra en funktion som skall heta funk. Då skriver man in den i en textfil som skall heta funk.m. Om funktionen skall ta en inparameter och beräkna ett resultat kan den se ut så här: function y = funk(x) % Y = funk(x) beräknar kvadratsumman % av elementen i X t = x.^2; y = sum(t); Från MATLAB kan den anropas så här: >> v = [1 3 6]; >> kvadratsumma = funk(v) kvadratsumma = 46 Variabler som definieras i funktioner är lokala. Till exempel är variabeln t i funk bara tillgänglig i funktionen. A.3 Hur hittar MATLAB min m-fil? MATLAB letar naturligtvis inte igenom hela datorn efter m-filer utan först i aktuell katalog och sedan, om filen inte finns där, i den lista av kataloger som visas med kommandot matlabpath. Aktuell katalog ändras med kommandot cd. Om du lägger dina m-filer i en katalog som heter h:\lab2 så ändrar du aktuell katalog i MATLAB med kommandot cd h:\lab2. Vill man lägga till och ta bort sökvägar i matlabpath (inte nödvändigt för laborationerna) kan man använda kommandona addpath respektive rmpath. I Windowsversionen av MATLAB finns dessutom pathtool om man föredrar att peka och klicka. 5
Labortion 2, Matstat AK för Bygg, HT-08 Användbara Matlab-kommandon help kommando ger en hjälptext till kommandot kommando load filnamn hämtar alla variabler från filen filnamn.mat och laddar in dem i Matlab whos ger en detaljerad lista över de variabler som finns definierade hist(x) ritar ett 10-intervalls histogram för elementen i vektorn x plot(x,y,str) plottar y mot x. Använder färg och form enligt strängen str plot(y,str) plottar de ordnade talparen (j, y j ). Använder färg och form enligt strängen str line(x,y) ritar linjen representerad av vektorerna x och y title(text) skriver ut strängen text överst i grafikfönstret xlabel(text) skriver ut strängen text under x-axeln ylabel(text) skriver ut strängen text utmed y-axeln axis([v1 v2 v3 v4]) sätter axlarnas skalor så att x min = v1, x max = v2, y min = v3 och y max = v4 hold on håller kvar aktuellt grafikfönster så att man kan rita flera figurer i samma fönster hold off avlutar kvarhållningen av grafikfönster figure öppnar ett nytt grafikfönster rand(i,j) ger en i j-matris med slumptal från en rektangelfördelning på (0,1) normrnd(m,σ,i,j) ger en i j-matris med slumptal från en normalfördelning med väntevärde m och standardavvikelse σ i:j:k ger en följd av värden från i till k i steg om j, dvs i,i+j,i+2j,...,k cumsum(x) ger en vektor där element j är summan av de j första elementen i x normpdf(x,m,σ) ger täthetsfunktionen för en normalfördelning med väntevärde m och standardavvikelse σ, beräknad i värdena i x normcdf(x,m,σ) ger fördelningsfunktionen för en normalfördelning med väntevärde m och standardavvikelse σ, beräknad i värdena i x 6