45 lines
1.4 KiB
R
45 lines
1.4 KiB
R
|
#' Density function for the GAL distribution
|
||
|
#' @param x vector of quantiles
|
||
|
#' @param param Parameter vector
|
||
|
#' @param type Choose between "mu" or "kappa" parametrization
|
||
|
#' @param log Logical for log-parameters
|
||
|
#' @return density at quantile x
|
||
|
#'
|
||
|
#' @author Francois Pelletier
|
||
|
dGAL <- function(x,param,type="mu",log=FALSE)
|
||
|
{
|
||
|
if(log)
|
||
|
{
|
||
|
if(type=="mu")
|
||
|
{
|
||
|
dGAL(x,changetypeGAL(param=param,log=log),type="kappa",log=log)
|
||
|
}
|
||
|
else if(type=="kappa")
|
||
|
{
|
||
|
num1 <- sqrt(2)*exp(sqrt(2)/(2*exp(param[2]))*(1/exp(param[3])-exp(param[3]))*(x-exp(param[1])))
|
||
|
denom1 <- sqrt(pi)*exp(param[2])^(exp(param[4])+1/2)*gamma(exp(param[4]))
|
||
|
num2 <- sqrt(2)*abs(x-exp(param[1]))
|
||
|
denom2 <- exp(param[3])+1/exp(param[3])
|
||
|
expo1 <- exp(param[4])-1/2
|
||
|
besselarg <- sqrt(2)/(2*exp(param[2]))*(1/exp(param[3])+exp(param[3]))*abs(x-exp(param[1]))
|
||
|
num1/denom1 * (num2/denom2)^expo1 * besselK(besselarg,expo1)
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if(type=="mu")
|
||
|
{
|
||
|
dGAL(x,changetypeGAL(param=param,log=log),type="kappa",log=log)
|
||
|
}
|
||
|
else if(type=="kappa")
|
||
|
{
|
||
|
num1 <- sqrt(2)*exp(sqrt(2)/(2*param[2])*(1/param[3]-param[3])*(x-param[1]))
|
||
|
denom1 <- sqrt(pi)*param[2]^(param[4]+1/2)*gamma(param[4])
|
||
|
num2 <- sqrt(2)*abs(x-param[1])
|
||
|
denom2 <- param[3]+1/param[3]
|
||
|
expo1 <- param[4]-1/2
|
||
|
besselarg <- sqrt(2)/(2*param[2])*(1/param[3]+param[3])*abs(x-param[1])
|
||
|
num1/denom1 * (num2/denom2)^expo1 * besselK(besselarg,expo1)
|
||
|
}
|
||
|
}
|
||
|
}
|