R/rozklad.R

Defines functions dgraniczny pgraniczny qgraniczny rgraniczny

Documented in dgraniczny pgraniczny qgraniczny rgraniczny

#' Wartość gęstości naszego rozkładu granicznego.
#' 
#' @param mAlpha funkcja zadająca alfate momenty rozkładu pojedynczego kroku.
#' 
#' @return function that returns values of  
#' 
#' @export
#' 

dgraniczny <- function(mAlpha) {
  force(mAlpha)
  function(x, alpha) {
    sapply(x, function(y) {
      if(!is.finite(y)) return(NA)
      else if(y <= 0) 0
      else alpha*(mAlpha(alpha)^2)*y^(-(2*alpha + 1))*exp(-mAlpha(alpha)*y^(-alpha))
    })
  }
}


#' Wartość dystrybuanty naszego rozkładu granicznego.
#' 
#' @param mAlpha funkcja zadająca alfate momenty rozkładu pojedynczego kroku.
#' 
#' @return function funkcja zwracająca wartości dystr. dla zadanych punktów i wart. alfa. 
#' 
#' @export
#' 

pgraniczny <- function(mAlpha) {
  force(mAlpha)
  function(x, alpha) {
    sapply(x, function(y) {
      if(!is.finite(y)) return(NA)
      else if(y <= 0) 0
      else (1 + mAlpha(alpha)*y^(-alpha))*exp(-mAlpha(alpha)*y^(-alpha))
    })
  }
}


#' Kwantyle rzędu p z naszego rozkładu granicznego.
#' 
#' @param mAlpha funkcja zadająca alfate momenty rozkładu pojedynczego kroku.
#' 
#' @return function funkcja zwracająca kwantyle odpowiedniego rzędu dla zadanego alfa. 
#' 
#' @export
#' 

qgraniczny <- function(mAlpha) {
  force(mAlpha)
  function(p, alpha) {
    naszaDystr <- function(x) pgraniczny(mAlpha)(x, alpha)
    sapply(p, function(q) {
	     if(!is.finite(q)) return(NA)
	     else uniroot({function(x) naszaDystr(x) - q}, lower = 0, upper = 10^80)$root
    })
  }
}


#' Losowa liczba z naszego rozkładu.
#' 
#' @param mAlpha funkcja zadająca alfate momenty rozkładu pojedynczego kroku.
#' 
#' @return function funkcja zwracająca n losowych liczb z rozkładu z par. alfa. 
#' 
#' @export
#' 

rgraniczny <- function(mAlpha) {
  force(mAlpha)
  function(n, alpha) {
    sapply(1:n, {function(x)
	   qgraniczny(runif(1, 0, 1), mAlpha, alpha)   
    })
  }
}
mstaniak/AnalizaZanieczyszczen documentation built on Aug. 26, 2019, 6:18 p.m.