#################### # R-harjoitukset 1 # # viikko 36, 2007 # #################### # Ohjelman kotisivut: # http://r-project.org ############ # teht. 1. # ############ 3+1 1-7 5*5 4/2 # neliöjuuri: sqrt(9) # potenssiin korotus: 5^2 # luonnollinen logaritmi: log(10) # 10-kantainen logaritmi: log10(10) x <- 5 y <- x+5 z <- (x+y)^2 x y z ############ # teht. 2. # ############ # lukujonojen määritystä # a) a1 <- rep(1,100); a1 a2 <- rep(c(1,0),50); a2 # b) b1 <- seq(1,10); b1 b2 <- seq(0,10,0.2); b2 # c) c <- c(a1,a2,b1,b2); c # d) d <- c(a1[1:10],a2[1:10],b1[1:10],b2[1:10]); d # e) aineisto <- data.frame(a1,a2); aineisto ############ # teht. 3. # ############ # kertoman laskeminen R:llä # 7! ei onnistu ?factorial factorial(7) # tällä onnistuu myös erikoistapaus 0-kertoma: factorial(0) # vaihtoehtoinen tapa: kertoma on gammafunktion erikoistapaus # gamma(n+1)=n! eli gamma(8) antaa luvun 7 kertoman: gamma(8) # vastaavasti gamma(1) antaa luvun 0 kertoman: gamma(1) # huomautus: prod(1:7) # antaa saman tuloksen kuin factorial(7), koska 7! = 1*2*3*4*5*6*7 ############ # teht. 4. # ############ # kirjan/luentorungon esimerkin 1.2 aineiston syöttäminen R:ään x <- c(18,12,14,11,24,14,24,22,24,10,8,19,21,22,24,24,24,6,24,21) # x-vektorin alkioiden lkm: length(x) # aineisto järjestettynä: sort(x) # a) summary(x) sd(x) var(x) mean(x) median(x) min(x); max(x) # b) luokat <- c(5.5,10.5,13.5,seq(16.5,24.5,2)) # voidaan antaa myös: luokat <- c(5.5,10.5,13.5,16.5,18.5,20.5,22.5,24.5) hist(x,luokat) # vertaa kirja/luentorunko, kuvio 1.1 # kuvioon voidaan nimetä akselit, voidaan myös otsikoida: hist(x,luokat,xlab="pistemäärä",ylab="tiheys",main="koepistemäärän histogrammi (n=20)") # c) frekvenssit <- table(cut(x,luokat)); frekvenssit ############ # teht. 5. # ############ # jatkoa luentorungon esimerkin 1.2 aineiston käytölle: empiirinen kertymäfunktio # a) Fn <- ecdf(x) plot(Fn, verticals= TRUE, do.p = FALSE) # tai sama saadaan myös: plot.ecdf(x, verticals= TRUE, do.p = FALSE) # ekf voidaan piirtää myös ilman "yhdistäviä" vertikaalisia viivoja: plot(Fn, do.p = FALSE) # tai vastaavasti: plot.ecdf(x, do.p = FALSE) # b) # P(22.5,24.5)=Fn(24.5)-Fn(22.5) Fn(24.5)-Fn(22.5) # toinen tapa: # which-funktion avulla saadaan vektorinpaikat, joissa annettu ehto toteutuu. # length-funktion avulla saadaan vektorin alkioiden lukumäärä. # siis Fn(24.5)-Fn(22.5) saadaan laskettua myös seuraavasti: (length(which(x<=24.5))-length(which(x<=22.5)))/length(x) ############ # teht. 6. # ############ # Pojat.txt # haetaan aineisto suoraan internetistä: pojat <- read.table("http://mtl.uta.fi/tilasto/mmm/Datat/Pojat.txt",header=T,skip=7) # liitetään aineiston muuttujat työtilaan: attach(pojat) # aineiston muuttujien nimet näkyviin: names(pojat) # jos aineiston muuttujia ei ole liitetty työtilaan attach-komennolla, # muuttujiin voidaan viitata $-merkillä, esim. pojat$ppit1 # a) summary(pojat) sd(pojat) # b) # muuttujan ppit1 arvot järjestettynä: sort(ppit1) luokat <- seq(160,210,10) hist(ppit1,luokat) frekvenssit <- table(cut(ppit1,luokat)); frekvenssit # c) plot(ppit1,ppit2) # akselit voidaan myös nimetä halutulla tavalla: plot(ppit1,ppit2,xlab="ppit1-muuttuja",ylab="ppit2-muuttuja") # d) # rivisummat: apply(pojat,1,sum) # sarakesummat: apply(pojat,2,sum) # e) # uuden muuttujan muodostaminen: keskiarvo <- (ppit1+ppit2)/2 # uuden muuttujan lisääminen aineistoon: pojat2 <- data.frame(pojat,keskiarvo) ; pojat2