MATEMATISKA INSTITUTIONEN Tillämpad statistisk analys, GN STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB 2011-04-13 DATORLABORATION 3: MULTIPEL REGRESSION. Under Instruktioner och data på kursens hemsida finner du huspriser i Boston med omnejd. Data finns som text, tabseparerad eller kommaseparerad. Följande uppgifter finns tillgängliga om varje försålt hus: 1. Ort = sifferkod för orten där huset ligger. 2. Longitud. 3. Latitud. 4. Brott = brottslighet per capita. 5. Kvaveox = halt av kväveoxider (NO X ) i luften. 6. Rum = medelantal rum per bostad. 7. Fore1940 = andel hus byggda före 1940. 8. DistArb = sammanvägning av avstånd till fem stora arbetsplatser i Boston. 9. Skatt = fastighetsskatt per $10 000. 10. LararTat = antal elever per lärare. 11. LagStat = andelen invånare med låg status. 12. Pris = försäljningspris. Rekommenderat programpaket: R. Som i första laborationen skapar du först ett underbibliotek: $ mkdir tsa3 $ cd tsa3 Sedan hämtar du filen BostonTab.txt i Nerladdningsbara dokument. Starta R, och läs in filen som i Lab 1: > Boston <- read.table("bostontab.txt",header=true) > Ort<-Boston$Ort > Longitud<-Boston$Longitud > etc. för att se titta datasetet kan helt enkelt du skriva > Boston när du skrivit det första kommandot. Besvara uppgifterna 1 7 skriftligen och bifoga några grafer som visar vad du har gjort och som illustrerar ditt resonemang. Bifoga även den R-kod du använt i en separat fil via kurssidan eller med e-post. Laborationens syfte är att utreda hur försäljningspriset påverkas av de övriga variablerna (utom sifferkoden för ort). - 1 -
UPPGIFT 1. Undersök hur variablerna 2 11 en och en påverkar försäljningspriset. Gör först en grafisk undersökning: vilka av dem företer ett uppenbart icke-linjärt samband med responsen? I vilka fall kan man med hjälp av transformationer av data åstadkomma att modellantagandena för linjär regression är åtminstone approximativt uppfyllda? Gör dessa transformationer, och kontrollera att de fick önskad effekt! UPPGIFT 2. Vilka av variablerna 2 11 (eventuellt transformerade) har ett signifikant inflytande på försäljningspriset? (Vi betraktar precis som i Uppgift 1 variablerna en och en, inte alla tillsammans som nedan i Uppgift 3.) Välj signifikansnivå α= 0.05. Går inflytandet åt det håll man skulle kunna förvänta sig? Jämför förklaringsgraderna. Vilken variabel ger störst förklaringsgrad? Jämför med graferna i Uppgift 1: verkar det stämma med det intryck du får av graferna? UPPGIFT 3. R kan även göra en multipel regression. Gör detta med samma variabler som i Uppgift 2 men nu tar vi med dem alla tillsammans i en och samma modell (eventuellt transformerade). Vilka variabler blir nu signifikanta? Varför får man inte samma p- värden som i Uppgift 2? Jämför R 2 -värdet med de R 2 -värden du fick i Uppgift 2. UPPGIFT 4. Det kan finnas goda skäl att begränsa sig till ett mindre antal variabler, exempelvis sådana som har stort inflytande på försäljningspriset. Vi betraktar en modell som innehåller alla variabler utom Latitud, Brott och Fore1940. (Det finns metoder för att välja ut de variabler som man ska ta bort, men det går vi inte in på här.) Om du har transformerat några av variablerna, använd de transformerade variablerna istället för de ursprungliga. Jämför förklaringsgraden med Uppgift 3. Kan vi dra slutsatsen att de uteslutna variablerna saknar betydelse för försäljningspriset? Betrakta R-utskrifterna för den nu erhållna modellen och för modellen i Uppgift 3. Vad händer med lutningskoefficienternas medelfel (Std. Error i utskriften)? Vad säger detta om precisionen i skattningarna? UPPGIFT 5. a) Använd modellen i uppgift 4 för att prediktera priset för ett hus med värdena Longitud = 70 Kvaveox = 0.2 Rum = 7 DistArb = 5 Skatt = 350 LararTat = 20 LagStat = 5-2 -
b) Beräkna ett 95%-igt konfidensintervall och ett 95%-igt prediktionsintervall för priset. c) Gör om samma sak för datasetets första observation. Jämför med det observerade priset: faller det inom något av intervallen? UPPGIFT 6. Undersök i vad mån modellen i Uppgift 4 uppfyller modellförutsättningarna: undersök (grafiskt) normalitet och konstant varians. UPPGIFT 7. Är det troligt att någon av modellerna (Uppgift 3 och Uppgift 4) går att använda för att prediktera huspriser i någon annan del av USA? Varför/varför inte? R-TIPS. I. Funktioner. De flesta vanliga funktioner (cos, sin, exp, log, sqrt etc.) finns i R. För att exempelvis ta kvadratroten ur en variabel (eller ett tal) X, skriv > Y <- sqrt(x) För att kvadrera, skriv > Y <- X**2 II. Regression. Kommandot för såväl enkel som multipel regression är lm (samma som i Lab 2!). För enkel linjär regression, se instruktionerna till Statistisk analys GN, Laboration 3. För att göra en regression av en responsvariabel Y, på en förklarande variabel X, skriv exempelvis > Regr <- lm(y ~ X) Själva regressionen heter nu Regr, och vi kan få ut information ur den via summary, som i Lab 3, Statistisk analys. Vi kan också göra ett punktdiagram och sedan lägga in en regressionslinje i det: > plot(x,y) > abline(coef(regr)) En multipel regression av exempelvis Y på X1, X2 och X3 görs genom kommandot > Mregr <- lm(y ~ X1 + X2 + X3) - 3 -
Regressionsdiagnostik fås med samma kommandon som för enkel linjär regression se Lab 3, Statistisk analys igen. Man kan plotta residualer mot predikterade värden med kommandona > res <- Mregr$residuals > fi <- fitted.values(mregr) > plot(fi,res) Normalfördelningsplottar med inlagd linje får man genom kommandona > qqnorm(res) > qqline(res) III. Flera grafer i samma fönster. Den här laborationen ger upphov till ganska många grafer, så det kan vara praktiskt att samla flera av dem i samma utskrift. Om man exempelvis vill ha 6 (=2x3) grafer i en utskrift, så skriver man, innan man gör några grafer, kommandot > op=par(mfrow=c(2,3)) IV. Prediktion. Skattningar av koefficienterna i en regression fås genom kommandot > coef(mreg) och skattningarnas kovariansmatris V = Cov(β) genom > vcov(mregr) Observera att R listar de matriselement som svarar mot interceptet först. Följande kommando tar bort rubriker i vektorer och matriser; dessa nämligen kan vara i vägen (och generera felmeddelanden) när man sedan försöker utföra olika räkneoperationer > x <- as.numeric(x) Vidare kan man behöva justera dimensionen av vektorer och matriser för att kunna multiplicera dem med varandra. Detta görs med hjälp av kommandot dim se Laboration 1, R-tips. Transponerar matriser gör man med hjälp av kommandot t(), om det skulle behövas. Matrismultiplikation skrivs %*% se Laboration 1 igen. Standardavvikelsen i modellen kan komma att behövas. Den kan man få med hjälp av kommandot > anova(mreg) som levererar en ANOVA-tabell. Variansen återfinns på raden Residuals, kolumnen Mean Sq ; om du har givit ANOVA-tabellen ett namn, Anovatab säg, så kan du plocka fram den som Anovatab[m,n], för lämpligt valda värden på heltalen m och n. Pröva dig fram om det inte blir rätt på första försöket! - 4 -
Konfidens- och prediktionsintervall för observationer i det befintliga datasetet (men inte för en godtycklig ny observation) kan räknas ut automatiskt genom kommandona > predict(mregr,interval="confidence") > predict(mregr,interval="prediction") respektive. Detta kan du använda för att lösa Uppgift 5c), men du kan också lösa även den uppgiften för hand och sedan använda predict för att kontrollera att du har räknat rätt. V. Kvantiler. t-kvantiler t ν (α), där ν är frihetsgraderna och α är den ensidiga signifikansnivån ges av > qt(α,ν,lower.tail=false) - 5 -