Last chance! 50% off unlimited learning
Sale ends in
Density, cumulative distribution function, quantile function and
random number generation for the generalised Pareto distribution, either
as a conditional on being above the threshold u
or unconditional.
dgpd(x, u = 0, sigmau = 1, xi = 0, phiu = 1, log = FALSE)pgpd(q, u = 0, sigmau = 1, xi = 0, phiu = 1, lower.tail = TRUE)
qgpd(p, u = 0, sigmau = 1, xi = 0, phiu = 1, lower.tail = TRUE)
rgpd(n = 1, u = 0, sigmau = 1, xi = 0, phiu = 1)
quantiles
threshold
scale parameter (positive)
shape parameter
probability of being above threshold
logical, if TRUE then log density
quantiles
logical, if FALSE then upper tail probabilities
cumulative probabilities
sample size (positive integer)
dgpd
gives the density,
pgpd
gives the cumulative distribution function,
qgpd
gives the quantile function and
rgpd
gives a random sample.
The GPD with parameters scale u
given by
for non-zero
The unconditional density is obtained by mutltiplying this by the
survival probability (or tail fraction)
The syntax of these functions are similar to those of the
evd
package, so most code using these functions can
be reused. The key difference is the introduction of phiu
to
permit output of unconditional quantities.
http://en.wikipedia.org/wiki/Generalized_Pareto_distribution
Hu Y. and Scarrott, C.J. (2018). evmix: An R Package for Extreme Value Mixture Modeling, Threshold Estimation and Boundary Corrected Kernel Density Estimation. Journal of Statistical Software 84(5), 1-27. doi: 10.18637/jss.v084.i05.
Coles, S.G. (2001). An Introduction to Statistical Modelling of Extreme Values. Springer Series in Statistics. Springer-Verlag: London.
Other gpd: fgpd
Other fgpd: fgpd
# NOT RUN {
set.seed(1)
par(mfrow = c(2, 2))
x = rgpd(1000) # simulate sample from GPD
xx = seq(-1, 10, 0.01)
hist(x, breaks = 100, freq = FALSE, xlim = c(-1, 10))
lines(xx, dgpd(xx))
# three tail behaviours
plot(xx, pgpd(xx), type = "l")
lines(xx, pgpd(xx, xi = 0.3), col = "red")
lines(xx, pgpd(xx, xi = -0.3), col = "blue")
legend("bottomright", paste("xi =",c(0, 0.3, -0.3)),
col=c("black", "red", "blue"), lty = 1)
# GPD when xi=0 is exponential, and demonstrating phiu
x = rexp(1000)
hist(x, breaks = 100, freq = FALSE, xlim = c(-1, 10))
lines(xx, dgpd(xx, u = 0, sigmau = 1, xi = 0), lwd = 2)
lines(xx, dgpd(xx, u = 0.5, phiu = 1 - pexp(0.5)), col = "red", lwd = 2)
lines(xx, dgpd(xx, u = 1.5, phiu = 1 - pexp(1.5)), col = "blue", lwd = 2)
legend("topright", paste("u =",c(0, 0.5, 1.5)),
col=c("black", "red", "blue"), lty = 1, lwd = 2)
# Quantile function and phiu
p = pgpd(xx)
plot(qgpd(p), p, type = "l")
lines(xx, pgpd(xx, u = 2), col = "red")
lines(xx, pgpd(xx, u = 5, phiu = 0.2), col = "blue")
legend("bottomright", c("u = 0 phiu = 1","u = 2 phiu = 1","u = 5 phiu = 0.2"),
col=c("black", "red", "blue"), lty = 1)
# }
Run the code above in your browser using DataLab