Navodimo osnovne metode modeliranja slučajnih veličina i njihovu primenu u okviru programskog paketa R.

\(\color{red}{\text{Modeliranje diskretnih slučajnih veličina sa konačno mnogo vrednosti}}\)

Generišemo slučajan broj u iz intervala (0,1) korišćenjem runif(1) funkcije. Funkcija rapodele diskretne slučajne veličine je funkcija sa skokovima koja postiže vrednosti u intervalu (0,1). Tačnije, ona postiže vrednosti \(0, p_1, p_1+p_2, ..., p_1+..+p_{n-1}, 1\). Broj koji je postigla slučajna veličina \(X\) određujemo u zavisnosti od toga kom intervalu (od n+1 njih na koje vrednosti koje uzima funkcija raspodele dele y-osu) pripada u. Dakle, slučajna veličina sa diskretnom raspodelom je uzela vrednost \(x_i\) ako je \(p_1+..+p_{i-1}<u<p_1+..+p_i\).

Objašnjenje: verovatnoća da je u iz gore navedenog intervala je bas \(p_i\), a to je i verovatnoća da \(X\) uzme vrednost \(x_i\).


\(\color{red}{\text{Bernulijeva raspodela}}\)
Bernuli_random <- function(p) 
{
  u<-runif(1)
  if(u > 1-p)
    x<-1
  if(u < 1-p)
    x<-0
  return (x)
}
Bernuli_random(0.8)
## [1] 1
a<-vector()
for(i in 1:20)
  a<-c(a,Bernuli_random(0.1))
a
##  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

\(\color{red}{\text{Binomna raspodela}}\)
Binom_random<-function(n,p)
{
  a<-vector()
  for(i in 1:n)
    a<-c(a,Bernuli_random(p))
  return(sum(a))
}

set.seed(1)
Binom_random(10,0.5)
## [1] 6

\(\color{red}{\text{Modeliranje diskretnih slučajnih veličina koje postižu prebrojivo mnogo vrednostii}}\)


\(\color{red}{\text{Geometrijska raspodela}}\)
Geom_random <- function(p, delta){
  n0 <- floor(log(delta)/log(1-p))+1
  X <- 1:n0 #vrednosti koje uzima zasecena
  P <- vector() #verovatnoce sa kojima zasecena sl vel uzima odg vrednosti 
  P<-((1-p)^(X-1))*p #suma nije 1 jer smo zasekli
  #zato cemo promeniti poslednji clan cime dobijamo to zasecanje
  P[n0]=1-sum(P[1:(n0-1)])
  gama<-runif(1)
  pom<-0
  for(i in 1:n0){
    if(gama>pom && gama<=pom+P[i])
      x<-X[i]
    pom<-pom+P[i]
  }
  return (x)
}
set.seed(1)
Geom_random(0.3,0.01)
## [1] 1

\(\color{red}{\text{Negativna binomna}}\)

Negativna binomna NB(p,r) - broj pokušaja do r-tog uspeha. Slučajan broj iz ove raspodele može se dobiti kao zbir r slučajnih brojeva iz geomtrijske G(p) raspodele.


\(\color{red}{\text{Puasonova raspodela}}\)
Puasonova_random<-function(lambda,delta)
{
  n0_pois<-function(n,lambda)
  {
    return (lambda^(n+1)*exp(-lambda)*(n+2)/(factorial(n+1)*(n+2-lambda)))
  }
  n0=max(ceiling(lambda)-2,1)
  while(n0_pois(n0,lambda)>delta)
  {
    n0=n0+1
  }
  
  #repeat{
  #  n0=n0+1
  #  if(n0_pois(n0,lambda)<delta){
  #    break
  #  }
  #}
  #ovim smo nasli n0, sada kao malopre
  X <- 0:n0 #vrednosti koje uzima zasecea
  P <- vector() #sa kojim verovatnocama zasecena uzima 
  P<-lambda^X*exp(-lambda)/factorial(X) #suma nije 1 jer smo zasekli
  #zato cemo promeniti poslednji clan cime dobijamo to zasecanje
  P[n0]=1-sum(P[1:(n0-1)])
  gama<-runif(1)
  if(gama<=P[1])
    x<-X[1]
  pom<-0
  for(i in 1:length(X)){
    if(gama>pom && gama<=pom+P[i])
      x<-X[i]
    pom<-pom+P[i]
  }
  return (x)
}
set.seed(1)
Puasonova_random(2,0.01)
## [1] 1

\(\color{red}{\text{Modeliranje apsolutno neprekidnih slučajnih veličina }}\)

Ako X ima funkciju raspodele F, tada slučajna veličina F(X) ima U[0,1] raspodelu. Ako X ima U[0,1] raspodelu, tada \(F^{-1}(X)\) ima funkciju raspodele F.

Ovo tvrdjenje nam daje mogućnost da generišemo slučajne brojeve iz onih apsolutno neprekidnih raspodela čija se funkcija raspodele može izraziti analitički.


\(\color{red}{\text{Eksponencijalna raspodela}}\)
Exp_random <- function(lambda)
{
  gama<-runif(1)
  x<-(-1/lambda)*log(1-gama)
  return(x)
}
set.seed(1)
Exp_random(3)
## [1] 0.102859

\(\color{red}{\text{Erlangova raspodela}}\)

Erlangova (gama) raspodela gama(lambda,n) se može predstaviti u obliku zbira n nezavisnih eksponencijalno raspodeljenih slučajnih veličina sa parametrom lambda.

Erlang_random<-function(n,lambda)
{
  x<-0
  for(i in 1:n)
  {
    gama<-runif(1)
    x<-x+(-1/lambda)*log(1-gama)
  }
  return(x)
}
set.seed(1)
Erlang_random(10,2)
## [1] 5.778018

Još neke raspodele apsolutno neprekidnog tipa koje se mogu modelirati metodom inverzije su Vejbulova, Frešeova i Gumbelova. Pogledajte njihove funkcije raspodela i napišite funkcije za generisanje slučajnih brojeva iz tih raspodela! Napišite odgovorajaće kodove i u C-u.