# 4. TYÖARKKI # # Kaksisuuntainen varianssianalyysi. Havainnollistetaan gl()-funktion käyttäö # tasapainoisen koesuunnitelman faktorien tasojen asettamisessa. Aineisto on # tiedostossa "Irish_It". The Independent lehti julkaisi aineiston (8.10.1992) # otsikolla "Irlantilaiset ja italialaiset ovat Euroopan seksistejä". # #Havainnot ovat prosenttilukuja, jotka kertovat, montako prosenttia #maan kansalaisista (erään tutkimuksen mukaan) uskoo miesten ja #naisten selviytyvän yhtä hyvin ammatissa A. # #86 85 82 86 Denmark #75 83 75 79 Netherlands #77 70 70 68 France #61 70 66 75 UK #67 66 64 67 Belgium #56 65 69 67 Spain #52 67 65 63 Portugal #57 55 59 64 W. Germany #47 58 60 62 Luxembourg #52 56 61 58 Greece #54 56 55 59 Italy #43 51 50 61 Ireland # # Ammatit ovat # bussin/junankuljettaja, kirurgi, asianajaja, kansanedustaja # # sink("A:\\TMallit\\Rscripts\\TA4.txt") # komennolla voidaan tulostus ohjata tiedostoon # # Teksti on poistettava tiedostosta, ennen kuin se voidaan lukea scan()-funktiolla p <- scan("A:\\TMallit\\Datat\\Irish_It.txt"); p occ <- scan(,"") #luetaan sarakkeiden ja rivien nimet bussik kirurgi asianajaja kans.ed. country <- scan(,"") Tanska Hollanti Ranska Englanti Belgia Espanja Portug Saksa Luxemb Kreikka Italia Irlanti OCC <- gl(4,1,48,labels=occ) #gl() on "generate level" käsky COUNTRY <- gl(12,4,48,labels=country) OCC; COUNTRY OCC <- factor(OCC) COUNTRY <- factor(COUNTRY) #faktorien (=selittäjien) määrittely # Kokeillaan erilaisia malleja. # Tutki tulostuksia ja kommentoi eroja ja yhtäläisyyksiä. ex2 <- lm(p ~ COUNTRY + OCC); anova(ex2) summary(ex2) names(ex2) ex2$coefficients lex2 <- lm(p ~ OCC + COUNTRY); anova(lex2) lex3 <- lm(p ~ OCC); lex3; summary(lex3) lex4 <- lm(p ~ COUNTRY); lex4; summary(lex4) lex5 <- lm(p ~ OCC + COUNTRY); lex5; summary(lex5,cor=T) # cor=T antaa parametrien estimattien korrelaatiot tapply(p,OCC,mean) tapply(p,COUNTRY,mean) ################## #Varianssianalyysi voidaan tehdä myös aov()-funktiolla #Esim. aov(p ~ OCC + COUNTRY) summary(aov(p ~ OCC + COUNTRY)) summary(aov(p ~ COUNTRY + OCC)) #Muuttujat eri järjestyksessä! ########## # Yleensä järjestys, jossa muuttujia lisätään malliin, on tärkeä # ja vaikuttaa tuloksiin. Tässä järjestyksellä ei ole väliä, koska # mjat ovat ortogonaalisia. Ortogonaalisuus tarkoittaa mm. sitä, että # selittäjän OCC estimaatit ovat samoja olipa mja COUNTRY mallissa tai # ei. ########## # # Jos malli on # E(Y_{ij})=\mu + \alpha_i + \beta_j # niin R:n oletusparametrisoinnissa \alpha_1 = 0 ja \beta_1 = 0 1.taso # on siis valittu perustasoksi, johon muita tasoja vertaillaan. # # Seuraavaksi hiukan grafiikkaa. boxplot(split(p,OCC)) boxplot(split(p,COUNTRY)) res <- ex2$residuals; fv <- ex2$fitted.values plot(fv,res) hist(resid(ex2)) qqnorm(resid(ex2));qqline(resid(ex2)) # pisteiden pitäisi asettua suurinpiirtein suoralle, jos hav. n-jakaumasta ########## #Hyödyllisiä funktioita ########## #seq(60, 80, 5) [1] 60 65 70 75 80 #seq(300, 100, -50) [1] 300 250 200 150 100 #1:5 [1] 1 2 3 4 5 #seq(0.3,2,0.2) [1] 0.3 0.5 0.7 0.9 1.1 1.3 1.5 1.7 1.9 #expand.grid(occ,country) #X <- array(expand.grid(occ,country)) #tehdään taulukko X (matriisi) ########## ls() # nähdään käytössä olevat objektit rm(ex2) # rm()-funktiolla voidaan siivota työtilaa # # ####################### #The Independent, 16 June 1999, under the headline #`Tourists get hidden costs warnings' gave the following table, for #`How the resorts compared' (costs in pounds) ###################### # # #Algarve 8.00 0.50 3.50 3.00 4.00 100.00 #CostaDelSol 6.95 1.30 4.10 12.30 4.10 130.85 #Majorca 10.25 1.45 5.35 6.15 3.30 122.20 #Tenerife 12.30 1.25 4.90 3.70 2.90 130.85 #Florida 15.60 1.90 5.05 5.00 2.50 114.00 #Tunisia 10.90 1.40 5.45 1.90 2.75 218.10 #Cyprus 11.60 1.20 5.95 3.00 3.60 149.45 #Turkey 6.50 1.05 6.50 4.90 2.85 263.00 #Corfu 5.20 1.05 3.75 4.20 2.50 137.60 #Sorrento 7.70 1.40 6.30 8.75 4.75 215.40 #Malta 11.20 0.70 4.55 8.00 4.80 87.85 #Rhodes 6.30 1.05 5.20 3.15 2.70 261.30 #Sicily 13.25 1.75 4.20 7.00 3.85 174.40 #Madeira 10.25 0.70 5.10 6.85 6.85 153.70 # # Taulukon sarakkeet (mjat) ovat # kolmen ruokalajin ateria, pullo olutta, Suntan aurinkoöljy, # Taksi (5km), filmirulla (24), auton vuokra (viikko) # data <- read.table("A:\\TMallit\\Datat\\Resorts.txt",row.names=1) products <- c("Meal","Beer","Sunoil","Taxi","Film","CarRent") #colnames(data) <- products pr <- as.matrix(data) pr <- as.vector(pr) PROD <- gl(6,14,84,labels=products) resorts <- row.names(data) RESORTS <- gl(14,1,84,labels=resorts) va2 <- lm(pr ~ PROD + RESORTS) lpr <- log(pr) lva2 <- lm(lpr ~ PROD + RESORTS) summary(lva2) summary(lm(lpr ~ PROD)) summary(lm(lpr ~ RESORTS)) tapply(pr,RESORTS,mean) tapply(pr,PROD,mean) boxplot(split(pr,PROD)) boxplot(split(pr,RESORTS)) #Jätetään CarRent pois products <- c("Meal","Beer","Sunoil","Taxi","Film") PROD <- gl(5,14,70,labels=products) resorts <- row.names(data) RESORTS <- gl(14,1,70,labels=resorts) pr <- as.matrix(data[,1:5]) pr <- as.vector(pr) boxplot(split(pr,PROD)) boxplot(split(pr,RESORTS)) # # Sovita malli # log(hinta) ~ paikka + tuote (1) # ja tulkitse tulokset. # Vertaile malliin # hinta ~ paikka + tuote (2) # Kumpi on sopivampi malli? # Miksi? Mikä on kallein paikkakunta? Kuinka johtopäätöksesi muuttuvat, jos # viimeinen sarake (Car Hire) jätetään aineistosta pois? # Tee samantapainen analyysi kuin Irish_It-aineistolle.