Density, distribution, quantile, random number generation, and parameter estimation functions for the Gumbel distribution with parameters location and scale. Parameter estimation can be based on a weighted or unweighted i.i.d sample and can be performed analytically or numerically.

dGumbel(
  x,
  location = 0,
  scale = 1,
  params = list(location = 0, scale = 1),
  ...
)

pGumbel(
  q,
  location = 0,
  scale = 1,
  params = list(location = 0, scale = 1),
  ...
)

qGumbel(
  p,
  location = 0,
  scale = 1,
  params = list(location = 0, scale = 1),
  ...
)

rGumbel(
  n,
  location = 0,
  scale = 1,
  params = list(location = 0, scale = 1),
  ...
)

eGumbel(X, w, method = c("moments", "numerical.MLE"), ...)

lGumbel(
  X,
  w,
  location = 0,
  scale = 1,
  params = list(location = 0, scale = 1),
  logL = TRUE,
  ...
)

Arguments

x, q

A vector of quantiles.

location

Location parameter.

scale

Scale parameter.

params

A list that includes all named parameters

...

Additional parameters.

p

A vector of probabilities.

n

Number of observations.

X

Sample observations.

w

An optional vector of sample weights.

method

Parameter estimation method.

logL

logical if TRUE, lGumbel gives the log-likelihood, otherwise the likelihood is given.

Value

dGumbel gives the density, pGumbel the distribution function, qGumbel the quantile function, rGumbel generates random deviates, and eGumbel estimate the distribution parameters. lGumbel provides the log-likelihood function.

Details

The dGumbel(), pGumbel(), qGumbel(),and rGumbel() functions serve as wrappers of the dgumbel, pgumbel, qgumbel, and rgumbel functions in the VGAM package.They allow for the parameters to be declared not only as individual numerical values, but also as a list so parameter estimation can be carried out.

The Gumbel distribution is a special case of the generalised extreme value (GEV) distribution and has probability density function, $$f(x) = exp{(-exp{-(x-\mu)/\sigma)}}$$ where \(\mu\) = location and \(\sigma\) = scale which has the constraint \(\sigma > 0\). The analytical parameter estimations are as given by the Engineering Statistics Handbook with corresponding standard errors given by Bury (p.273).

The log-likelihood function of the Gumbel distribution is given by $$l(\mu, \sigma| x) = \sigma^{-n} exp(-\sum (x_{i}-\mu/\sigma) - \sum exp(-(x_{i}-\mu/\sigma))).$$ Shi (1995) provides the score function and Fishers information matrix.

References

Johnson, N. L., Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, volume 2, chapter 22, Wiley, New York.

Engineering Statistics Handbook.

Bury, K. (1999) Statistical Distributions in Engineering, Chapter 15, pp.283-284, Cambridge University Press.

Shi, D. (1995). Multivariate extreme value distribution and its Fisher information matrix. Acta Mathematicae

See also

ExtDist for other standard distributions.

Author

Haizhen Wu and A. Jonathan R. Godfrey.
Updates and bug fixes by Sarah Pirikahu.

Examples

# Parameter estimation for a distribution with known shape parameters
X <- rGumbel(n = 500, location = 1.5, scale = 0.5)
est.par <- eGumbel(X, method="moments"); est.par
#> 
#> Parameters for the Gumbel distribution. 
#> (found using the  moments method.)
#> 
#>  Parameter     Type  Estimate       S.E.
#>   location location 1.5164986 0.02186078
#>      scale    scale 0.4878629 0.01420021
#> 
#> 
plot(est.par)


# Extracting location and scale parameters
est.par[attributes(est.par)$par.type=="location"]
#> $location
#> [1] 1.516499
#> 
est.par[attributes(est.par)$par.type=="scale"]
#> $scale
#> [1] 0.4878629
#> 

#  Fitted density curve and histogram
den.x <- seq(min(X),max(X),length=100)
den.y <- dGumbel(den.x, location = est.par$location, scale= est.par$scale)
hist(X, breaks=10, probability=TRUE, ylim = c(0,1.1*max(den.y)))
lines(den.x, den.y, col="blue")
lines(density(X))


# Parameter Estimation for a distribution with unknown shape parameters
# Example from; Bury(1999) pp.283-284, parameter estimates as given by Bury are location = 33.5
# and scale = 2.241
data <- c(32.7, 30.4, 31.8, 33.2, 33.8, 35.3, 34.6, 33, 32, 35.7, 35.5, 36.8, 40.8, 38.7, 36.7)
est.par <- eGumbel(X=data, method="numerical.MLE"); est.par
#> 
#> Parameters for the Gumbel distribution. 
#> (found using the  numerical.MLE method.)
#> 
#>  Parameter     Type  Estimate      S.E.
#>   location location 33.466703 0.6106599
#>      scale    scale  2.240689 0.4495509
#> 
#> 
plot(est.par)


# log-likelihood
lGumbel(data, param = est.par)
#> [1] -35.58083

# Evaluating the precision of the parameter estimates by the Hessian matrix
H <- attributes(est.par)$nll.hessian
var <- solve(H)
se <- sqrt(diag(var)); se
#>  location     scale 
#> 0.6106599 0.4495509