Learn R Programming

extraDistr (version 1.9.1)

GEV: Generalized extreme value distribution

Description

Density, distribution function, quantile function and random generation for the generalized extreme value distribution.

Usage

dgev(x, mu = 0, sigma = 1, xi = 0, log = FALSE)

pgev(q, mu = 0, sigma = 1, xi = 0, lower.tail = TRUE, log.p = FALSE)

qgev(p, mu = 0, sigma = 1, xi = 0, lower.tail = TRUE, log.p = FALSE)

rgev(n, mu = 0, sigma = 1, xi = 0)

Arguments

x, q

vector of quantiles.

mu, sigma, xi

location, scale, and shape parameters. Scale must be positive.

log, log.p

logical; if TRUE, probabilities p are given as log(p).

lower.tail

logical; if TRUE (default), probabilities are \(P[X \le x]\) otherwise, \(P[X > x]\).

p

vector of probabilities.

n

number of observations. If length(n) > 1, the length is taken to be the number required.

Details

Probability density function $$ f(x) = \left\{\begin{array}{ll} \frac{1}{\sigma} \left(1+\xi \frac{x-\mu}{\sigma}\right)^{-1/\xi-1} \exp\left(-\left(1+\xi \frac{x-\mu}{\sigma}\right)^{-1/\xi}\right) & \xi \neq 0 \\ \frac{1}{\sigma} \exp\left(- \frac{x-\mu}{\sigma}\right) \exp\left(-\exp\left(- \frac{x-\mu}{\sigma}\right)\right) & \xi = 0 \end{array}\right. $$

Cumulative distribution function $$ F(x) = \left\{\begin{array}{ll} \exp\left(-\left(1+\xi \frac{x-\mu}{\sigma}\right)^{1/\xi}\right) & \xi \neq 0 \\ \exp\left(-\exp\left(- \frac{x-\mu}{\sigma}\right)\right) & \xi = 0 \end{array}\right. $$

Quantile function $$ F^{-1}(p) = \left\{\begin{array}{ll} \mu - \frac{\sigma}{\xi} (1 - (-\log(p))^\xi) & \xi \neq 0 \\ \mu - \sigma \log(-\log(p)) & \xi = 0 \end{array}\right. $$

References

Coles, S. (2001). An Introduction to Statistical Modeling of Extreme Values. Springer.

Examples

Run this code

curve(dgev(x, xi = -1/2), -4, 4, col = "green", ylab = "")
curve(dgev(x, xi = 0), -4, 4, col = "red", add = TRUE)
curve(dgev(x, xi = 1/2), -4, 4, col = "blue", add = TRUE)
legend("topleft", col = c("green", "red", "blue"), lty = 1,
       legend = expression(xi == -1/2, xi == 0, xi == 1/2), bty = "n")

x <- rgev(1e5, 5, 2, .5)
hist(x, 1000, freq = FALSE, xlim = c(0, 50))
curve(dgev(x, 5, 2, .5), 0, 50, col = "red", add = TRUE, n = 5000)
hist(pgev(x, 5, 2, .5))
plot(ecdf(x), xlim = c(0, 50))
curve(pgev(x, 5, 2, .5), 0, 50, col = "red", lwd = 2, add = TRUE)

Run the code above in your browser using DataLab