Nekoliko primjera u kojima ćemo da generišemo uzorak iz poznate raspodjele i da poredimo oblik histograma sa teorijskom gustinom. (Koristimo histogram iz paketa lattice
)
library ( lattice )
# Uzorak obima 500 iz standardne normalne raspodjele
x <- rnorm (500)
hist (x, prob =TRUE , xlab ="",ylab ="",col ='coral1',border ='bisque', main="N(0,1)")
curve ( dnorm (x ) ,add =TRUE , lwd =3, col ='cornflowerblue ')
# Uzorak obima 1000 iz eksponencijalne raspodjele sa parametrom 4
y <- rexp (1000 ,4)
hist (y, prob =TRUE , xlab ="",ylab ="",col ='cornflowerblue',border ='bisque' , main="Exp(1)")
curve ( dexp (x ,4) ,add =TRUE ,lwd =3, col ='coral1')
# Uzorak iz uniformne U(0 ,1) raspodjele obima 500
z <- runif (500)
hist (z, prob =TRUE , xlab ="",ylab ="",col ='darksalmon',border ='bisque', main="U(0,1)")
curve ( dunif (x),add =TRUE , lwd =3, col ='cadetblue')
Neka je \(S_n=X_1+...+X_n\), gdje su \(X_i, i=1,...,n\) nezavisne slučajne veličine sa \(\mathcal{E}(2)\) raspodelom. Generisati slučajnu veličinu \(S_n\). Generisati \(N=1000\) brojeva iz iste raspodjele kao \(S_n\) i nacrtati njihov histogram. Da li je rezultat očekivan?
s_n <- function(n) {
x <- rexp(n, rate = 2)
sum(x)
}
N <- 1000
n <- 100
s <- replicate(N, s_n(n))
hist(s,
probability = T,
col = 'lightblue',
main = "")
# Znamo da je EX=1/lambda, Dx=1/lambda^2
EX <- 1 / 2
DX <- 1 / 4
# Hocemo da standardizujemo podatke
s.z <- (s - n * EX) / sqrt(n * DX)
hist(s.z,
probability = T,
col = 'lightblue',
main = "")
curve(dnorm(x),
add = T,
lwd = 2,
col = 'coral')
# Za domaci: Uraditi ovaj zadatak za razlicite primere raspodela koje zadovoljavaju
# uslove CGT.
Grafičko predstavljanje podataka koje ima za cilja razumijevanje oblika raspodjele, na sličan način kao histogram.
Da bismo konstruisali poligon frekvencija, treba na početku da podijelimo podatke na neke klase (intervale), baš kao kod histograma. Potom se označi tačka na grafiku čija x koordinata ima vrijednost sredine intervala, a y koordinata je frekvencija odgovarajuće klase. Poligon dobijamo tako što dužima spojimo te označene tačke. Možemo uključiti jednu klasu prije najmanje vrijednosti medju podacima i jednu posle najveće. Na taj način dobićemo da poligon dodiruje x osu sa obe strane.
Pokazaćemo poligon na primjeru podataka iz baze discoveries
koja sadrži podatke o broju velikih izuma i naučnih otkrića između 1860. i 1959. godine.
discoveries
## Time Series:
## Start = 1860
## End = 1959
## Frequency = 1
## [1] 5 3 0 2 0 3 2 3 6 1 2 1 2 1 3 3 3 5 2 4 4 0 2
## [24] 3 7 12 3 10 9 2 3 7 7 2 3 3 6 2 4 3 5 2 2 4 0 4
## [47] 2 5 2 3 3 6 5 8 3 6 6 0 5 2 2 2 6 3 4 4 2 2 4
## [70] 7 5 3 3 0 2 2 2 1 3 4 2 2 1 1 1 2 1 4 4 3 2 1
## [93] 4 1 1 1 0 0 2 0
Po formuli dobijamo da treba da imamo otprilike 7 kategorija, pa za širinu intervala možemo uzeti 2 i dodajemo još dvije klase na krajevima.
range(discoveries)
## [1] 0 12
# Granice intervala
cut.points<-seq(-2 , 14 , by = 2)
# Tabele frekvencija
disc.cut<-cut(discoveries, cut.points, right=FALSE)
disc.freq<-table(disc.cut)
cbind(disc.freq)
## disc.freq
## [-2,0) 0
## [0,2) 21
## [2,4) 46
## [4,6) 19
## [6,8) 10
## [8,10) 2
## [10,12) 1
## [12,14) 1
# Crtamo histogram i poligon frekvencija
hist(discoveries,
breaks=cut.points,
col="slategray3",
border = "dodgerblue4",
right=FALSE,
xlab = "x-osa",
main = "Histogram")
plot(disc.freq, type="b", col="orange", main="Poligon frekvencija")
Na osnovu oblika prethodnih grafičkih prikaza možemo da primijetimo da raspodjela ne bi trebalo da bude normalna, štaviše nije ni simetrična. Postoje neki parametri koji nam ukazuju na asimetričnost raspodjele. Jedan od njih je koeficijent asimetrije preko momenata raspodjele.
\[ \gamma=\frac{E(X-EX)^3}{[E(X-EX)^2]^{\frac{3}{2}}} \]
Kada imamo podatke kojima ne znamo raspodjelu, ne možemo tačno da izračunamo ovu vrijednost, pa bi onda odgovarajući uzorački koeficijent asimetrije bio:
\[ b_1=\frac{\frac{1}{n}\sum\limits_{i=1}^n(X_i-\overline{X}_n)^3}{[\frac{1}{n}\sum\limits_{i=1}^{n}(X_i-\overline{X}_n)^2]^{\frac{3}{2}}} \]
Ako je ovaj koeficijent jednak nuli, raspodjela je simetrična. Ako je pozitivan, raspodjela podataka je pomjerena udesno, tj. desni rep raspodjele je duži od lijevog. Suprotno, ako je manji od nule, raspodjela je pomjerena ulijevo.
Drugi parametar koji odredjuje oblik raspodjele je koeficijent spoljštenosti, tj. standardizovani četvrti moment i on utiče na ponašanje repa raspodjele. Za normlanu raspodjelu, vrijednost ovog parametra je 3, pa ako želimo da mjerimo odstupanje od normalne raspodjele, definišemo koeficijent spoljštenosti sa
\[ \gamma_2=\frac{E(X-EX)^4}{[E(X-EX)^2]^2} - 3\]
Odgovarajući uzorački koeficijent bio bi:
\[ b_2=\frac{\frac{1}{n}\sum\limits_{i=1}^n(X_i-\overline{X}_n)^4}{[\frac{1}{n}\sum\limits_{i=1}^{n}(X_i-\overline{X}_n)^2]^{2}} \]
U R-u, u paketu “moments” postoje funkcije koje računaju ove parametre iz uzorka.
#install.packages("moments")
library(moments)
## Warning: package 'moments' was built under R version 3.2.5
# Racunamo koeficijente asimetrije i spljostenosti, redom, za podatke koji su prikazani gore
skewness(discoveries)
## [1] 1.225943
kurtosis(discoveries)
## [1] 5.090969
Prikažimo na istom grafiku gustinu normalne raspodjele i gustinu ocijenjenu iz ovog uzorka.
plot(density((discoveries-mean(discoveries))/sd(discoveries)), col="green", main="Gustine")
curve(dnorm(x),add = T, col="red")
boxplot(discoveries,col = "pink")
Imamo bazu koja sadrži podatke o kvalitetu vazduha mjerenom u Njujorku, od maja do septembra 1973.
airquality
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8
## 9 8 19 20.1 61 5 9
## 10 NA 194 8.6 69 5 10
## 11 7 NA 6.9 74 5 11
## 12 16 256 9.7 69 5 12
## 13 11 290 9.2 66 5 13
## 14 14 274 10.9 68 5 14
## 15 18 65 13.2 58 5 15
## 16 14 334 11.5 64 5 16
## 17 34 307 12.0 66 5 17
## 18 6 78 18.4 57 5 18
## 19 30 322 11.5 68 5 19
## 20 11 44 9.7 62 5 20
## 21 1 8 9.7 59 5 21
## 22 11 320 16.6 73 5 22
## 23 4 25 9.7 61 5 23
## 24 32 92 12.0 61 5 24
## 25 NA 66 16.6 57 5 25
## 26 NA 266 14.9 58 5 26
## 27 NA NA 8.0 57 5 27
## 28 23 13 12.0 67 5 28
## 29 45 252 14.9 81 5 29
## 30 115 223 5.7 79 5 30
## 31 37 279 7.4 76 5 31
## 32 NA 286 8.6 78 6 1
## 33 NA 287 9.7 74 6 2
## 34 NA 242 16.1 67 6 3
## 35 NA 186 9.2 84 6 4
## 36 NA 220 8.6 85 6 5
## 37 NA 264 14.3 79 6 6
## 38 29 127 9.7 82 6 7
## 39 NA 273 6.9 87 6 8
## 40 71 291 13.8 90 6 9
## 41 39 323 11.5 87 6 10
## 42 NA 259 10.9 93 6 11
## 43 NA 250 9.2 92 6 12
## 44 23 148 8.0 82 6 13
## 45 NA 332 13.8 80 6 14
## 46 NA 322 11.5 79 6 15
## 47 21 191 14.9 77 6 16
## 48 37 284 20.7 72 6 17
## 49 20 37 9.2 65 6 18
## 50 12 120 11.5 73 6 19
## 51 13 137 10.3 76 6 20
## 52 NA 150 6.3 77 6 21
## 53 NA 59 1.7 76 6 22
## 54 NA 91 4.6 76 6 23
## 55 NA 250 6.3 76 6 24
## 56 NA 135 8.0 75 6 25
## 57 NA 127 8.0 78 6 26
## 58 NA 47 10.3 73 6 27
## 59 NA 98 11.5 80 6 28
## 60 NA 31 14.9 77 6 29
## 61 NA 138 8.0 83 6 30
## 62 135 269 4.1 84 7 1
## 63 49 248 9.2 85 7 2
## 64 32 236 9.2 81 7 3
## 65 NA 101 10.9 84 7 4
## 66 64 175 4.6 83 7 5
## 67 40 314 10.9 83 7 6
## 68 77 276 5.1 88 7 7
## 69 97 267 6.3 92 7 8
## 70 97 272 5.7 92 7 9
## 71 85 175 7.4 89 7 10
## 72 NA 139 8.6 82 7 11
## 73 10 264 14.3 73 7 12
## 74 27 175 14.9 81 7 13
## 75 NA 291 14.9 91 7 14
## 76 7 48 14.3 80 7 15
## 77 48 260 6.9 81 7 16
## 78 35 274 10.3 82 7 17
## 79 61 285 6.3 84 7 18
## 80 79 187 5.1 87 7 19
## 81 63 220 11.5 85 7 20
## 82 16 7 6.9 74 7 21
## 83 NA 258 9.7 81 7 22
## 84 NA 295 11.5 82 7 23
## 85 80 294 8.6 86 7 24
## 86 108 223 8.0 85 7 25
## 87 20 81 8.6 82 7 26
## 88 52 82 12.0 86 7 27
## 89 82 213 7.4 88 7 28
## 90 50 275 7.4 86 7 29
## 91 64 253 7.4 83 7 30
## 92 59 254 9.2 81 7 31
## 93 39 83 6.9 81 8 1
## 94 9 24 13.8 81 8 2
## 95 16 77 7.4 82 8 3
## 96 78 NA 6.9 86 8 4
## 97 35 NA 7.4 85 8 5
## 98 66 NA 4.6 87 8 6
## 99 122 255 4.0 89 8 7
## 100 89 229 10.3 90 8 8
## 101 110 207 8.0 90 8 9
## 102 NA 222 8.6 92 8 10
## 103 NA 137 11.5 86 8 11
## 104 44 192 11.5 86 8 12
## 105 28 273 11.5 82 8 13
## 106 65 157 9.7 80 8 14
## 107 NA 64 11.5 79 8 15
## 108 22 71 10.3 77 8 16
## 109 59 51 6.3 79 8 17
## 110 23 115 7.4 76 8 18
## 111 31 244 10.9 78 8 19
## 112 44 190 10.3 78 8 20
## 113 21 259 15.5 77 8 21
## 114 9 36 14.3 72 8 22
## 115 NA 255 12.6 75 8 23
## 116 45 212 9.7 79 8 24
## 117 168 238 3.4 81 8 25
## 118 73 215 8.0 86 8 26
## 119 NA 153 5.7 88 8 27
## 120 76 203 9.7 97 8 28
## 121 118 225 2.3 94 8 29
## 122 84 237 6.3 96 8 30
## 123 85 188 6.3 94 8 31
## 124 96 167 6.9 91 9 1
## 125 78 197 5.1 92 9 2
## 126 73 183 2.8 93 9 3
## 127 91 189 4.6 93 9 4
## 128 47 95 7.4 87 9 5
## 129 32 92 15.5 84 9 6
## 130 20 252 10.9 80 9 7
## 131 23 220 10.3 78 9 8
## 132 21 230 10.9 75 9 9
## 133 24 259 9.7 73 9 10
## 134 44 236 14.9 81 9 11
## 135 21 259 15.5 76 9 12
## 136 28 238 6.3 77 9 13
## 137 9 24 10.9 71 9 14
## 138 13 112 11.5 71 9 15
## 139 46 237 6.9 78 9 16
## 140 18 224 13.8 67 9 17
## 141 13 27 10.3 76 9 18
## 142 24 238 10.3 68 9 19
## 143 16 201 8.0 82 9 20
## 144 13 238 12.6 64 9 21
## 145 23 14 9.2 71 9 22
## 146 36 139 10.3 81 9 23
## 147 7 49 10.3 69 9 24
## 148 14 20 16.6 63 9 25
## 149 30 193 6.9 70 9 26
## 150 NA 145 13.2 77 9 27
## 151 14 191 14.3 75 9 28
## 152 18 131 8.0 76 9 29
## 153 20 223 11.5 68 9 30
Hoćemo da na osnovu box-plot dijagrama zaključimo nešto o autlajerima.
boxplot(airquality)
Vidimo da se oni javljaju kod obilježja Ozon, pa ćemo to obilježje da izdvojimo.
#library(plotly)
Ozon<-airquality$Ozone
#plot_ly(x=Ozon, type="box")
range(Ozon, na.rm = T)
## [1] 1 168
median(Ozon, na.rm = T) # ! na.rm izostavlja NA vrijednosti iz uzorka
## [1] 31.5
q1<-quantile(Ozon, na.rm = T)[2]
q3<-quantile(Ozon, na.rm = T)[4]
qr<-IQR(Ozon, na.rm = T)
q1
## 25%
## 18
q3
## 75%
## 63.25
q1-1.5*qr # f1
## 25%
## -49.875
q3+1.5*qr # f3
## 75%
## 131.125
q1-3*qr # F1
## 25%
## -117.75
q3+3*qr # F3
## 75%
## 199
max(Ozon[Ozon<q3+1.5*qr], na.rm = T) # a3
## [1] 122