Learn R Programming

distributional (version 0.6.0)

dist_gpd: The Generalized Pareto Distribution

Description

The GPD distribution is commonly used to model the tails of distributions, particularly in extreme value theory.

The Pickands–Balkema–De Haan theorem states that for a large class of distributions, the tail (above some threshold) can be approximated by a GPD.

Usage

dist_gpd(location, scale, shape)

Arguments

location

the location parameter \(a\) of the GPD distribution.

scale

the scale parameter \(b\) of the GPD distribution.

shape

the shape parameter \(s\) of the GPD distribution.

Details

We recommend reading this documentation on pkgdown which renders math nicely. https://pkg.mitchelloharawild.com/distributional/reference/dist_gpd.html

In the following, let \(X\) be a Generalized Pareto random variable with parameters location = \(a\), scale = \(b > 0\), and shape = \(s\).

Support: \(x \ge a\) if \(s \ge 0\), \(a \le x \le a - b/s\) if \(s < 0\)

Mean: $$ E(X) = a + \frac{b}{1 - s} \quad \textrm{for } s < 1 $$ \(E(X) = \infty\) for \(s \ge 1\)

Variance: $$ \textrm{Var}(X) = \frac{b^2}{(1-s)^2(1-2s)} \quad \textrm{for } s < 0.5 $$ \(\textrm{Var}(X) = \infty\) for \(s \ge 0.5\)

Probability density function (p.d.f):

For \(s = 0\): $$ f(x) = \frac{1}{b}\exp\left(-\frac{x-a}{b}\right) \quad \textrm{for } x \ge a $$

For \(s \ne 0\): $$ f(x) = \frac{1}{b}\left(1 + s\frac{x-a}{b}\right)^{-1/s - 1} $$ where \(1 + s(x-a)/b > 0\)

Cumulative distribution function (c.d.f):

For \(s = 0\): $$ F(x) = 1 - \exp\left(-\frac{x-a}{b}\right) \quad \textrm{for } x \ge a $$

For \(s \ne 0\): $$ F(x) = 1 - \left(1 + s\frac{x-a}{b}\right)^{-1/s} $$ where \(1 + s(x-a)/b > 0\)

Quantile function:

For \(s = 0\): $$ Q(p) = a - b\log(1-p) $$

For \(s \ne 0\): $$ Q(p) = a + \frac{b}{s}\left[(1-p)^{-s} - 1\right] $$

Median:

For \(s = 0\): $$ \textrm{Median}(X) = a + b\log(2) $$

For \(s \ne 0\): $$ \textrm{Median}(X) = a + \frac{b}{s}\left(2^s - 1\right) $$

Skewness and Kurtosis: No closed-form expressions; approximated numerically.

See Also

evd::dgpd()

Examples

Run this code
dist <- dist_gpd(location = 0, scale = 1, shape = 0)

dist
mean(dist)
variance(dist)

generate(dist, 10)

density(dist, 2)
density(dist, 2, log = TRUE)

cdf(dist, 4)

quantile(dist, 0.7)

Run the code above in your browser using DataLab