38 lines
1,012 B
R
38 lines
1,012 B
R
|
# Method of moments with a twist for GAL distribution
|
||
|
#
|
||
|
# Author: Francois Pelletier
|
||
|
#
|
||
|
# LGPL 3.0
|
||
|
###############################################################################
|
||
|
|
||
|
|
||
|
#' Method of moments with a twist for GAL distribution
|
||
|
#'
|
||
|
#' Estimating the parameters of GAL distribution using a
|
||
|
#' twist on method of moments by Seneta (2004)
|
||
|
#' @param data Sample
|
||
|
#' @param type Choose between "mu" or "kappa" parametrization
|
||
|
#' @param log Logical for log-parameters
|
||
|
#' @return a vector of estimated parameters
|
||
|
#'
|
||
|
#' @author Francois Pelletier
|
||
|
startparamGAL <- function(data,type="mu",log=FALSE)
|
||
|
{
|
||
|
if(type=="mu")
|
||
|
{
|
||
|
mom <- c(mean(data),var(data),moments::skewness(data),moments::kurtosis(data)-3)
|
||
|
tau <- 3/(mom[4])
|
||
|
sigma <- sqrt(mom[2]/(2*tau))
|
||
|
mu <- mom[3]*sigma*sqrt(2/(3*(mom[4])))
|
||
|
theta <- mom[1]-tau*mu
|
||
|
if(log==FALSE)
|
||
|
c(theta,sigma,mu,tau)
|
||
|
else
|
||
|
log(c(theta,sigma,mu,tau))
|
||
|
}
|
||
|
if(type=="kappa")
|
||
|
{
|
||
|
changetypeGAL(startparamGAL(data,type="mu",log),type="kappa",target="mu",log)
|
||
|
}
|
||
|
}
|