MATEMATISKA INSTITUTIONEN Tillämpad statistisk analys, GN STOCKHOLMS UNIVERSITET VT 2014 Avd. Matematisk statistik GB 2014-03-17 DATORLABORATION: JÄMFÖRELSE AV FLERA STICKPROV. Till den här datorlaborationen behöver du två olika dataset, med namnen Norrland och Spårdjup. De finns som text, tabseparerad eller kommaseparerad. Rekommenderat programpaket: R. Skapa först ett underbibliotek för den här laborationen, och kalla det förslagsvis för tsa1: $ mkdir tsa1 $ cd tsa1 Spara NorrlandTab.txt och SpardjupTab.txt i underbiblioteket tsa1 genom att högerklicka på filen i fråga på hemsidan och välja Save Link Target As...". (Filen finns även kommaseparerad, vilket kan fungera bättre på vissa plattformar, men från elevdatasalen är det den tabseparerade versionen du bör välja.) Starta sedan R, och läs in filen genom kommandona > Norrland <- read.table("norrlandtab.txt",header=true) > SO4<- Norrland$SO4 > logso4 <- Norrland$logSO4 > Flod <- Norrland$Flod (Alternativet header=true betyder att den inlästa textfilen har rubriker.) Gör på motsvarande vis med den andra filen, som innehåller variablerna Matplats (Mätplats), Typ och Spardjup (Spårdjup). Det kan dock vara lämpligt att inte kalla både datasetet och variabeln för Spardjup, så välj ett annat namn på en av dem. Öppna ett hjälpfönster i HTML-format genom kommandot > help.start() där man kan klicka sig fram till olika hjälpsidor. Man kannär som helst få information om hur ett visst kommando eller funktion fungerar genom kommandot help enligt mönstret > help(mean) som ger information om hur man beräknar medelvärde i R. När man sedan är klar med laborationen eller vill göra ett uppehåll skriver man bara > q() Då kommer programmet att fråga om man vill spara sin workspace image, det vill säga alla variabler som man har definierat under körningen. Svarar man ja (genom att skriva y) så kommer allting att sparas och laddas in i R när man startar det nästa gång. - 1 -
SULFATHALT. Datasetet Norrland innehåller mätningar av sulfathalten (SO4) i fyra norrländska älvar. Man har mätt sex gånger om på varje älv. (Älvarnas namn står under rubriken Flod i datasetet, beroende på att tidigare versioner av R inte accepterade åäö i ett variabelnamn.) UPPGIFT 1. Gör en graf som visar sulfathalten i de fyra älvarna. Grafen bör även visa spridningen av värdena inom varje älv. Undersök med lämpligt test på nivån 0.05 om sulfathalten är densamma i alla fyra älvarna. UPPGIFT 2. Filen innehåller även de naturliga logaritmerna av sulfathalterna. Gör om grafen och testet för de logaritmerade värdena. UPPGIFT 3. Använd lämplig modelldiagnostik för att undersöka i vad mån modellerna i Uppgift 1 och 2 uppfyller modellförutsättningarna. Finns det skäl att använda de logaritmerade värdena snarare än de ursprungliga? UPPGIFT 4. Pröva ett icke-parametriskt test, fortfarande med signifikansnivån 0.05, för att avgöra om sulfathalten är densamma i alla fyra älvarna. Gör detta för såväl de ursprungliga som de logaritmerade värdena, och jämför resultaten. Du bör få exakt samma p-värde för båda testen. Förklara varför! UPPGIFT 5. Man kan även vara intresserad av att veta vilka älvar som skiljer sig signifikant från varandra, samtidigt som man vill behålla den övergripande signifikansnivån 0.05: om nollhypotesen är sann (dvs älvarna har i själva verket samma sulfathalt) så vill man att sannolikheten ska vara 0.05 för att man trots detta ska se minst en signifikant skillnad. a) Utför Bonferronis test på de logaritmerade värdena. b) Utför Tukeys test på de logaritmerade värdena. SPÅRDJUP I VÄG. Vi ska nu studera det andra datasetet, Spårdjup. Data härrör från mätningar av spårdjupet på 20 punkter på vägnätet. En väg slits nämligen hårdare på de delar av körbanan som oftast är i kontakt med bilhjulen: det uppstår spår i vägen. Djupet av dessa är ett mått på vägens kvalité, och en viktig indikator på var vägunderhåll bör sättas in. Syftet med mätningen är emellertid inte att ta reda på spårdjupet i sig, utan att jämföra olika typer av mätutrustning: man vill veta om mätutrustningarna skiljer sig åt, eller om de kan betraktas som utbytbara. Man har använt mätutrustning av sex olika typer, A, B, - 2 -
C, E, F och G. (Ursprungligen fanns en typ D också, men den togs av okänd anledning bort ur undersökningen.) Dessa har alltså mätt på samma 20 punkter på vägnätet. Dessa är numrerade 1 20 i datafilen. UPPGIFT 6. Beskriv hur detta kan betraktas som ett randomiserat blockförsök. Vilka är blocken? Det sägs ingenting om randomisering i texten ovan. Varför ska man randomisera, och hur skulle man kunna göra i det här fallet? UPPGIFT 7. Avgör med hjälp av lämpligt test om mätutrustningarna kan anses likvärdiga under förutsättning att randomisering har genomförts. Redovisning. Besvara uppgifterna skriftligen och bifoga några grafer som visar vad du har gjort och som illustrerar ditt resonemang. Bifoga den R-kod du använt för att lösa uppgifterna i en separat fil. Koden som lämnas in ska vara körbar och generera de resultat och figurer som presenteras i rapporten. Du kan själv kontrollera att koden ej ger några felmeddelanden med följande kommandon: > rm(list=ls()) > source("kod.r") där rm(list=ls()) tar bort alla sparade objekt i R-sessionen och source("kod.r") kör de kommandon som finns sparade i filen kod.r. - 3 -
R-TIPS. I. Boxplottar. Boxplottar kan åstadkommas på två olika sätt. Man kan skriva > boxplot(y ~ X) för att få en boxplot av Y för varje värde på X, men om X är en textvariabel så kan exakt samma sak åstadkommas med > plot(x,y) I båda fallen kan man lägga in de ursprungliga datapunkterna i efterhand genom att skriva > points(x,y) II. Variansanalys. För att utföra en variansanalys använder man kommandot lm (som står för linear model ) > Modell <- lm(y ~ X) Detta fungerar så länge X är en textvariabel, men om X antar siffervärden (något som gäller variabeln Mätplats i Spårdjupsdata), så kommer R istället att göra en regression (vilket vi kommer att behöva i Lab 3, men inte nu). För att tala om för R att X ska ses som en kategorivariabel skriver man, innan man gör lm-kommandot > X <- as.factor(x) Skriver man > Anovatab <- anova(modell) får man en ANOVA-tabell, och ur den kan man få fram den poolade variansen som medelkvadratsumman residual: > Varpool <- Anovatab[2,3] Randomiserade blockförsök med en intressant variabel X, och en blockfaktor Block analyseras via kommandot > Modell2 <- lm(y ~ X + Block) Tvåvägsförsök hanteras på samma vis. III. Residualer. Man får precis som för regression residualer genom kommandot > res <- Modell$residuals Om man sedan skriver > plot(x,res) > points(x,res) - 4 -
så får man, om X är en kategorivariabel, en boxplot för varje värde på X (dvs för varje grupp), med residualerna inlagda som punkter. Normalfördelningsplottar med inlagd linje får man genom kommandona > qqnorm(res) > qqline(res) Se även Statistisk analys GN. IV. Tukeys och Bonferronis test. Tukeys test med den övergripande signifikansnivån 0.05 (kan förstås ändras) ges av kommandona > Modell3 <- aov(y ~ X) > TukeyHSD(Modell3,ordered=FALSE,conf.level=0.95) Kommandot aov gör ungefär samma sak som lm, och kan i en del fall ersätta lm ovan. Observera att den utskrift man får för Tukeys test ger konfidensintervall för skillnaderna, snarare än test (lwr och upr står för intervallets undre respektive övre gräns), men intervallen kan ju också användas för att göra test. För Bonferronis test kan man använda pairwise.t.test. Man får syntaxen ur help(pairwise.t.test). Bör man använda pool.sd = TRUE här, eller pool.sd = FALSE? V. Icke- parametriska test. Icke-parametriska test i R för en- och tvåsidig indelning heter kruskal.test respektive friedman.test. VI. Kvantiler. t-kvantiler t α (ν), där ν är frihetsgraderna och α är den ensidiga signifikansnivån ges av > qt(α,ν,lower.tail=false) På liknande vis ges kvantiler Q α (a,ν) för Tukeys test ( studentized range distribution ) av > qtukey(α,a,ν,lower.tail=false) - 5 -