LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK Laboration 5: Regressionsanalys DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08 Syftet med den här laborationen är att du skall bli mer förtrogen med det i praktiken kanske viktigaste området inom kursen nämligen Enkel linjär regression Multipel linjär regression 1 Förberedelseuppgifter Som förberedelse till laborationen bör du läsa igenom Kapitel 14, Kompendiet om Grundläggande regressionsanalys och hela laborationshandledningen. Till laborationens start har du med dig lösningar, som du kan redogöra för, till uppgifterna (a) (c): (a) Ange modellen för enkel linjär regression med normalfördelade fel. Hur skattar man, och 2? Vilken fördelning får och? Hur gör man konfidensintervall för, ochñ0 = + x 0? Hur kan man testa huruvida linjens lutning är 0? (b) Residualanalys är ett centralt moment i all regressionsanalys. Hur bör residualerna se ut vid en korrekt regressionsanalys? Ange några tekniker för att kontrollera detta. (c) Lös uppgift ST35. De filer och specialrutiner du kommer att behöva till denna laboration hittar du som vanligt på kursens hemsida. 2 Enkel linjär regression Vid enkel linjär regression söker man anpassa en rät linje till datamaterialet, dvs modellen är y i = + x i + i, i = 1,..., n, där i är oberoende likafördelade (ofta normalfördelade) störningar med väntevärdet 0 och variansen 2. Vi kommer i den följande framställningen att arbeta med matrisformuleringen av modellen, Y = X +e, där de ingående matriserna har följande form: y 1 1 x 1 y 2 Y =., X = 1 x 2.., 1 x n y n ( ) = och e = 2 1 Vi skall använda MATLAB-rutinen regress som skattar parametrar, beräknar konfidensintervall för dem, beräknar residualer och lite till. Görhelp regress för att se vad den gör. Uppgift 1: Använd regress för att räkna uppgift ST35. En n 1-kolumn med ettor fås med ones(n,1) och två kolumnerk1 ochk2 läggs bredvid varandra med[k1 k2]..... n.
2.1 Fallgropar För att illustrera vådan av att okritiskt anpassa en linjär modell till ett givet datamaterial har F. J. Anscombe konstruerat ett datamaterial, som ser ut på följande sätt: observation x 1, x 2, x 3 y 1 y 2 y 3 x 4 y 4 1 10 8.04 9.19 7.46 8 6.58 2 8 6.95 8.14 6.77 8 5.76 3 13 7.58 8.74 12.74 8 7.71 4 9 8.81 8.77 7.11 8 8.84 5 11 8.33 9.26 7.81 8 8.47 6 14 9.96 8.10 8.84 8 7.04 7 6 7.24 6.13 6.08 8 5.25 8 4 4.26 3.10 5.39 8 5.56 9 12 10.84 9.13 8.11 8 7.91 10 7 4.82 7.26 6.42 8 6.89 11 5 5.68 4.74 5.73 19 12.50 Datamaterialet finns lagrat i filenanscombe.mat och kan laddas in i MATLAB på vanligt sätt. Med kommandot who får du reda på aktuella variabler i minnet. En lämplig början är alltid att ta sig en titt på datamaterialet. Uppgift 2: Börja med att plottay1 motx1. Se det ut som om linjärt samband vore lämpligt? Plotta också de andra paren mot varandra. Uppgift 3: Vi skall nu helt aningslöst anpassa en linjär modell enligt y i = + x i + i, i = 1,..., n, där i är oberoende likafördelade störningar med väntevärdet 0 och variansen 2. (a) Konstruera matrisen X1 (enligt notationen i det inledande avsnittet ovan) för den första datamängden och beräkna skattningen av med MATLABs inbyggda funktionregress >> X1 = [ones(size(x1)) x1] >> beta1hat=regress(y1,x1) (b) Beräkna den skattade regressionslinjen y1hat=x1*beta1hat och rita in den i samma diagram som datamaterialet. Är det rimligt att teckna sambandet mellan den förklarande variabelnx1 och den beroende variabeln y1 som ett linjärt samband? För att studera hur väl vår modell stämmer med givna data beräknar vi först vektorn av residualer. Om modellen är korrekt skall residualerna ungefärligen (vi använder skattade parametrar) vara observationer av likafördelade stokastiska variabler. För att undersöka hur det förhåller sig med detta utför vi en residualanalys enligt beskrivningen i kurslitteraturen. Vi kan t.ex. plotta residualerna gentemot den förklarande variabeln. 2
Uppgift 4: Beräkna residualerna y1-y1hat och plotta dem mot x1. Om vårt modellantagande är korrekt skall vi inte kunna skönja någon systematisk variation i diagrammet. Kan du finna något beroende? Nu vill vi göra motsvarande för de övriga tre datamaterialen, dvs lösa ekvationssystemen, skatta regressionslinjerna och rita ut residualerna. För att du ska slippa göra alla dessa kommandon finns de sammanställda i MATLAB-filen anscombe.m. Skriv alltså >> anscombe för att få skattningar och plottar och besvara sedan följande frågor: Uppgift 5: Jämför värdena på de skattade koefficienterna för var och en av de fyra regressionslinjerna. Studera och jämför residualplottarna för de fyra olika fallen. Hur skulle man tolka resultaten om man bara fick de skattade modellparametrarna men ingen grafisk framställning? 3 Polynomregression Datamaterialet som du skall arbeta med i detta avsnitt är koldioxidhalter uppmätta över en vulkan varje månad under en period av 32 år, dvs totalt finns 32 12 = 384 mätvärden. Materialet finns i filen co2.dat, och den kan laddas in på vanligt sätt. Mätvärdena hamnar då i en vektor med namnet co2. Plotta mätvärdena. Det finns uppenbarligen en kraftig periodicitet (årsvariation) i mätningarna, och en sådan låter sig inte så lätt fångas med en polynomiell regressionsfunktion. Detta problem kan lösas på flera sätt. Ett är att införa en sinus-funktion som modellerar variationen, ett annat är att differentiera datasekvensen, dvs undersöka z i = y i y i 1 i stället för y-värdena själva. Vi skall dock välja den mycket enkla lösningen att medelvärdesbilda över varje år. Detta fordrar litet trixande i MATLAB. Uppgift 6: Först skapar vi en 12 32-matris med bara nollor. >> z=zeros(12,32); Sedan överför vi mätvärdena till denna matris. >> z(:)=co2 >> plot(z) Värdena i co2 överförs här kolonnvis, så att första kolonnen i z innehåller mätvärdena från första året osv. Kontrollera gärna detta. Vi kan nu använda funktionenmean för att beräkna årsmedelvärdena. >> y=mean(z) Slutligen vill vi att mätvärdena skall finnas i en kolonnvektor för att regressionsberäkningarna skall se ut som vanligt. >> y=y Kom ihåg att betecknar transponat. Vi har nu skapat den mätvärdesvektor vi skall arbeta med. Vi skapar även en vektor med den förklarande variabeln (årtalet, räknat från lämplig nollpunkt). 3
>> x=(1:32) ; Plotta mätvärdenaymotx. Uppenbarligen är den periodiska variationen borta, vilket också var syftet med medelvärdesbildningen. Vi skall nu göra polynomregression på materialet, dvs vår modell är y i = + 1x i + 2x 2 i + + kx k i + i, i = 1,..., n, där i är oberoende likafördelade störningar med väntevärdet 0 och variansen 2. Som modellen är skriven ovan är den olinjär, ty ett polynom är inte en linjär funktion, men vi kan göra den linjär genom att införa de nya förklarande variablerna x ij = x j i för j = 1,..., k, i = 1,..., n, och skriva y i = + 1x i1 + 2x i2 + + kx ik + i, i = 1,..., n. Detta är den modell vi skall arbeta med. 3.1 Enkel linjär regression Uppgift 7: Vi börjar med att anpassa en linjär funktion till datamaterialet, dvs polynomets ordningsgrad k = 1. Skattningarna av och = 1 erhålles med hjälp av funktionen regress som också kan ge konfidensintervall för dem, samt residualer (sehelp regress). Konstruera X-matrisen, skatta regressionsmodellen och rita upp den. Rita också upp residualerna. Verkar en rät linje vara en tillfredsställande regressionsmodell? Diagrammet visar att residualerna i mitten av mätserien tycks komma från en annan fördelning är residualerna i början och slutet av densamma. Alternativt finns en stark korrelation mellan störningarna vilket strider mot oberoendeantagandet. Vi drar alltså slutsatsen att en enkel linjär regressionsmodell inte passar det aktuella datamaterialet. 3.2 Kvadratisk regression Nästa steg är att försöka anpassa en kvadratisk funktion till mätvärdena, dvs vi använder ordningstalet k = 2 för regressionspolynomet. Uppgift 8: Skapa vektorer som innehåller de förklarande variablerna x i1 = x i och x i2 = xi 2. Skapa också den nyax-matrisen och gör om beräkningarna och plottarna för den nya modellen. (a) Verkar den kvadratiska modellen vara bättre än den linjära? Kan residualerna tänkas komma från samma fördelning? Finns något beroende? (b) Nästa steg är att undersöka om residualerna eventuellt kan komma från en normalfördelning. Gör detta genom att plotta dem i ett normalfördelningsdiagram (normplot). Verkar det rimligt att anta normalfördelade störningar? Är väntevärdet av dessa lika med 0? (c) Skatta felens varians 2 genom att dela residualkvadratsumman med n 3 = 29: 4
>> s2 = sum(res2.^2)/29 därres2 fås urregress. (d) Avsluta med att studera de 95 %-iga konfidensintervallen för, 1 och 2 (fås medregress). Är 2 signifikant skild från 0, dvs testa H 0 : 2 = 0 mot H 1 : 2 0 på nivån 5 %? I så fall kan vi med gott samvete anta den kvadratiska modellen före den linjära. På samma sätt kan man gå vidare och testa om en tredjegradsterm i regressionsfunktionen är relevant. Vi skall nu använda en färdigskriven funktionreggui och låta den göra grovjobbet. Uppgift 9: Undersök med help-kommandot vad funktionen reggui gör och vad den har för inparametrar. Undersök de olika möjligheterna reggui ger dig att studera en regressionsmodell och välj olika gradtal i modellen. (a) Fick du några varningsmeddelanden (Inte i reggui-fönstret utan i MATLAB-fönstret)? Vad kan det i så fall bero på? (b) Gör en bedömning av figurerna och utskriften med de skattade parametrarna och konfidensintervallen och avgör vilken polynommodell som är mest adekvat. 5