plotDist <- function(u, 
            naslov="Histogram of u",...) {
 par(mfrow = c(2,1))
 hist(u, col = "lightblue", prob = TRUE,main=naslov)
 plot(u, rank(u)/length(u), ylab = "P",...)
 }

Preizkus.

u <- c(rnorm(50, 10, 2), 
       rnorm(20, sd=2, mean=10),
       rnorm(20,14,3))
plotDist(u)

plotDist(u,pch=16,col="red",main="Polne rdeče pike")

par(mfrow=c(1,1))
u <- sort(u)

P <- rank(u)/length(u)
range(u)
## [1]  3.867808 20.927526
range(P)
## [1] 0.01111111 1.00000000
P[1] <- 0  # da zagotovim pokrivanje intervala [0,1]
plot(u,rank(u),type="b")

head(cbind(u,P))
##             u          P
## [1,] 3.867808 0.00000000
## [2,] 5.770910 0.02222222
## [3,] 6.877098 0.03333333
## [4,] 7.137322 0.04444444
## [5,] 7.336601 0.05555556
## [6,] 7.341369 0.06666667
plot(u,P,type="b")

plot(u[1:10],P[1:10],type="b")
approx(u,P,6.5)
## $x
## [1] 6.5
## 
## $y
## [1] 0.02954557
x <- c(6.5)
points(approx(u,P,x),col="red",pch=16)
x <- seq(5.5,8,length=5)
points(approx(u,P,x),col="blue",pch=16)

approx(u,P,x)$y # P koordinate za risanje
## [1] 0.01905885 0.02577888 0.03205670 0.06972236 0.15576308

Objekti vrste list

h <- hist(u)

str(h)
## List of 6
##  $ breaks  : num [1:11] 2 4 6 8 10 12 14 16 18 20 ...
##  $ counts  : int [1:10] 1 1 12 28 28 9 4 4 1 2
##  $ density : num [1:10] 0.00556 0.00556 0.06667 0.15556 0.15556 ...
##  $ mids    : num [1:10] 3 5 7 9 11 13 15 17 19 21
##  $ xname   : chr "u"
##  $ equidist: logi TRUE
##  - attr(*, "class")= chr "histogram"
h$mids
##  [1]  3  5  7  9 11 13 15 17 19 21
points(h$mids,h$counts,pch=17,col="blue",type="o")

# izbor drugega elementa
h[[2]]
##  [1]  1  1 12 28 28  9  4  4  1  2
h$counts
##  [1]  1  1 12 28 28  9  4  4  1  2
n <- 500
p <- runif(n)
ru <- approx(P,u,p)$y
plot(u,P,type="l")
points(ru,p,pch=16)

Slika porazdelitve generiranih vrednosti

plotDist(u,naslov="Izvorni podatki")

plotDist(ru,naslov="Generirani podatki")

## Slika ujemanja kvantilov

qqplot(u,ru)

Porazdelitvi u inru se kar dobro ujemata.

Primerjava z normalno porazdelitvijo

X <- rnorm(1000)
qqnorm(X)
qqline(X,col="red")

Za naša generirana števila:

qqnorm(ru)

Naš vzorec 500 števil, ki so v vektorju ru, ni normalno porazdeljen.