TAMS65 DATORÖVNING 1 Datorövningen behandlar simulering av observationer från diskreta och kontinuerliga fördelningar, illustration av skattningars osäkerhet, transformation av data för att få bättre anpassning till normalfördelning, jämförelse av varianser, konstruktion av konfidensintervall för µ 1 µ 2 vid skilda varianser samt undersökning av konfidensgrad vid normalapproximation. Förberedelser Läs om histogram i Fö1. Läs om punktskattning särskilt momentmetoden och maximum-likelihood-metoden, se Fö1 och Fö2. Läs Appendix i slutet av den här handledningen. Det handlar om punktskattning vid rektangelfördelning, där det bla. visar sig att man inte alltid hittar ML-skattningen genom att derivera likelihoodfunktionen. Läs om konfidensintervall, särskilt vid två stickprov från normalfördelning inklusive fallet med skilda varianser samt i samband med normalapproximation i binomialfördelningsfallet, se Fö4 och Fö5. Innan du startar Matlab bör du ladda ner filen uppg3.m från kursens hemsida till någon mapp i din hemkatalog. När du arbetar i Matlab bör du skriva allt i m-filer så att du lätt kan gå tillbaka och ändra eller återupprepa processen senare om du skulle vilja. 1
Uppgift 1. Simulering av observationer från en diskret fördelning Vi har ofta utnyttjat tärningskast för att illustrera olika räknelagar för sannolikheter. Du ska nu med hjälp av Matlab simulera sådana kast. Starta Matlab och öppna en m-fil. Namnge filen till uppg1.m och spara den på lämpligt ställe. Skriv följande kommandon i m-filen och kompilera. n=600; % n stycken kast % Simulera en tärning kast = randi(6,n,1); kast(101:115) Skriv help randi i kommandofönstret för att se hur randi fungerar. Se speciellt exemplet i hjälpavsnittet. Vad gör kast(101:115)? Det kan nu vara intressant att titta på frekvenserna f i för de olika utfallen. Skriv sum(kast==i) för i = 1,..., 6 i kommandofönstret. Vilka frekvenser får du? Vi kan även plotta frekvenserna med hjälp av ett histogram. Börja med att kommentera bort simuleringen ovan genom att skriva ett % före den, dvs. så vi får % kast = randi(6,n,1) (om vi inte gör det så kommer vi att simulera nya kast). Fyll på i m-filen och kompilera. % Histogram figure hist(kast,[1:6]) ylabel( antal kast ) xlabel( antal ögon på tärningen ) Beräkna stickprovsmedelvärdet och stickprovsstandardavvikelsen för de 600 kasten. Jämför medelvärdet med det teoretiska väntevärdet för ett tärningskast. Skriv i m-filen. % Stickprovsmedelvärde medel = mean(kast) % Stickprovsstandardavvikelse stdev = std(kast) Fyll i resultaten på resultatbladet som finns sist i det här häftet och redovisa uppgiften så snart din handledare är ledig. Glöm inte att spara din m-fil så att du kan gå tillbaka till din programkod. 2
Uppgift 2. Punktskattning vid rektangelfördelning Rensa i kommandofönstret och minnet genom att skriva clear och clc i kommandofönstret. Öppna en ny m-fil och namnge filen till uppg2.m. Vi ska nu skapa 100 observationer från Re(0, a) (välj själv a-värde). Skriv i m-filen. N = 100; n = 20; X = a*rand(n,n); % där a är det värdet som du har valt Vi har härlett momentskattningen â 1 = 2 x och den korrigerade ML-skattningen â 2 = ((n+1)/n) max x i. Du ska nu jämföra hur dessa båda skattningar fungerar för n=20. Ovan har vi nu en matris X som är 100 20 och som vi tolkar som 100 stycken stickprov med 20 observationer i varje stickprov. Vi kan nu beräkna momentskattningen och maximum-likelihood-skattningen för de 100 stickproven. Alltså, vi får 100 skattningar från varje metod. Skriv i m-filen och kompilera. ahat1 = 2*mean(X,2); ahat2 = ((n+1)/n)*max(x,[],2); Skriv help mean och help max i kommandofönstret för att se hur funktionerna fungerar. Vi vill nu plotta de olika skattningarna. Skriv i m-filen men kompilera inte än. figure plot(ahat1, b* ); hold on plot(ahat2, ro ); legend( Skattning med moment-metoden, Korrigerad MLE-skattning, Location, NorthEastOutside ) Markera de nya raderna. Högerklicka med musen på det markerade stycket och välj Evaluate Selection (eller tryck F9). Om du kör en hel kompilering så kommer nya observationer att simuleras vilket också är ok. Varför ser skattningarna ut som de gör? Beräkna också approximativa värden på väntevärdena E(Âi) och standardavvikelserna D(Âi), i = 1, 2, dvs. beräkna medelvärdet och stickprovsstandardavvikelsen för respektive skattning. Spara m-filen, fyll i resultaten på resultatbladet och redovisa. 3
Uppgift 3. Jämförelse av volatilitet NASDAQ-börsen brukar beskrivas som en marknad för spännande tillväxtföretag. Stora vinster betyder ofta också större risker, vilket i sin tur är kopplat till större volatilitet jämfört med t ex New York-börsen (NYSE) som anses vara ganska stabil. Vi ska studera detta med hjälp av ett datamaterial som innehåller värdeförändringar under en slumpmässigt vald vecka för 30 aktier från NASDAQ och 30 från NYSE. Absolutbeloppet av förändringen anses vara ett rimligt mått på volatiliteten under en period då den genomsnittliga förändringen ligger nära noll. En ökning på 10% anges i datamaterialet som 0.1 etc. Öppna m-filen uppg3.m som du kopierade från kursbiblioteket. Börja med att skapa absolutbeloppet av förändringarna. Fyll på i m-filen. x = abs(kurs_nasd); y = abs(kurs_nyse); Ta fram beskrivande statistik för x och y genom att använda normfit och histfit. [muhatx sx] = normfit(x) figure subplot(1,2,1); histfit(x); title( NASD ) [muhaty sy] = normfit(y) subplot(1,2,2); histfit(y); title( NYSE ) Det är ganska tydligt att en normalfördelningsmodell inte passar så bra. Det finns en tydlig skevhet med lång högersvans och den anpassade normalfördelningskurvan har sannolikhetsmassa på den negativa axeln medan våra mätvärden är 0. I sådana fall kan logaritmisk transformation vara bra, men man får se upp så att man inte skapar en lång vänstersvans. Skriv i m-filen. % Transformera data u = log(x + 0.01); v = log(y + 0.01); Addition av 0.01 hjälper oss att undvika långa vänstersvansar. Här är valet av värdet 0.01 inte självklart. Ta fram beskrivande statistik för u och v på samma sätt som för x och y. Kommentera bort eller markera och Evaluate Selection om du inte vill få upp samma figurer flera gånger. För att stänga flera figurer samtidigt kan du använda close all. figure subplot(1,2,1); histfit(u); title( log-nasd ) subplot(1,2,2); histfit(v); title( log-nyse ) [muhatu,su,muu_ci,sigmau_ci] = normfit(u) [muhatv,sv,muv_ci,sigmav_ci] = normfit(v) Nu är skevheten i stort sett borta. Taggigheten hos histogrammen hänger delvis ihop med hur Matlab bildar klasser för histogrammet. 4
De båda s-värdena är ganska lika och vi antar att vi i u och v har observationer från N(µ 1, σ 2 ) respektive N(µ 2, σ 2 ). Vi vill jämföra µ 1 och µ 2. Använd funktionen ttest2 för att bilda ett nedåt begränsat 95% konfidensintervall för µ 1 µ 2. Skriv help ttest2 för information om hur funktionen ttest2 fungerar. Fundera speciellt på hur man matar in signifikansnivån, α och hur man får ett nedåt begränsat konfidensintervall. Vad blir din slutsats beträffande de båda börsernas volatilitet mätt på det här sättet? Hur kan man motivera att man gör ett nedåt begränsat intervall? Diskutera. Spara m-filen och fyll i redovisningsbladet. Uppgift 4. Konfidensintervall för skillnad mellan väntevärden vid skilda varianser Rensa i kommandofönstret och minnet genom att skriva clear och clc i kommandofönstret. Öppna en ny m-fil och namnge filen till uppg4.m. Vi sk nu generera 10 observationer från N(22, 36) och 31 observationer från N(16, 4), genom att använda normrnd. Skriv help normrnd för information om hur normrnd fungerar. Skriv i m-filen. n = 10; mu1 = 22; sigma1 = 6; m = 31; mu2 = 16; sigma2 = 2; % Simulera data x = normrnd(mu1,sigma1,n,1); y = normrnd(mu2,sigma2,m,1); När du har kompilerat, kommentera bort raderna x = normrnd(...); och y = normrnd(...); dvs. så att du har % x = normrnd(mu1,sigma1,n,1); och % y = normrnd(mu2,sigma2,m,1);. Vi vill inte simulerar nya observationer. a) Anta att du har observationer från N(µ 1, σ 2 1) respektive N(µ 2, σ 2 2). Vi ska nu ta fram ett 95% tvåsidigt konfidensintervall för µ 1 µ 2 då vi inte antar att det är lika varianser. [H1,P1,CI1,STATS1] = ttest2(x,y,0.05, both, unequal ) Notera särskilt frihetsgraden för den approximativa t-fördelningen. På Fö4 hittar du hjälpvariabeln och formeln för frihetsgraden. Räkna ut frihetsgraden för hand om du hinner (använd då std(x) och std(y)). b) Vi ska nu kontrollera om σ 2 1 = σ 2 2 med hjälp av ett konfidensintervall med konfidensgraden 0.95. Använd följande rutin i Matlab. [H2,P2,CI2,STATS2] = vartest2(x,y, 0.05, both ) Slutsats? 5
c) Anta nu felaktigt att du har två stickprov från N(µ i, σ 2 ) för i = 1, 2. Ta fram ett 95% konfidensintervall för µ 1 µ 2. Vad blev konsekvensen av det felaktiga antagandet beträffande standardavvikelserna? Spara m-filen och fyll i resultaten på redovisningsbladet. Uppgift 5. Konfidensgrad vid normalapproximation Öppna en ny m-fil och namnge filen till uppg5.m. Då vi konstruerar konfidensintervall i binomialfördelningsfallet (se Fö5 eller Kursboken), så utnyttjar vi normalapproximation och vi kräver att npq > 10 där q = 1 p. Det är intressant att se vad som händer med konfidensgraden om detta villkor inte är uppfyllt. Ställ upp formeln för ett 95% konfidensintervall för p. a) Vi ska nu skapa 1000 observationer från Bin(16, 0.3). n = 16; p = 0.3; x = binornd(n,p,1000,1); Nu kan vi beräkna skattningarna för p (1000 gånger) phat = x/n; och de båda gränserna för konfidensintervallet lower_lim = phat - 1.96*sqrt(phat.*(1-phat)/n); upper_lim = phat + 1.96*sqrt(phat.*(1-phat)/n); Om det sanna värdet p = 0.3 ligger nedanför den undre konfidensgränsen eller ovanför den övre, så har intervallet missat sin parameter. Följande kommandon hjälper oss att räkna ut hur många gånger p = 0.3 hamnade nedanför den undre konfidengränsen respektive ovanför den övre missar = sum(lower_lim > p) + sum(upper_lim < p) Nu är missar antalet intervall som missade det sanna parametervärdet. Jämför detta antal med det förväntade antalet för den aktuella konfidensgraden. b) Gör om hela proceduren för 1000 observationer från Bin(80, 0.3). Jämför resultaten. Spara m-filen och fyll i resultaten på resultatbladet. 6
Uppgift 6. Öppna en ny m-fil och namnge filen till uppg6.m. Då vi konstruerar konfidensintervall i binomialfördelningsfallet (se Fö5 eller Kursboken), så utnyttjar vi normalapproximation och vi kräver att npq > 10 där q = 1 p för att få en bra approximation. Vi ska nu konstruera ett mera exakt konfidensintervall med hjälp av en färdig rutin i Matlab. a) Låt n = 10 och p = 0.5. Skapa en observation x från X Bin(n, p). Skatta p och beräkna ett konfidensintervall för p genom att utnyttja normalapproximation även om detta inte är tillåtet. Beräkna även ett konfidensintervall för p genom att använda den färdiga rutinen binofit i Matlab. Jämför resultaten. Varför blir inte intervallen lika? Försök hitta någon information om hur intervallet via binofit är beräknat. b) Gör om hela proceduren för n = 100 och p = 0.5. Blir det någon skillnad? Spara m-filen och fyll i resultaten på resultatbladet. Uppgift 7. Konfidensintervall och hypotesprövning Låt x 1,..., x n vara observationer från N(µ, σ). Vi vill testa om µ = 5 eller inte. Vi säger att vi kan pröva hypotesen H 0 : µ = 5 mot H 1 : µ 5, Vi ska nu skapa 1000 stickprov med n = 20 observationer i varje från fördelningen N(5, 1.2). n=20; N=1000; mu = 5; sigma = 1.2; X = normrnd(mu, sigma, N, n); % Simulera för mu=5 Ta fram beskrivande statistik för de 1000 stickproven. muhat = mean(x,2); s = std(x,[],2); a) Antag att σ är okänt, skriv upp uttrycket för konfidensintervallet för µ med konfidensgraden 95%. På samma sätt som i uppgift 5 bilda den undre och övre gränsen för konfidensintervallet och räkna hur många gånger som µ = 5 inte finns med i intervallet. 7
b) Vi kan även bilda något som kallas en teststorheten enligt u = x 5 s/ n. Fundera på vad som händer med teststorheten under H 0 och under H 1. Vi vill förkasta hypotesen H 0 till förmån för H 1 om teststorheten är stor (positiv eller negativ). Alltså vi förkastar hypotesen H 0 om u > t, där t ges i t(n 1)-tabell av villkoret F (t) = 0.975. Man säger nu att testet har signifikansnivån 5% = α = P ( U > t om µ = 5), vilket är sannolikheten att dra fel slutsats. Beräkna teststorhetens värde för varje rad (observera punkten som används för att göra divisionen elementvis för vektorerna) u = (muhat - 5)./(s/sqrt(n)); För att få fram t-värdet som ger den kritiska gränsen, kan man använda t = tinv(0.975,n-1); Vi kan nu genomföra själva testet. reject = sum(u < -t) + sum(u > t) Nu är reject antalet gånger nollhypotsen H 0 förkastats för de 1000 stickproven som skapats med µ = 5 och σ = 1.2 till förmån för H 1 Spara m-filen och fyll i redovisningsbladet. 8
REDOVISNINGSBLAD Uppgift 1 f 1 =...... f 2 =...... f 3 =...... f 4 =...... f 5 =...... f 6 =...... Medelvärdet x =......; väntevärdet E(X i ) =......; stickprovsstandardavvikelse s =...... Uppgift 2 Sant värde a =...... Approximativa värden på E(Â1) :......... på D(Â1) :......... på E(Â2) :......... på D(Â2) :......... Uppgift 3 Skattade parametrar ˆµ 1 =......, s 1 =...... och ˆµ 2 =......, s 2 =....... Konfidensintervall I µ1 µ 2 = Uppgift 4 a) I µ1 µ 2 =........................ Frihetsgrad för den approximativa t-fördelningen för hjälpvariabeln:...... b) Konfidensintervall:....................................... Slutsats beträffande.................................... c) I µ1 µ 2 =........................ Frihetsgrad för den t-fördelade hjälpvariabeln:...... Ange på vilket sätt I µ1 µ 2 är felaktigt: 9
Uppgift 5 Låt x vara observation av X fär X Bin(n, p). Ställ upp formeln för ett 95% konfidensintervall för p. I p = Det förväntade antalet intervall som missar p om konfidensgraden är 95%:...... a) Värde på npq:...... Antalet intervall som missade parametern då n = 16:...... b) Värde på npq:...... Antalet intervall som missade parametern då n = 80:...... Uppgift 6 a) x =...... ˆp =...... I p =.................................... (Normalapproximation) I p =.................................... (Clopper-Pearsons metod) Varför är det skillnad mellan intervallen? b) x =...... ˆp =...... I p =.................................... (Normalapproximation) I p =.................................... (Clopper-Pearsons metod) Uppgift 7 a) I µ =.................................... Antalet intervall som missade parametern:...... b) Antalet gånger som nollhypotesen H 0 förkastades:...... Jämför uppgift a) och b). 10
Appendix. Punktskattning vid rektangelfördelning Låt x 1, x 2,..., x n vara observationer av oberoende stokastiska variabler som är Re(0, a) (har likformig fördelning över intervallet (0, a)). Då har vi täthetsfunktionen 1 om 0 x a f(x) = a 0 f.ö. Momentmetoden: Vi har E(X i ) = a 2, se formelsamlingen. Ekvationen â/2 = x ger momentskattningen â 1 = 2 x. Då är E(Â1) = E(2 X) = 2E( X) = 2E(X i ) = 2 a 2 = a vilket innebär att Â1 är väntevärdesriktig. Vidare blir V ar(â1) = V ar(2 X) = 4V ar(x i )/n = 4 a2 12 1 n = a2 3n. Alltså är D(Â1) = a/ 3n. ML-metoden: Vi får likelihoodfunktionen ( ) n 1 om 0 x i a för i=1,..., n L(a) = a 0 f.ö. Tänk på att a ska variera och att vi söker det a som gör L(a) så stor som möjligt. Vi ser att L(a) 0 bara om a x i för alla i, vilket innebär att L(a) 0 bara om a max x i. Vi har alltså 1 L(a) = a n om a max x i 0 f.ö. Det följer att â = max x i ger störst värde på L(a). Vi ska nu undersöka väntevärdesriktigheten. Låt Y = max X i. Vi behöver täthetsfunktionen för Y, men bestämmer först fördelningsfunktionen. Låt 0 y a. Vi har då ( ) n y F Y (y) = P (Y y) = P (max X i y) = P (X 1 y,..., X n y) = a eftersom de s.v. X 1,..., X n är oberoende. Detta ger täthetsfunktionen och f Y (y) = n yn 1 a n 0 för 0 < y < a a E(Â) = E(Y ) = yf(y)dy =... = n n + 1 a, vilket innebär att  inte är väntevärdesriktig. Vi får då den korrigerade ML-skattningen â 2 = n+1 n â = n+1 n max x i med E(Â2) = n + 1 ( ) 2 n + 1 n E(Y ) = a och V ar(â2) = V ar(y ) n vilket efter en del räknande ger V ar(â2) = a 2 n(n + 2) och D(Â2) = a/ n(n + 2). Vi ser att Â2 är mycket effektivare än Â1, vilket också kommer att bekräftas av simuleringarna i uppgift 2. Anm. Gränsmaximum i samband med ML-skattning uppträder då området där täthetsfunktionen är skild från noll beror på den okända parametern. 11