#1. Mjerena su vremena, izražena u sekundama, koja pojedina tropska riba zebrica, s i bez mutacije Spd, provodi u agresivnim aktivnostima tijekom 5 minuta kada je postavljena pred ogledalo. #Divlji tip: 0, 21, 22, 28, 60, 80, 99, 101, 106, 129, 168 #Mutacija Spd: 96, 97, 100, 127, 128, 156, 162, 170, 190, 195 #(a) Nacrtajte boxplot za usporedbu distribucija učestalosti bodova agresije u ove dvije skupine. Prema boxplotu, koji genotip pokazuje veću agresiju? # (b) Prema boxplotu, koji uzorak ima veći raspon? # (c) Koji uzorak ima veći interkvartil? # Testirajte kako dodatna jedinka s mjerenjem od 300 sekundi bez mutacije utječe na medijan i aritmetičku sredinu. #Rjesenje: #ucitamo podatke u vektore dt<-c(0, 21, 22, 28, 60, 80, 99, 101, 106, 129, 168) spd<-c(96, 97, 100, 127, 128, 156, 162, 170, 190, 195) #duljina vektora dt length(dt) #suma elemenata vektora dt sum(dt) #prosjek mean(dt) #medijan median(dt) #varijanca - u R-u se suma kvadrata dijeli s (broj podataka)-1=n-1 (tzv. uzoračka varijanca) #no mi želimo sumu kvadrata dijeliti s n n=length(dt) 1/n*sum((dt-mean(dt))^2) (n-1)/n*var(dt) #populacijska standardna devijacija - u R-u se isto dijeli s (n-1) pod korijenom sqrt((n-1)/n)*sd(dt) #raspon #range(dt) max(dt)-min(dt) #interkvartil IQR(dt) #karakteristična petorka quantile(dt) #npr. 10%-tni kvantil quantile(dt, 0.1) #boxplot podataka dt i spd boxplot(dt, spd, xlab=c("dt spd")) #Prema boxplotu, jedinke sa spd mutacijom pokazuju bitno veću agresivnost. #Za raspon skupa podataka gledamo visinu boxplota (uključivo i outliere) - veći raspon ima populacija bez mutacije. #Za interkvartil gledamo visinu pravokutnika u boxplotu - divlji tip ima veći interkvartil. dt mean(dt)#74 median(dt)#80 dt<-append(dt, 300) mean(dt)#92.83333 median(dt)#89.5 #Uočavamo kako je prosjek jako osjetljiv na dodavanje outliera u skup podtaka. Medijan je također #osjetljiv, ali ne toliko. #2. Ucitajte sljedeci skup podataka u R, preko naredbe visine =scan() #159 188 175 176 177 168 162 188 #183 187 187 162 184 161 180 169 #195 171 170 199 181 169 189 191 #172 182 183 178 180 165 185 202 #183 187 188 182 163 179 178 188 #i) Odredite mu artimeticku sredinu, medijan i kvartile. Koristite funkcije mean i summary, #ii) nacrtajte pripadni histogram (koristite hist(visine, prob=T)) i dijagram kutije s brkovima. Koristite naredbu boxplot, #iii) nadjite mu 0.1 kvantil (10%tni kvantil), te varijancu i standardnu devijaciju. Koristite naredbe quantile, var i sd. #Da bismo podatke učitali u R iz vanjske datoteke preko naredbe scan(), ona mora biti u #glavnom direktoriju, koji se može provjeriti naredbom getwd(). getwd() visine=scan("visine.txt") visine #aritm. sredina mean(visine) #medijan median(visine) #kvartili quantile(visine, 0.25) quantile(visine, 0.75) #kvantili se mogu pročitati i iz outputa naredbe summary() summary(visine) #histogram histogram<-hist(visine, prob=TRUE)#spremanjem onog što nam vrati naredba hist() u varijablu histogram, ne dobivamo samo grafički prikaz histograma u okviru za plotove, #nego možemo pomoću histogram$breaks, histogram$counts, histogram$density (ako smo stavili prob=T) dobiti i informacije o granicama razreda, frekvencijama razreda #i visinama stupića iznad pojedinog razreda histogram histogram$breaks #granice razreda - po defaultu [1.granica, 2.gr], (2.gr, 3. gr], ..., (predzadnja gr., zadnja gr.] #da bismo u razredima uključivali lijevi, a isključivai desni rub (osim u zadnjem razredu, gdje su obje granice uključene) #zadajemo right=FALSE #hist(visine, prob=T, right=F) histogram$counts #frekvencije razreda histogram$density #visine stupića #dijagram pravokutnika boxplot(visine) #10%-tni kvantil quantile(visine, 0.1) #varijanca n=lenght(visine) (n-1)/n*var(visine) #populacijska standardna devijacija sqrt((n-1)/n)*sd(visine) #3. S obzirom na genotip jedinke jedne vrsti jelena, Subgenus Rusa su klasificiran u 3 razdvojena genotipa. Podaci o genotipu su dani #1 1 3 1 3 1 1 2 2 2 2 2 2 3 2 1 1 2 2 1 2 2 3 2 2 3 3 2 3 2 3 3 2 2 1 3 3 1 2 2 2 3 2 1 1 3 2 3 3 2 1 3 1 2 3 1 2 3 2 1 2 3 3 2 1 3 1 2 2 2 #i) ucitajte ih u R i prebrojite. Koliko ih je ukupno? # ii) prebrojite koliko je jedinki za svaki od tri genotipa. Koristite naredbu table. #iii) nacrtajte stupcasti dijagram naredbom barplot(table(x)). jeleni=scan("jeleni.txt") length(jeleni)#Ukupno je 70 jelena. table(jeleni)#18 jelena s genotipom 1, 31 s genotipom 2, 21 s genotipom 3 #stupcasti dijagram - korektniji naziv za histogram za diskretne podatke barplot(table(jeleni)) #1. Mjerena je duljina zivota (u danima) dvije vrste pauka i dobiveni su sljedeci podatci: #1. vrsta: 230, 70, 190, 243, 175, 184, 201, 91, 156, 212, 195 #2. vrsta: 177, 184, 200, 145, 130, 7, 165, 199, 13, 133, 166 #a) Koja vrsta ima veci raspon? Koja vrsta ima veci interkvantil? # b) Nacrtajte boxplot za svaku vrstu i usporedite. #c) Odredite aritmeticku sredinu i medijan svake vrste. #d) Odredite broj takav da je 23% podataka vece od njega i 77% podataka manje. vrsta1<-c( 230, 70, 190, 243, 175, 184, 201, 91, 156, 212, 195) #ucitamo podatke u vektore vrsta2<-c(177, 184, 200, 145, 130, 7, 165, 199, 13, 133, 166) #dijagram pravokutnika boxplot(vrsta1, vrsta2) #Vrsta 2 ima veći raspon, a također i veći interkvartil. To možemo provjeriti i uz: #raspon max(vrsta1)-min(vrsta1)#173 max(vrsta2)-min(vrsta2)#193 #max(x)-min(x) za vektor x (tj. njegov raspon) možemo dobiti i pomoću naredbe diff(range(x)) - range(x) vraća vektor koji #sadrži minimalni i maksimalni element iz x, a diff()(engl. difference) #je naredba koja vraća vektor razlika elemenata proslijeđenog vektora: prvi-drugi, drugi-treci, itd. #interkvartil IQR(vrsta1)#41 IQR(vrsta2)#49 #aritmeticka sredina i medijan mean(vrsta1)#177 median(vrsta1)#190 mean(vrsta2)# 138.0909 median(vrsta2)#165 #ove smo vrijednosti mogli očitati i uz naredbu summary() summary(vrsta1) summary(vrsta2) #77%-tni kvantil quantile(vrsta1, 0.77) quantile(vrsta2, 0.77) #2. Promatrano je 60 osoba. Mjeren je broj otkucaja srca po minuti. Sto je vise moguce pokusajte opisati dobivene podatke: # 66, 72, 60, 77, 82, 69, 81, 92, 59, 110, 99, 102, 92, 60, 94, 115, 104, 58, 85, 91, 104, 78, 94, 69, 64, 63, 65, 67, 61, 94, 76, 70, 83, 86, 99, 64, 78, 73, 91, 72, 65, 98, 100, 64, 88, 90, 75, 78, 71, 92, 83, 86, 84, 94, 93, 90, 80, 90, 76, 88 #ucitamo podatke u vektor otkucaji<-c(66, 72, 60, 77, 82, 69, 81, 92, 59, 110, 99, 102, 92, 60, 94, 115, 104, 58, 85, 91, 104, 78, 94, 69, 64, 63, 65, 67, 61, 94, 76, 70, 83, 86, 99, 64, 78, 73, 91, 72, 65, 98, 100, 64, 88, 90, 75, 78, 71, 92, 83, 86, 84, 94, 93, 90, 80, 90, 76, 88) n=length(otkucaji)#60 mean(otkucaji)#81.73333 quantile(otkucaji) #populacijska varijanca (n-1)/n*var(otkucaji)#197.5622 #populacijska stnd. dev. sqrt((n-1)/n)*sd(otkucaji)# 14.05568 range(otkucaji)#58 115 IQR(otkucaji)#22.25 boxplot(otkucaji) #iako bi se podaci mogli svrstati pod diskretne(jer ne poprimaju neprebrojivo vrijednosti), kako ih ima puno, ipak cemo ih podijeliti u razrede i crtati #histogram kao da se radi o neprekidnim podacima radi bolje preglednosti (kad bismo podatke crtali naredbom bocplot (table(otkucaji))/length(otkucaji)), #dobiveni stupcasti dijagram bi imao jako puno stupića i time bio nepregledan) #s obzirom da nije zadan broj razreda, koristit cemo Sturgesovu formulu k=1+ceiling(log(n, 2)) c=(max(otkucaji)-min(otkucaji))/k#moze i c=diff(range(otkucaji))/k granice=seq(min(otkucaji), max(otkucaji), by=c)#možemo i zadati broj granica razreda, tj. ne moramo računati korak c ako koristimo naredbu #granice=seq(min(otkucaji), max(otkucaji), length.out=k+1) - ova naredba vraća vektor koji sadrži k+1 granicu (time zapravo omeđujemo k razreda) #tako da mu je najmanji element min(otkucaji), a najveci max(otkucaji), te je raspon (max-min) podijeljen na jednake dijelove (razredi će biti jednako široki) hist(otkucaji,breaks=granice, right=F, prob=T) #Zadatak: Promatrani su čopori vukova i brojeno je koliko je bilo mladunaca u pojedinom čoporu. Nakon 20 pregleda ustanovljeno je da je broj vukova bio: # 2, 1, 0, 0, 1, 1, 0, 0, 3, 0, 0, 1, 0, 0, 4, 0, 0, 3, 2, 0. #Nacrtajte histogram. vukovi<-c(2, 1, 0, 0, 1, 1, 0, 0, 3, 0, 0, 1, 0, 0, 4, 0, 0, 3, 2, 0) #diskretni podaci n=length(vukovi)#20 n table(vukovi) #kako bismo na x-osi ispod svakog stupca dobili samo jedan podatak, koristimo naredbu barplot #no, time ćemo dobiti stupce samo iznad onih vrijednosti koje se pojavljuju u skupu podataka barplot(table(vukovi))#apsolutne frekvencije barplot(table(vukovi)/n)#relativne frekv. #usporedi s hist(vukovi) #Zadatak: Na 16 maslačaka mjerena je visina stabljike: #19.9, 15.6, 20.8, 16.6, 13.9, 22.3, 15.7, 18.3, #17.2, 14.2, 15.8, 25.2, 20.9, 13.1, 17.4, 19.1. #Nacrtajte histogram izmjerenih visina. Svrstajte ih u k=5 razreda. maslačci<-c(19.9, 15.6, 20.8, 16.6, 13.9, 22.3, 15.7, 18.3, 17.2, 14.2, 15.8, 25.2, 20.9, 13.1, 17.4, 19.1) k=5 c=(max(maslačci)-min(maslačci))/k c#2.42 granice<-seq(from=min(maslačci), to=max(maslačci), by=c)#moze i granice=seq(min(maslačci), max(maslačci), length.out=k+1) #histogram hist(maslačci, breaks=granice, right=F, prob=T) #Zadatak: Bilježen je broj zeba nađenih na različitim staništima u Keniji. Dobivena su sljedeća mjerenja: #16, 16, 16, 12, 16, 15, 15, 17, 15, 16, 15, 16. #Odredite: aritmetičku sredinu, medijan, mod, standardnu devijaciju, gornji i donji kvartil, 40%-tni kvantil. #Nacrtajte dijagram pravokutnika i histogram. zebe<-c(16, 16, 16, 12, 16, 15, 15, 17, 15, 16, 15, 16) n=length(zebe) #aritm. sredina mean(zebe) #medijan median(zebe) table(zebe)#mod=16 - naredbom table dobivamo apsolutnu frekvenciju za svaki podatak, pa iz toga možemo ocitati mod #populacijska standardna devijacija sqrt((n-1)/n)*sd(zebe) #donji kvartil quantile(zebe, 0.25) #gornji kvartil quantile(zebe, 0.75) #40%-tni kvantil quantile(zebe, 0.4) #dijagram pravokutnika boxplot(zebe) #histogram - za diskretne podatke je bolje reći stupčasti dijagram (u stupcastom dijagramu imamo iznad svakog podatka stupić koji # je njegova relativna(ako dijelimo s n kao u donjoj naredbi)) frekvencija, dok u histogramu imamo razrede te je povrsina stupića # iznad svakog razreda (ako smo stavili opciju prob=T) njegova relativna frekvencija barplot(table(zebe)/n)#preskače stupce za 13 i 14 #usporedi s hist(zebe, prob=T) #jedno moguće rješenje - da dobijemo stupiće za sve (cijele, jer su podaci cijeli brojevi) brojeve od 12 do 17 - ako bi rucno trebalo nacrtati stupcasti dijegram za #podatke, trebalo bi staviti vrijednosti od najmanjeg do najveceg podatka, i ne crtati stupiće iznad onih vrijednosti koje se ne pojavljuju (ali ih ukljuciti na x-osi) library(ggplot2) df<-data.frame(masa=c(12, 13, 14, 15, 16, 17), freq=c(1, 0, 0, 4, 6, 1)) df #vidi help(ggplot) ggplot(df,aes(df$masa, df$freq/n))+geom_bar(stat="identity",width=1) #Zadatak: Mjerenjima sistoličkog krvnog tlaka na 9 pacijenata dobiveni su sljedeći rezultati: #112, 128, 108, 129, 125, 153, 155, 132, 137. #Odredite: aritmetičku sredinu, medijan, standardnu devijaciju, gornji i donji kvartil i 60%-tni kvantil podataka. #Nacrtajte dijagram pravokutnika i histogram (broj razreda=k=4). tlak<-c(112, 128, 108, 129, 125, 153, 155, 132, 137) #prosjek mean(tlak) #medijan median(tlak) n=length(tlak) #populacijska stnd. dev. sqrt((n-1)/n)*sd(tlak) #kvantili koji nas zanimaju quantile(tlak, c(0.25, 0.75, 0.6))#možemo zadati vektor za kvantile koje želimo dobiti (upiše se p/100) #dijagram pravokutnika boxplot(tlak) k=4 c=(max(tlak)-min(tlak))/k granice<-seq(min(tlak), max(tlak), by=c)#moze i granice=seq(min(tlak), max(tlak), length.out=k+1) hist(tlak, breaks=granice, right=F, prob=T)