Learn R Programming

evmix (version 1.0)

lognormgpd: Log-Normal Bulk and GPD Tail Extreme Value Mixture Model

Description

Density, cumulative distribution function, quantile function and random number generation for the extreme value mixture model with log-normal for bulk distribution upto the threshold and conditional GPD above threshold. The parameters are the normal mean lnmean and standard deviation lnsd, threshold u GPD scale sigmau and shape xi and tail fraction phiu.

Usage

dlognormgpd(x, lnmean = 0, lnsd = 1,
    u = qlnorm(0.9, lnmean, lnsd), sigmau = lnsd, xi = 0,
    phiu = TRUE, log = FALSE)

  plognormgpd(q, lnmean = 0, lnsd = 1,
    u = qlnorm(0.9, lnmean, lnsd), sigmau = lnsd, xi = 0,
    phiu = TRUE, lower.tail = TRUE)

  qlognormgpd(p, lnmean = 0, lnsd = 1,
    u = qlnorm(0.9, lnmean, lnsd), sigmau = lnsd, xi = 0,
    phiu = TRUE, lower.tail = TRUE)

  rlognormgpd(n = 1, lnmean = 0, lnsd = 1,
    u = qlnorm(0.9, lnmean, lnsd), sigmau = lnsd, xi = 0,
    phiu = TRUE)

Arguments

lnmean
mean on log scale
lnsd
standard deviation on log scale (non-negative)
x
quantile
u
threshold
sigmau
scale parameter (non-negative)
xi
shape parameter
phiu
probability of being above threshold [0,1] or TRUE
log
logical, if TRUE then log density
q
quantile
lower.tail
logical, if FALSE then upper tail probabilities
p
cumulative probability
n
sample size (non-negative integer)

Value

Details

Extreme value mixture model combining log-normal distribution for the bulk below the threshold and GPD for upper tail. The user can pre-specify phiu permitting a parameterised value for the tail fraction $\phi_u$. Alternatively, when phiu=TRUE the tail fraction is estimated as the tail fraction from the log-normal bulk model. The cumulative distribution function with tail fraction $\phi_u$ defined by the upper tail fraction of the log-normal bulk model (phiu=TRUE), upto the threshold $0 < x \le u$, given by: $$F(x) = H(x)$$ and above the threshold $x > u$: $$F(x) = H(u) + [1 - H(u)] G(x)$$ where $H(x)$ and $G(X)$ are the log-normal and conditional GPD cumulative distribution functions (i.e. plnorm(x, meanlog = lnmean, sdlog = lnsd) and pgpd(x, u, sigmau, xi)). The cumulative distribution function for pre-specified $\phi_u$, upto the threshold $0 < x \le u$, is given by: $$F(x) = (1 - \phi_u) H(x)/H(u)$$ and above the threshold $x > u$: $$F(x) = \phi_u + [1 - \phi_u] G(x)$$ Notice that these definitions are equivalent when $\phi_u = 1 - H(u)$. The gamma is defined on the non-negative reals, so the threshold must be non-negative. See gpd for details of GPD upper tail component and dlnorm for details of log-normal bulk component.

References

http://en.wikipedia.org/wiki/Log-normal_distribution http://en.wikipedia.org/wiki/Generalized_Pareto_distribution Scarrott, C.J. and MacDonald, A. (2012). A review of extreme value threshold estimation and uncertainty quantification. REVSTAT - Statistical Journal 10(1), 33-59. Available from http://www.ine.pt/revstat/pdf/rs120102.pdf Solari, S. and Losada, M.A. (2004). A unified statistical model for hydrological variables including the selection of threshold for the peak over threshold method. Water Resources Research. 48, W10541.

See Also

gpd and dlnorm Other lognormgpd: flognormgpd, llognormgpd, nllognormgpd

Examples

Run this code
par(mfrow=c(2,2))
x = rlognormgpd(1000)
xx = seq(-1, 10, 0.01)
hist(x, breaks = 100, freq = FALSE, xlim = c(-1, 10))
lines(xx, dlognormgpd(xx))

# three tail behaviours
plot(xx, plognormgpd(xx), type = "l")
lines(xx, plognormgpd(xx, xi = 0.3), col = "red")
lines(xx, plognormgpd(xx, xi = -0.3), col = "blue")
legend("bottomright", paste("xi =",c(0, 0.3, -0.3)),
  col=c("black", "red", "blue"), lty = 1)

x = rlognormgpd(1000, u = 2, phiu = 0.2)
hist(x, breaks = 100, freq = FALSE, xlim = c(-1, 10))
lines(xx, dlognormgpd(xx, u = 2, phiu = 0.2))

plot(xx, dlognormgpd(xx, u = 2, xi=0, phiu = 0.2), type = "l")
lines(xx, dlognormgpd(xx, u = 2, xi=-0.2, phiu = 0.2), col = "red")
lines(xx, dlognormgpd(xx, u = 2, xi=0.2, phiu = 0.2), col = "blue")
legend("topright", c("xi = 0", "xi = 0.2", "xi = -0.2"),
  col=c("black", "red", "blue"), lty = 1)

Run the code above in your browser using DataLab