Funkcie v R

?rnorm
?runif
?rexp
set.seed(123)
x <- rexp(10^3, rate = 1/2)
hist(x)

mean(x)
## [1] 2.059959

Príklady na rovnomerné rozdelenie

priklad1 <- function(a, b){
  l <- runif(1, min = a, max = b)
  m <- runif(1, min = a, max = b)
  # pravdepodobnosť, že bod L je bližšie k bodu M ako k bodu A
  return(abs(l-m) < abs(l-a))
}

simulacie <- replicate(10^5, priklad1(1, 3))
prop.table(table(simulacie))
## simulacie
##   FALSE    TRUE 
## 0.24951 0.75049
simulacie <- replicate(10^5, priklad1(0, 5))
prop.table(table(simulacie))
## simulacie
##   FALSE    TRUE 
## 0.24915 0.75085
# vypocet na tabuli -> pravd. nezavisi od a, b -> mozeme zobrat (0, 1)

simulacie <- replicate(10^6, priklad1(0, 1))
prop.table(table(simulacie))
## simulacie
##    FALSE     TRUE 
## 0.249764 0.750236
priklad3 <- function(){
  r <- runif(1, 0, 60)
  j <- runif(1, 0, 60)
  return(abs(r-j) < 10)
}

simulacie <- replicate(10^5, priklad3())
prop.table(table(simulacie))
## simulacie
##   FALSE    TRUE 
## 0.69389 0.30611

Príklady na normálne a exponenciálne rozdelenie

priklad1 <- function(n){
  ziarovky <- rexp(n, rate = 1)
  return(sum(ziarovky))
}

simulacie <- replicate(10^5, priklad1(10))
hist(simulacie)

mean(simulacie)
## [1] 9.99236
simulacie <- replicate(10^5, priklad1(20))
hist(simulacie)

simulacie <- replicate(10^5, priklad1(100)) # centralna limitna veta
hist(simulacie)

simulacie <- replicate(10^5, priklad1(1))
hist(simulacie)

simulacie <- replicate(10^5, priklad1(2))
hist(simulacie)

priklad2 <- function(){
  x <- rnorm(1, mean = 20, sd = 30)
  return(abs(x) > 50)
}
priklad2()
## [1] FALSE
simulacie <- replicate(10^5, priklad2())
prop.table(table(simulacie))
## simulacie
##   FALSE    TRUE 
## 0.83065 0.16935
?pnorm
# pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
# distribution function
1 - (pnorm(50, mean = 20, sd = 30) - pnorm(-50, mean = 20, sd = 30)) # 0.1684706
## [1] 0.1684706

Dôležitý príklad: dosadzujeme náhodné čísla do distribučnej funkcie

x <- rnorm(10^4, mean = 20, sd = 30)
y <- pnorm(x, mean = 20, sd = 30)
hist(y)

x <- rexp(10^4, rate = 10)
y <- pexp(x, rate = 10)
hist(y)

x <- rexp(10^4, rate = 1)
y <- pexp(x, rate = 1)
hist(y)

x <- rnorm(10^4) # N(0,1)
y <- pnorm(x)
hist(y)