Professional Documents
Culture Documents
I 3. Vježba (R) D
I 3. Vježba (R) D
XS
2
S
9
M 30
L
16
XL 7
XXL 3
Graki prikaite podatke pomou
(a) stupastog dijagrama
(b) stukturalnog kruga
(c) Pareto dijagrama
Rjeenje:
(a)
>
>
>
>
>
>
>
imena<-c('XS','S','M','L','XL','XXL')
f<-c(2,9,30,16,7,3)
fr<-f/sum(f)
kf<-cumsum(f)
kfr<-cumsum(fr)
majice<-data.frame(imena,f,kf,fr,kfr)
majice
imena f kf
fr
kfr
1
XS 2 2 0.02985075 0.02985075
2
S 9 11 0.13432836 0.16417910
3
M 30 41 0.44776119 0.61194030
4
L 16 57 0.23880597 0.85074627
5
XL 7 64 0.10447761 0.95522388
6 XXL 3 67 0.04477612 1.00000000
## Nacrtajmo histogram
> barplot(f,col=rainbow(length(f)),legend.text=imena, main='Histogram broja
prodanih majica po veliini')
(b)
> postotci<-round(f/sum(f)*100)
> imena1<-paste(imena,postotci, sep=", ")
> imena1<-paste(imena1,"%")
30
10
15
20
25
XS
S
M
L
XL
XXL
XS
XL
XXL
M, 45 %
S, 13 %
XS, 3 %
XXL, 4 %
XL, 10 %
L, 24 %
M 45%,%
S 13%,%
XS 3%,%
XXL 4%,%
XL 10%,%
L 24%,%
(c)
>names(f)<-imena
>f<-data.frame(f)
>library(qcc)
>pareto.chart(f,main='Pareto dijagram broja prodanih majica po veliini')
Pareto chart analysis for f
Frequency Cum.Freq. Percentage Cum.Percent.
M
30.000000 30.000000 44.776119
44.776119
L
16.000000 46.000000 23.880597
68.656716
S
9.000000 55.000000 13.432836
82.089552
XL
7.000000 62.000000 10.447761
92.537313
XXL 3.000000 65.000000
4.477612
97.014925
XS
2.000000 67.000000 2.985075
100.000000
## ili ako zelimo u nekoj drugoj boji
>pareto.chart(f,col=terrain.colors(6),main='Pareto dijagram
broja prodanih majica po veliini')
## ostale mogue boje su: rainbow(), heat.colors(), topo.colors()
100%
70
60
75%
50
50%
40
30
XS
XXL
XL
0%
10
25%
20
Frequency
Cumulative Percentage
## ako zelimo dodati vertikalnu liniju koja nam oznacava mjesto gdje kumulativna
suma dostize 75% od najvece vrijednosti koristimo sljedecu naredbu
> abline(h=(sum(f)*.75),col="red",lwd=3)
100%
70
60
75%
50
50%
40
30
Zadatak 2.
XS
XXL
XL
0%
10
25%
20
Frequency
Cumulative Percentage
sljedei podaci:
Boja oiju Frekvencija
Plava
10
Smea
11
Crna
2
Zelena
7
Odredite tablicu relativnih i kumulativnih frekvencija. Skicirajte histogram,
strukturalni krug, te Pareto diagram za dane podatke.
0 0 1 1 0 0 3 1 0 2
0 1 0 0 4 0 0 3 2 0
(a)
> def<-c(0,0,1,1,0,0,3,1,0,2,0,1,0,0,4,0,0,3,2,0)
> def.f<-table(def)
> def.f
def
0 1 2 3 4
11 4 2 2 1
> def.fr<-def.f/sum(def.f)
> def.fr
def
0
1
2
3
4
0.55 0.20 0.10 0.10 0.05
> def.kf<-cumsum(def.f)
> def.kf
0 1 2 3 4
11 15 17 19 20
> def.kfr<-cumsum(def.fr)
> def.kfr
0
1
2
3
4
0.55 0.75 0.85 0.95 1.00
> defektni<-cbind(def.f,def.kf,def.fr,def.kfr)
> defektni
def.f def.kf def.fr def.kfr
0
11
11
0.55
0.55
1
4
15 0.20
0.75
2
2
17 0.10
0.85
3
2
19 0.10
0.95
4
1
20 0.05
1.00
(b)
> plot(def.f,type="b",lty=5,pch=10, col="dark blue", xlab="Broj
defektnih proizvoda u seriji od 20", ylab="Frekvencija")
> plot(def.fr,type="b")
> plot(def.kfr,type="b")
##ili
> plot(def.f,type="b")
> plot(def.fr,type="b")
> plot(def.kfr,type="s")
Zadatak 4. U 16 drava izmjerena je prosjena konzumacija maslinovog
ulja (u litrama) po glavi stanovnika u toku jedne godine i dobiveni su podaci
>podaci<-c(9.9,5.6,10.8,6.3,3.9,11.2,5.7,8.4,7.2,4.2,5.8,15.2,10.9,3.1,7.4,9.1)
> range(podaci)
[1] 3.1 15.2
> k<-round(1+3.3*log(length(podaci))/log(10))
> k
[1] 5
> r<-(max(podaci)-min(podaci))/k
> r
[1] 2.42
> razredi<-seq(3.0,15.5,by=2.5)
> razredi
[1] 3.0 5.5 8.0 10.5 13.0 15.5
## svakom od podataka pridruzimo razred u kojem se nalazi koristeci
funkciju 'cut'
> podaci.cut<-cut(podaci,razredi,right=F)
> podaci.cut
[1] [8,10.5) [5.5,8)
[10.5,13) [5.5,8)
[3,5.5) [10.5,13) [5.5,8)
[8] [8,10.5) [5.5,8)
[3,5.5) [5.5,8)
[13,15.5) [10.5,13) [3,5.5)
[15] [5.5,8) [8,10.5)
Levels: [3,5.5) [5.5,8) [8,10.5) [10.5,13) [13,15.5)
> podaci.f<-table(podaci.cut)
> podaci.f
podaci.cut
[3,5.5) [5.5,8) [8,10.5) [10.5,13) [13,15.5)
3
6
3
3
1
> cbind(podaci.f)
podaci.f
[3,5.5)
3
[5.5,8)
6
[8,10.5)
3
[10.5,13)
3
[13,15.5)
1
> podaci.fr<-podaci.f/sum(podaci.f)
> podaci.fr
podaci.cut
[3,5.5) [5.5,8) [8,10.5) [10.5,13) [13,15.5)
0.1875
0.3750
0.1875
0.1875
0.0625
> podaci.kf<-cumsum(podaci.f)
> podaci.kfr<-cumsum(podaci.fr)
## postavljamo da se podaci ispisuju zaokruzeni na 1 znamenku
(kada je broj u normaliziranom obliku)
> old=options(digits=1)
> cbind(podaci.f,podaci.fr,podaci.kf,podaci.kfr)
podaci.f podaci.fr podaci.kf podaci.kfr
[3,5.5)
3
0.19
3
0.2
[5.5,8)
6
0.38
9
0.6
[8,10.5)
3
0.19
12
0.8
[10.5,13)
3
0.19
15
0.9
[13,15.5)
1
0.06
16
1.0
>options(old)
## Nacrtajmo histogram
> hist(podaci,breaks=razredi,col='light green',border='green',
xlab="prosjena konzumacija maslinovog ulja(l)",ylab="Frekvencija",
main="Histogram prosjene konzumacije maslinovog ulja")
## Nacrtajmo histogram povrsine 1
hist(podaci,breaks=razredi, freq=FALSE, col='light green',border='green',
xlab="prosjena konzumacija maslinovog ulja(l)",ylab="Frekvencija",
main="Histogram prosjene konzumacije maslinovog ulja")
## Nacrtajmo histogram relatoivnih frekvencija
h = hist(podaci,breaks=razredi,col='light green',border='green',
xlab="prosjena konzumacija maslinovog ulja(l)",ylab="Frekvencija",
main="Histogram prosjene konzumacije maslinovog ulja")
h$density = h$counts/sum(h$counts)
plot(h,freq=F)
## Nacrtajmo graf relativnih frekvencija
>sredine<-(razredi[2:length(razredi)]+razredi[1:length(razredi)-1])/2
> sredine
[1] 4.25 6.75 9.25 11.75 14.25
> plot(sredine,podaci.fr,xlab="Prosjena konzumacija maslinovog
ulja u l ", ylab="Relativne frekvencije","b")
>
## Nacrtajmo graf kumulante relativnih frekvencija
> kfr<-c(0,podaci.kfr)
> plot(razredi,kfr,"b",xlab="Prosjena konzumacija maslinovog
ulja u l",ylab="kumulanta relativnih frakvencija")
3
2
1
0
Frekvencija
10
12
14
16
Relativne frekvencije
10
12
14
1.0
0.8
0.6
0.4
0.2
0.0
10
12
14
16
Zadatak 5.
(a)
> podaci<-c(44,63,68,84,46,72,76,106,81,88,72,49,64,75,47)
> stem(podaci)
The decimal point is 1 digit(s) to the right of the |
4 | 4679
6 | 3482256
8 | 148
10 | 6
> library(epicalc)
> dotplot(floor(podaci/10),pch=20,main="Dijagram toaka")
10
5
Frequency
15
20
Dijagram tocaka
10
11
Zadatak 6.
Zadani su podaci
23.67 10.2 3.40 4.43 15.51 5.67 16.87 12.55 56.8 0.23
1.11 12.45 3.57 24.71 5.91 33.5 52.42 30.99 2.55 11.98
12
24 28 22 26 24
27 26 25 26 23
30 26 29 25 27
24 26 25 24 27
## Ucitajmo podatke
>podaci<-c(24,28,22,26,24,27,26,25,26,23,30,26,29,25,27,24,26,25,24,27)
> podaci
[1] 24 28 22 26 24 27 26 25 26 23 30 26 29 25 27 24 26 25 24 27
## Odredimo srednju vrjednost (aritmeticku sredinu) podataka
> mean(podaci)
[1] 25.7
## Odredimo harmonijsku sredinu podataka
library(psych)
> harmonic.mean(podaci)
[1] 25.55752
## Odredimo geometrijsku sredinu podataka
> geometric.mean(podaci)
[1] 25.62846
## Odredimo medijan podataka
> median(podaci)
[1] 26
## Odredimo mod podataka
## Prvo moramo definirati funkciju statmod
> statmod<-function(x){
+ z<-table(as.vector(x))
+ names(z)[z==max(z)]
+ }
> statmod(podaci)
[1] "26"
## Odredimo standardnu devijaciju
> sd(podaci)
13
[1] 1.976174
## Odredimo varijancu
> var(podaci)
[1] 3.905263
## Odredimo raspon podataka
> max(podaci)-min(podaci)
[1] 8
## Odredimo maksimalni podatak
> max(podaci)
[1] 30
## Odredimo minimalni podatak
> min(podaci)
[1] 22
## Odredimo donji kvartil
> quantile(podaci,0.25,type=6)
25%
24
## Drugi nacin odredivanja medijana
> quantile(podaci,0.5,type=6)
50%
26
## Odredimo gornji kvartil
> quantile(podaci,0.75,type=6)
75%
27
## Odredimo interkvartil
> IQR(podaci)
[1] 3
## Nacrtajmo dijagram pravokutnika
> boxplot(podaci)
14
30
28
26
24
22
15
xi
[19.59, 19.60i
[19.60, 19.61i
[19.61, 19.62i
[19.62, 19.63i
[19.63, 19.64i
[19.64, 19.65i
[19.65, 19.66i
[19.66, 19.67i
[19.67, 19.68i
[19.68, 19.69i
fi
3
9
10
11
15
10
5
6
2
1
> sredine<-seq(19.595,19.685,0.01)
> f<-c(3,9,10,11,15,10,5,6,2,1)
> library(Hmisc)
> wtd.mean(sredine,f)
[1] 19.63236
> wtd.var(sredine,f)
[1] 0.0004450509
> sqrt(wtd.var(sredine,f))
[1] 0.02109623
> wtd.quantile(sredine,f,probs=c(0,0.25,0.5,0.75,1))
0%
25%
50%
75% 100%
19.595 19.615 19.635 19.645 19.685
> wtd.Ecdf(sredine,f)
$x
[1] 19.595 19.595 19.605 19.615 19.625 19.635 19.645 19.655 19.665 19.675
[11] 19.685
$ecdf
[1] 0.00000000 0.04166667 0.16666667 0.30555556 0.45833333 0.66666667
[7] 0.80555556 0.87500000 0.95833333 0.98611111 1.00000000
> F<-wtd.Ecdf(sredine,f)
>plot(F$x,F$ecdf,'l',xlab='gustoa materijala',
ylab='kumulanta relativnih frekvencija')
> abline(h=0.75,col='dark red')
16
0.8
0.6
0.4
0.2
0.0
1.0
> abline(h=0.25,col='orange')
> abline(h=0.5,col='red')
19.60
19.62
19.64
19.66
19.68
gustoca materijala
17
5 3 4 4 2 5 3 3 2 2 2 5 4
4 1 2 3 3 3 3 4 4 2 1 2 2
>
>
>
>
ocjene<-c(5,3,4,4,2,5,3,3,2,2,2,5,4,1,2,2,3,3,3,3,4,4,2,1,2,2)
n<-lenght(ocjene)
f<-data.frame(table(ocjene))
f
ocjene Freq
1
1
2
2
2
9
3
3
7
4
4
5
5
5
3
>f<-data.frame(f,f[2]/sum(f[2]))
> f
ocjene Freq Freq.1
1
1
2 0.08
2
2
9 0.35
3
3
7 0.27
4
4
5 0.19
5
5
3 0.12
> hist(ocjene,probability=TRUE,breaks=c(0.5,1.5,2.5,3.5,4.5,5.5,6.5),
xlab="ocjene",ylab="relativne frekvencije",main="Histogram",col="red")
> mean(ocjene)
[1] 3
> sd(ocjene)
[1] 1
> var(ocjene)
[1] 1
> summary(ocjene)
Min. 1st Qu. Median
Mean 3rd Qu.
Max.
18
1
2
3
> quantile(ocjene,0.25)
25%
2
> quantile(ocjene,0.5)
50%
3
> median(ocjene)
[1] 3
> quantile(ocjene,0.75)
75%
4
>boxplot(ocjene)
19
Zadatak 12. Podaci o cijenama litre mlijeka sakupljene na 100 prodajnih mjesta dane su u datoteci 'mlijeko' . Nacrtajte histogram, poligon
relativnih frekvencija i kumulantu za dane podatke.
Rjeenje:
> x<-scan('mlijeko')
Read 100 items
> x
[1] 5.05 6.37 4.50
[16] 4.85 3.91 5.04
[31] 7.35 7.00 5.69
[46] 4.01 5.42 3.87
[61] 4.91 5.76 4.76
[76] 5.69 5.26 4.81
[91] 6.51 5.33 7.42
3.70
6.39
6.62
4.47
5.19
5.71
5.14
4.72
5.22
5.36
4.32
5.66
4.57
6.24
6.58
4.74
5.94
4.97
6.80
5.79
5.66
5.46
6.07
4.09
6.09
5.48
6.28
6.74
4.82
5.65
5.60
4.84
5.27
5.01
5.61
5.46
4.87
6.15
4.38
6.16
6.28
6.35
5.61
6.45
6.25
5.57
5.35
5.61
4.32
4.75
6.46
5.40
5.96
3.97
6.17
4.42
6.78
7.19
6.60
5.20
4.07
Rjeenje:
20
5.59
5.60
6.27
4.92
5.27
4.06
5.05
5.19
7.48
6.01
5.58
4.80
5.88
5.16
4.88
5.89
4.96
7.15
> N<-sum(y$f)
> N
[1] 494
## Odredimo sredine razreda
> s<-(y$a+y$b)/2
> s
[1] 20.25 20.75 21.25 21.75 22.25 22.75 23.25 23.75 24.25 24.75 25.25
## Odredimo aritmeticku sredinu uzorka (uocimo da smo mogli koristiti
funkcije wtd.mean, wtd.quantile, wtd.Ecdf iz biblioteke Hmisc)
> as<-crossprod(s,y$f)/N
> as
[,1]
[1,] 22.48583
## Odredimo karakteristicnu petorku
## Buduci da nemamo "`pravi" uzorak, prvo formiramo uzorak u kojem ce se
svako od opazanja iz pojedinog razreda biti positovjeceno sa sredinom razreda
> y.uzorak<-rep(s,y$f)
> summary(y.uzorak)
Min. 1st Qu. Median
Mean 3rd Qu.
Max.
20.25 21.75
22.25 22.49
23.25 25.25
## Odredimo relativne frekvencije razreda
> fr<-y$f/N
> fr
[1] 0.016194332 0.030364372 0.101214575 0.188259109 0.172064777 0.202429150
[7] 0.135627530 0.093117409 0.040485830 0.018218623 0.002024291
## Odredimo kumulantu relativnih frekvencija razreda
> Fr<-cumsum(fr)
## Dodajmo u tablicu y stupac s relativnim frekvencijama i
kumulantom relativnih frekvencija
> y<-data.frame(y,fr,Fr)
> y
a
b f
fr
Fr
1 20.0 20.5
8 0.016194332 0.01619433
2 20.5 21.0 15 0.030364372 0.04655870
3 21.0 21.5 50 0.101214575 0.14777328
4 21.5 22.0 93 0.188259109 0.33603239
5 22.0 22.5 85 0.172064777 0.50809717
6 22.5 23.0 100 0.202429150 0.71052632
7 23.0 23.5 67 0.135627530 0.84615385
8 23.5 24.0 46 0.093117409 0.93927126
9 24.0 24.5 20 0.040485830 0.97975709
21
0.2
0.1
0.0
Density
0.3
0.4
20
21
22
23
24
25
y.uzorak
22
0.15
0.10
0.05
0.00
relativna frekvencija
0.20
21
22
23
24
25
Kapacitet kondenzatora
0.8
0.6
0.4
0.2
0.0
1.0
20
21
22
23
24
25
Kapacitet kondenzatora
23
24
0, 8
1, 0
1, 2
1, 2
1, 5
Rjeenje:
25
26
> x1.fr<-x1.f/sum(x1.f)
> cbind(x1.f,x1.fr)
x1.f x1.fr
[-7.1,-4.7)
9 0.009
[-4.7,-2.3) 33 0.033
[-2.3,0.1)
69 0.069
[0.1,2.5)
169 0.169
[2.5,4.9)
219 0.219
[4.9,7.3)
239 0.239
[7.3,9.7)
156 0.156
[9.7,12.1)
67 0.067
[12.1,14.5) 30 0.030
[14.5,16.9)
8 0.008
[16.9,19.3)
1 0.001
## Nacrtajmo poligon relativnih frekvencija
> length(r)
[1] 12
> s<-(r[2:12]+r[1:11])/2
> s
[1] -5.9 -3.5 -1.1 1.3 3.7 6.1 8.5 10.9 13.3 15.7 18.1
> plot(s,x1.fr,'l',col='dark red',lwd=2,
main='Poligon relativnih frekvencija podataka iz dat1' )
##Nactrajmo histogram
> hist(x1,breaks=r,col='orange',border='white',
main='Histogram podataka iz dat1')
## Odredimo koeficijent asimetrije i zaobljenosti
> library(e1071)
> a3=skewness(x1)
> a3
[1] -0.0118604
> a4=kurtosis(x1)+3
> a4
[1] 3.05184538
## Buduci da je koeficijent asimetrije a3 blizu 0 zakljucujemo
da je distribucija simetricna, a buduci da je koeficijent
zaobljenosti a4 blizu 3 zakljuujemo da je distribucija
normalno zaobljena.
## Ucitajmo podatke iz dat2
27
x1.fr
10
15
150
100
0
50
Frequency
200
10
15
20
x1
> x2<-read.table('dat2')
> x2<-x2[,1]
## Odredimo opseg uzoreka
>length(x2)
[1] 1000
## Ispisimo prvih 10 podataka da utvrdimo o kojem se tipu vrijednosti radi
> x2[1:10]
28
[1] 1 4 5 3 9 4 4 4 6 4
## Odredimo frekvencije pojavljivanja odredenih vrijednosti
> f<-data.frame(table(x2))
## Odredimo relativne frekvencije
> f<-data.frame(f,fr=f$Freq/sum(f$Freq))
> f
x2 Freq
fr
1 0
10 0.010
2 1
29 0.029
3 2
92 0.092
4 3 129 0.129
5 4 179 0.179
6 5 171 0.171
7 6 143 0.143
8 7
98 0.098
9 8
74 0.074
10 9 40 0.040
11 10
22 0.022
12 11
5 0.005
13 12
4 0.004
14 13
2 0.002
15 14
2 0.002
## Odredimo aritmeticku sredinu, medijan i mod
> mean(x2)
[1] 5.044
> median(x2)
[1] 5
## Uocimo da je mod=4, te da je mod< medijan < aritmeticka sredina
## Nacrtajmo poligon relativnih frekvencija
> plot(0:14,f$fr,'b',xlab='podaci iz dat2',ylab='relativne frekvencije',
col='dark green',main='Poligon relativnih frekvencija za podatke iz dat2',lwd=2,l
## Nacrtajmo histogram
> hist(x2,breaks=seq(-0.5,14.5,by=0.5),col='light green', border='white',
main='Histogram podataka iz dat2')
## Odredimo koeficijent asimetrije i zaobljenosti
> skewness(x2)
[1] 0.4649913
> kurtosis(x2)+3
[1] 3.257166
## Buduci da je koeficijent asimetrije a3 > 0 zakljucujemo da je
distribucija pozitivno asimetrina, a buduci da je koeficijent
29
0.15
0.10
0.05
0.00
relativne frekvencije
10
12
14
podaci iz dat2
30
100
50
0
Frequency
150
10
15
x2
31