LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK DATORLABORATION 4 MATEMATISK STATISTIK, AK FÖR I, FMS 120, HT-00 Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik Stora talens lag Centrala gränsvärdessatsen Punktskattningar 1 Förberedelseuppgifter Som förberedelse till laborationen bör du läsa igenom Kapitel 7 och 8 (Blom: Bok A) och 20 (Blom: Bok B) samt hela laborationshandledningen. Repetera också appendix till laboration 3. Till laborationens start har du med dig lösningar till uppgifterna (a) (e): (a) Redogör för Stora talens lag. (b) Redogör för Centrala gränsvärdessatsen. (c) Låt X vara antal ögon vid ett tärningskast med p X (k) = 1/6 för k = 1, 2, 3, 4, 5, 6. Vilken fördelning har summan av n oberoende kast ungefär då n är stort? (d) Vi har observationer x 1, x 2,..., x n som är oberoende och Exp(a)-fördelade. Härled ML- och MKskattningarna av a. (e) Hur skattar man väntevärde och standardavvikelse med hjälp av stickprovet x 1,..., x n från en normalfördelning. 2 Stora talens lag Stora talens lag säger att om X n är medelvärdet av n likafördelade oberoende stokastiska variabler X 1,..., X n med ändlig varians, så gäller att P( X n m X > ) 0 då n för varje > 0, vilket också kan uttryckas som att X n m X i sannolikhet. Enklare uttryckt så kommer medelvärdet av n variabler att avvika allt mindre från väntevärdet då n växer. Ett sätt att illustrera detta är att kasta en tärning många gånger och se att de successiva medelvärdena konvergerar mot väntevärdet. Simulera först 100 tärningskast: >> help unidrnd >> X=unidrnd(6,100,1) Ett sätt att räkna ut de successiva medelvärdena är följande: >> Xbar=cumsum(X)./(1:100)
Funktionen cumsum ger en vektor där element i är summan av de i första elementen i inparametern, i vårt fall X. Notationen./ betyder elementvis division och (1:100) är en kolonnvektor med talen 1 t.o.m. 100. Tänk ut att Xbar innehåller de successiva medelvärdena. Plotta dem. >> plot(1:100,xbar) Gör om alltihop med fler kast, t.ex. 1000 st. Ser allt ut som du väntat dig? 3 Centrala gränsvärdessatsen Börja med att hitta på en diskret sannolikhetsfunktion med några möjliga utfall, t.ex. den likformiga fördelningen över 1 t.o.m. 6, dvs ett tärningskast. Mata sedan in denna sannolikhetsfunktion i form av en vektor. >> p=[0 1 1 1 1 1 1]/6 Nollan finns där för att det blir lättare att hålla reda på saker och ting om det första elementet i vektorn är sannolikheten för att utfallet är noll. Välj gärna någon annan sannolikhetsfunktion än ovanstående förslag. Rita upp sannolikhetsfunktionen med kommandot bar. >> bar(0:length(p)-1,p) Funktionen length ger längden av en vektor. Som du vet beräknas sannolikhetsfunktionen för en summa av två oberoende diskreta stokastiska variabler genom en diskret faltning, se formel (5.6 ) i Bloms bok. I MATLAB finns en funktion, conv, som utför just en sådan faltning (faltning heter convolution på engelska). >> p2=conv(p,p) >> p4=conv(p2,p2) >> p8=conv(p4,p4) Här blir p8 alltså sannolikhetsfunktionen för en summa av åtta stycken oberoende stokastiska variabler med sannolikhetsfunktionen p. Rita upp dessa nya sannolikhetsfunktioner. När börjar det likna en normalfördelning? Räkna nu ut väntevärde och standardavvikelse för en stokastisk variabel med sannolikhetsfunktionen p. >> m=sum((0:6).*p) >> sigma=sqrt(sum(((0:6)-m).^2.*p)) Funktionen sum ger summan av elementen i en vektor, notationen.^2 betyder elementvis kvadrering av en vektor och sqrt är kvadratroten. Vi kan nu jämföra sannolikhetsfunktionen p4 med den approximativa normalfördelning N(nm, n) (där n = 4) som vi får ur Centrala gränsvärdessatsen. >> bar(0:length(p4)-1,p4) >> hold on >> xx=0:0.5:30; >> plot(xx,normpdf(xx,4*m,sqrt(4)*sigma)) >> hold off Kommandot hold on gör att det man ritat inte tas bort vid nästa plottning. Approximeras p4 väl av normalfördelningen? Pröva också vad som händer om p är en mycket sned fördelning, t.ex. 2
>> p=[0 1 0 0 0 0 5]/6 Hur många komponenter behövs det nu i summan för att fördelningen väl ska kunna approximeras med en normalfördelning? 4 Punktskattningar 4.1 ML- och MK-skattning Vi skall i den här uppgiften titta lite närmare på två av de vanligaste skattningsmetoderna i statistiken, nämligen ML- och MK-skattning. Vi skall bl.a. se att ML-skattning är ett maximeringsproblem medan MK-skattning kan ses som ett minimeringsproblem. I filen matdata.dat har vi 150 mätningar av livslängden (enhet: timmar) av en viss komponent i en bil. Livslängden hos varje komponent antages vara oberoende av alla andra komponenter. Ladda in data och gör en första undersökning av livslängderna. >> load matdata.dat >> plot(matdata, * ) >> hist(matdata) Vi är intresserade av att skatta medellivslängden för komponenten. En variant att göra detta på är att göra en ML-skattning av a. För att kunna göra en ML-skattning måste vi ha en uppfattning om vilken fördelning data har. Från liknande experiment som gjorts tidigare har det visat sig att livslängden hos en viss komponent är approximativt exponentialfördelad. Alltså, vi antar att livslängden är exponentialfördelad och ställer upp log-likelihoodfunktionen. Hur ser den ut? Svar: l(a) = ln L(a) =... Det finns en specialskriven m-fil, ML_exp, som beräknar l(a). Studera m-filens MATLAB-kommandon och förvissa dig om att den verkligen ger rätt funktion! (type ML_exp) Rita upp l(a), då 30 a 150. Hur ser funktionen ut och vilket värde på a motsvarar ML-skattningen? (Du kan använda kommandot zoom för att förstora delar av figuren.) >> a=[30:.5:150]; >> l=ml_exp(a,matdata); >> plot(a,l) >> grid Nu går vi över och tittar på hur en MK-skattning av medellivslängden ser ut. Fördelen med MK jämfört med ML är att fördelningen för data ej behöver vara känd. Börja nu med att ställa upp förlustfunktionen, Q(a). Svar: Q(a) =... Programmet MK_exp är specialskrivet för att beräkna Q(a). Titta på MATLAB-kommandona för att kolla att det stämmer! Rita ut Q(a). Vilket värde på a motsvarar MK-skattningen? >> Q=MK_exp(a,matdata); >> plot(a,q) >> grid 3
Både ML- och MK-skattningen av a är enkel att beräkna, se förberedelseuppgift (d). Beräkna a ML och a MK och jämför med dina figurer. Här blev ML- och MK-skattningarna lika, det är inte alltid fallet. 4.2 Skattningen a är en stokastisk variabel! Om vi skulle ta 150 nya mätningar av livslängden hos ovanstående komponenter (dvs ett nytt stickprov) så skulle skattningen av medelvärdet med säkerhet bli annorlunda, dvs skattningen kan ses som en stokastisk variabel. För att illustrera detta tänker vi oss att vi tar 1000 stickprov med 150 mätningar i varje stickprov. Eftersom vi inte har 1000 riktiga stickprov så får vi nöja oss med att simulera data. Genom att utnyttja funktionen exprnd kan vi enkelt generera exponentialfördelade slumptal. Vi antar att det sanna medelvärdet (det värde som i praktiken bara av vår Herre är känt) är 100, dvs a = 100 >> help exprnd >> a=100; >> x=exprnd(a,150,1000); Kolonn nummer i i matrisen x motsvarar stickprov i. Nu skall vi skatta a för varje stickprov. Det kan göras enkelt enligt >> a_est=mean(x); Element i i vektorn a_est innehåller skattningen av medelvärdet för stickprov i. Plotta a_est! Hur ser det ut? Vilken ungefärlig fördelning har skattningen av medelvärdet? Använd dig av kommandona hist och normplot och dina nyförvärvade kunskaper om Stora talens lag och Centrala gränsvärdessatsen för att ta reda på detta. 5 Skattning av volatiliteten I filen fondkurs.mat finns kursen hos fem aktiefonder noterade en gång i veckan med start i december 1997. Data finns i X, namnen på fonderna finns i namn. Vi skall anpassa parametrarna i geometriska brownska rörelser X (t) = x 0 e ( 2 /2)t+W (t) där W (t) N(0, t) (se appendix till lab 3). Vi skall speciellt intressera oss för volatiliteten, dvs. Börja med att titta på materialet: >> load fondkurs >> plot(x) Vi är främst intresserade av logaritmen av den relativa kursen, Y (t) = ln(x (t)/x (0)), som vi kan beräkna genom att dela varje element i X med motsvarande element i en matris där varje rad är en upprepning av den första: >> Y=log(X./(ones(length(X),1)*X(1,:))) >> plot(y) 4
Enligt modellen är Y (t) = ( 2 /2)t + W (t), dvs en linjär trend plus normalfördelat brus. Genom att beräkna successiva skillnader Z t = Y (t) Y (t 1) får vi att Z t = 2 /2 + W (t) W (t 1) bör vara oberoende och N( 2 /2, )-fördelade. >> Z=diff(Y) >> plot(z) >> hist(z) >> normplot(z) Ser det ut att vara normalfördelat? Om börsen hade varit stabil, dvs varierat ungefär lika mycket hela tiden, utan t.ex. börskrisen på hösten 1998, kunde vi skattat trenden 2 /2 med medelvärdet och volatiliteten med standardavvikelsen av Z t :na. Gör det med hjälp av mean resp. std: I plottarna ser det ju ut som om volatiliteten inte är konstant över tid. För att se hur den varierar kan man dra bort medelvärdet från Z t och kvadrera, dvs beräkna varje tidsstegs bidrag till variansen (kvadratiska avvikelsen från medelvärdet), och plotta den successiva summan: >> Z2=(Z-ones(length(Z),1)*mean(Z)).^2 >> plot(cumsum(z2)) Lutningen på dessa kurvor anger volatiliteten i kvadrat, dvs variationen i fondkurs vid varje tidpunkt. I plotten syns börskrisen tydligt. Hur ser det ut efter krisen, dvs efter tiden 40 veckor? Är volatiliteten konstant då? Vilken fond varierade mest under sista halvåret? Hur kan man i figuren avläsa den standardavvikelse för Z t som vi beräknade innan? 5