LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK DATORLABORATION 1 MATEMATISK STATISTIK, AK FÖR L, FMS 033, HT-02 Laboration 1: Mer om Matlab samt Deskriptiv statistik 1 Syfte Syftet med den här laborationen är att du ska bli mer förtrogen med MATLAB, speciellt vissa av de grafiska rutinerna. Du ska också lära dig använda några av de vanligaste funktionsbegreppen inom statistikteorin, dessa används främst för att studera ett stickprovs fundamentala egenskaper. Begreppet stickprov i det här sammanhanget motsvarar helt enkelt den information vi erhållit vid en datainsamling. Som förberedelse till laborationen skall du ha tillgodogjort dig de väsentligaste avsnitten i kapitel 10 och 11 i Blom G., Statistikteori med tillämpningar, 1984, gått igenom laborationshandledningen samt ha tillgodogjort dig självstudiekursen Kort introdukton till Matlab. Laborationen innehåller följande moment: Enkel deskriptiv statistik uppvärmningsuppgifter. Randomiseringen vid datainsamling är väsentlig men kan vid många tillfällen vara ganska trixig. I den här uppgiften ska vi lära oss hur man använder den inbyggda slumptalsgeneratorn rand för att i vissa situationer på ett enkelt sätt kunna erhålla ett slumpmässigt och oberoende stickprov. Deskriptiv analys av effekten på fordonens hastighet vid en trafikomläggning. 2 Förberedelseuppgifter Du skall ha löst förberedelseuppgifterna innan du kommer till laborationen. Hemuppgift 1: Vid en undersökning av ett datamaterial är man ofta intresserad av hur stora värdena är (det vi kallar lägesmått) samt av hur mycket de olika värdena skiljer sig åt (spridningsmått). De olika mått vi skall använda finns definierade i kurslitteraturen. (a) Kontrollera med kurslitteraturen (kap 11) hur man beräknar följande mått hos ett stickprov och vilka beteckningar som används för respektive mått. (a) Medelvärde (b) Median (c) Standardavvikelse (d) Varians (e) Variationsbredd (f) Variationsintervall (g) Variationskoefficient (b) Vilka av ovanstående är lägesmått? (c) Vilka av ovanstående är spridningsmått? (d) Hur beräknar man medianen när stickprovsstorleken är udda respektive jämn? Hemuppgift 2: Vad är det för skillnad mellan ett stapeldiagram och ett histogram?
Hemuppgift 3: Tilldelningen av vuxna älgar inför årets älgjakt för de 28 jaktområdena i älgvårdsdistriktet Piteå I ser ut så här 12 : 5 11 2 11 8 10 6 8 3 12 9 9 3 2 2 3 3 5 2 0 0 0 0 0 21 1 1 1 Beräkna medelvärde, median, varians, standardavvikelse samt variationskoefficient för detta material. Hemuppgift 4: För älgvårdsdistriktet Piteå II:s 42 jaktområden var medelvärdet av antalet tilldelade vuxna älgar x = 2.6190 och standardavvikelsen s x = 10.3758. Motsvarande värden för Piteå III:s 21 jaktområden var ȳ = 2.6667 respektive s y = 7.6572. Om man betraktar de 63 jaktområdena som ett enda material, vilket medelvärde och vilken standardavvikelse får man då? 3 Uppvärmning Uppgift 3.1: Ta reda på hur man räknar ut de olika måtten från Hemuppgift 1(a) i MATLAB. Vilka finns det färdiga funktioner för? (Tips: Tänk efter vad de kan heta på engelska och använd kommandona help och lookfor.) Uppgift 3.2: Verifiera dina beräkningar i Hemuppgift 3 med hjälp av MATLAB. 4 Randomisering datorn som slumptalstabell Om vi ska ta ut ett slumpmässigt stickprov från en population ska alla element i populationen ha lika stor sannolikhet att komma med i stickprovet. I många sammanhang är populationen begränsad, vi är, till exempel, intresserade av alla fastigheter i Sverige, alla bilägare eller de personer som någon gång har ägt eller äger en bil av ett specifikt märke. Vi behöver då ha tillgång till fastighetsregistret, eller motsvarande, och vi måste också veta hur stor populationen är. Generellt kan vi beteckna antalet element, populationens storlek, med N och stickprovets storlek med n. Tekniken för randomisering som gås igenom i det här laborationsmomentet är generell och kan översättas till i princip alla de olika program där man har tillgång till en slumptalsgenerator som genererar rektangelfördelade slumptal, (kontinuerliga likformiga slumptal) 3. 4.1 Dragning utan återläggning När vi drar element utan återläggning måste vi se till att de olika värdena inte kan komma med mer än en gång var. Det kan vi göra genom att sortera alla värdena i slumpmässig ordning och sedan plocka ut lagom många från ena änden. Det görs på följande sätt: Tilldela varje element i populationen ett nummer mellan 1 och N. För att avgöra vilka element som skall tas med i stickprovet, av storlek n, utnyttjar vi den inbyggda slumptalsgeneratorn rand. Anropet av funktionen rand(1,n) ger som resultat en 1 N-vektor av reella slumptal vars värden varierar mellan 0 och 1. Observera att alla värdena har lika stor chans att komma med. >> K = rand(1,n); Därefter sorteras dessa slumptal i stigande ordning med hjälp av funktionen sort: 1 Norrbottens-kuriren 7/8-01 2 De som tilldelats noll vuxna älgar är inte helt lottlösa, de har tilldelats en kalv, de övriga i regel obegränsat med kalvar utöver de specificerade vuxna älgarna. 3 I och med att slumptalen genereras av en algoritm är de inte slumpmässiga i egentlig mening, och de kallas därför ibland pseudoslumptal. Talföljder som genereras på detta sätt är dock tillräckligt slumpmässiga för de flesta förekommande behov, och vi skall inte fördjupa oss i detta problem (den intresserade läsaren hänvisas till Morgan, B. J. T., Elements of Simulation, som ger en god introduktion). Den sekvens av slumptal som generera bestäms av ett så kallat frö (sead). Varje gång MATLAB startas får man alltså samma sekvens av slumptal såvida man ej ändrat frö. För laborationernas del saknar detta emellertid större betydelse, men den intresserade kan få reda på mer genom help rand i MATLAB. 2
>> [Y,plats] = sort(k); I vektorn plats finns elementens ursprungsnummer sorterade efter slumptalens storlek. Välj därefter de n första elementen i vektorn plats, det vill säga, de platser där de n minsta värdena hamnade. Exempel: Välj ut 2 element slumpmässigt ur en population av storleken 4: >> K = rand(1,4) >> [Y,plats] = sort(k) >> plats(1:2) I MATLAB-filen overtornea.mat finns årets älgtilldelning för de 72 jaktområdena i Övertorneå 4. Filen läses in med load overtornea. För att detta ska fungera måste du först ha ställt länkarna till rätt katalog; detta kan du göra med kommandot fms032. Gör sedan whos för att se vilka variabler som finns. Variabeln licens innehåller namnen på licenshavarna medan antalet tilldelade vuxna älgar ligger i variabeln algot (uttyds ÄLG i ÖverTorneå ). Man kan få ut namnet på licenshavare nummer 3, till exempel, genom att skriva >> licens(3,:) ans = Koivukylä norra jaktlag Kolonet behövs för att få med alla tecknen i namnet. Uppgift 4.1: Använd metoden ovan för att slumpmässigt välja ut 5 jaktområden av de 72. Tag reda på vad de 5 licenshavarna heter och hur många älgar de blivit tilldelade. Tänk också ut hur du skulle kunna använda dessa 5 värden för att gissa den sammanlagda tilldelningen i hela Övertorneå. Jämför med sanningen. Blev din gissning bra? Gör om proceduren några gånger. Vad händer med din gissning om du får med AssiDomän AB i stickprovet? 4.2 Dragning med återläggning När vi drar element med återläggning får varje värde lov att komma med hur många gånger som helst. Det innebär att vi kan välja de enskilda elementen utan att ta hänsyn till vilka vi redan har valt. 4 Norrbottens-kuriren 7/8-01 Sätt populationens storlek till N. För att avgöra vilka element som skall tas med i stickprovet, av storlek n, utnyttjar vi återigen den inbyggda slumptalsgeneratorn rand. Anropet av funktionen rand(1,n) ger som resultat en vektor av n stycken reella slumptal vars värden varierar mellan 0 och 1. För att avgöra vilka element som vi skall använda vid stickprovsundersökningen måste vi omvandla de erhållna slumptalen till heltal mellan 1 och N. Det kan vi göra på följande sätt: >> K = floor(n*rand(1,n)+1) Vektorn K kommer att innehålla n stycken heltal som motsvarar numret på de element i populationen som vi skall ta med i stickprovet. Funktionen floor avrundar ett reellt tal nedåt till motsvarande heltal. Uppgift 4.2: Använd metoden ovan för att slumpmässigt välja ut 5 jaktområden av de 72. Tag reda på vad dessa 5 heter och hur många älgar de blivit tilldelade. Tänk också ut hur du skulle kunna använda dessa 5 värden för att gissa den sammanlagda tilldelningen i hela Övertorneå. Jämför med sanningen. Blev din gissning bra? Gör om proceduren några gånger. Vad händer med din gissning om du får med AssiDomän AB i stickprovet? Vad händer med din gissning om du får med AssiDomän AB flera gånger i samma stickprov? I andra halvan av kursen skall vi titta närmare på hur man konstruerar bra skattningar och vilka egenskaper de har. 5 Korsning eller rondell analys av ett datamaterial 5.1 Hastighetsmätningar 5.1.1 Bakgrund I ett försök att få ned hastigheterna och därmed minska olycksfrekvensen har man i Växjö byggt om många medelstora korsningar till små rondeller. I samband med dessa ombyggnader utförde man också hastighetsmätningar för att kunna utvärdera effekten av ändringarna. Hastigheterna mättes med radarpistol på enskilda fordon vid 3
passagen av väjningslinjen i en viss korsning före och efter ombyggnaden. Mätningarna gjordes vid jämförbara tider på dygnet och året och omfattade bara så kallade ostörda fordon, det vill säga fordon som inte ligger i kö eller påverkas av interaktion med andra fordon på huvudgatan. I trafiktekniska sammanhang använder man ofta 15 %-kvantilen för hastighetsfördelningen som ett sammanfattande mått på hur fort folk kör på en viss vägsträcka, (i viss litteratur använder man 85 %-percentilen som motsvarar 15 %- kvantilen). Kvantilbegreppet kan du läsa mer om på sidan 60 i läroboken. Man kan också vara intresserad av att mera formellt testa olika hypoteser angående effekten av diverse ingrepp i trafikmiljön (hur statistisk hypotesprövning går till kommer att bli huvudämnet för en kommande datorlaboration). I samband med forskning och planering kan man eventuellt även vilja simulera olika förlopp med hjälp av datormodeller. I alla dessa sammanhang är det till stor hjälp om man kan beskriva hastighetsfördelningen med hjälp av någon känd teoretisk sannolikhetsfördelning. I den här laborationen skall vi inte försöka hitta en lämplig teoretisk fördelning utan istället koncentrera oss på de enkla egenskaperna hos våra observationer. Hur man väljer en lämplig teoretisk sannolikhetsfördelning återkommer vi till. En sådan sannolikhetsfördelning kan dock beskrivas antingen med hjälp av en täthetsfunktion eller en sannolikhetsfunktion. Uppgift 5.1: Vilken typ av stokastisk variabel diskret eller kontinuerlig tycker du verkar lämpligast för att beskriva hastighetsfördelningen i föreliggande fall? 5.1.2 Datamaterialet Vi skall börja med att undersöka om ombyggnaderna haft någon märkbar effekt på hastighetsfördelningen vid korsningarna. Datamaterialet finns lagrat i filen trafik.mat, och du kan läsa in filen i MATLABs arbetsarea med kommandot load trafik. Med kommandot whos kan du se vilka variabler som finns i MATLABs arbetsminne. De uppmätta hastigheterna före ombyggnad finns lagrade i vektorn korsning. Resultatet av hastighetsmätningarna efter ombyggnad finns i vektorn rondell. För att få en första överblick över datamaterialet kan man rita ett punktdiagram med olika symboler för hastigheter före respektive efter ombyggnad, >> plot(korsning, + ) >> hold on >> plot(rondell, o ) >> title([ Fordonshastighet:... korsning (+)... ombyggd till rondell (o) ]) >> xlabel( Observationsnummer ) >> ylabel( Hastighet (km/tim) ) >> hold off Uppgift 5.2: Vilka slutsatser är du beredd att dra utifrån denna bild? Vi kan nu gå vidare till att rita histogram över de relativa frekvenserna för att få en bättre bild av de två hastighetsfördelningarna. >> subplot(211) % subplot splittrar % figurfönstret i delfönster >> hist2(korsning) >> title([ Histogram över... hastigheter för korsning ]) >> xlabel( Hastighet (km/tim) ) >> ylabel( Relativ frekvens ) >> subplot(212) >> hist2(rondell); (Har du kommit ihåg att skriva titel på alla figurer och beteckningar på alla axlar?) För att underlätta en direkt jämförelse mellan de två figurerna är det lämpligt att ge dem samma skala, till exempel >> axis([10 70 0 0.1]) >> subplot(211) >> axis([10 70 0 0.1]) Uppgift 5.3: Vilka slutsatser är du beredd att dra utifrån dessa två histogram? 4
Uppgift 5.4: För att underlätta jämförelsen mellan de två datamaterialen kan du beräkna deras medelvärde, standardavvikelse samt variationsbredd. Slutkommentar: Har trafikomläggningen haft någon effekt på fordonens hastighet? 5.2 Fortkörare Ett annat sätt att ytterligare belysa datamaterialen är att uppskatta frekvensen fortkörare före och efter trafikomläggningen. Vi är alltså egentligen intresserade av skatta sannolikheten för att ett slumpmässigt utvalt fordon kör fortare än 50 km/h i korsningen respektive rondellen. I MATLAB finns en del användbara villkorssatser som gör det enkelt att skapa nya vektorer och matriser med hjälp av lämpliga bivillkor, till exempel >> sniglar = rondell(rondell <= 20) % ger observationer <= 20 km/h >> galningar = korsning(korsning > 80) % ger observationer > 80 km/h Uppgift 5.5: Uppskatta sannolikheten att ett slumpvis valt fordon kör för fort i korsningen respektive rondellen. Funktionen length kan vara användbar. Uppgift 5.6: Beräkna en uppskattning av 15 %-kvantilen i de båda datamaterialen, det vill säga den hastighet x 0.15 sådan att 15 % av datamaterialet har högre hastighet än x 0.15. Om du inte hittar någon standardfunktion som räknar ut det kan du återigen ha nytta av funktionerna sort och length. 6 Avslutning MATLAB har ett eget statistikpaket som heter Statistics Toolbox och du får en innehållsförteckning med kommandot help stats. På vissa datorer finns i stället paketet stixbox, som är skrivet vid institutionen för matematisk statistik, och där får du en innehållsförteckning med kommandot help stixbox. Såväl sannolikhetsfunktioner och fördelningsfunktioner som slumptalsgeneratorer finns i dessa programpaket. Det finns så klart en hel del andra användbara funktioner i dessa toolboxar också. 5