gng {evmix} | R Documentation |
Normal Bulk with GPD Upper and Lower Tails Extreme Value Mixture Model
Description
Density, cumulative distribution function, quantile function and
random number generation for the extreme value mixture model with normal
for bulk distribution between the upper and lower thresholds with
conditional GPD's for the two tails. The parameters are the normal mean
nmean
and standard deviation nsd
, lower tail (threshold ul
,
GPD scale sigmaul
and shape xil
and tail fraction phiul
)
and upper tail (threshold ur
, GPD scale sigmaur
and shape
xiR
and tail fraction phiuR
).
Usage
dgng(x, nmean = 0, nsd = 1, ul = qnorm(0.1, nmean, nsd),
sigmaul = nsd, xil = 0, phiul = TRUE, ur = qnorm(0.9, nmean,
nsd), sigmaur = nsd, xir = 0, phiur = TRUE, log = FALSE)
pgng(q, nmean = 0, nsd = 1, ul = qnorm(0.1, nmean, nsd),
sigmaul = nsd, xil = 0, phiul = TRUE, ur = qnorm(0.9, nmean,
nsd), sigmaur = nsd, xir = 0, phiur = TRUE, lower.tail = TRUE)
qgng(p, nmean = 0, nsd = 1, ul = qnorm(0.1, nmean, nsd),
sigmaul = nsd, xil = 0, phiul = TRUE, ur = qnorm(0.9, nmean,
nsd), sigmaur = nsd, xir = 0, phiur = TRUE, lower.tail = TRUE)
rgng(n = 1, nmean = 0, nsd = 1, ul = qnorm(0.1, nmean, nsd),
sigmaul = nsd, xil = 0, phiul = TRUE, ur = qnorm(0.9, nmean,
nsd), sigmaur = nsd, xir = 0, phiur = TRUE)
Arguments
x |
quantiles |
nmean |
normal mean |
nsd |
normal standard deviation (positive) |
ul |
lower tail threshold |
sigmaul |
lower tail GPD scale parameter (positive) |
xil |
lower tail GPD shape parameter |
phiul |
probability of being below lower threshold |
ur |
upper tail threshold |
sigmaur |
upper tail GPD scale parameter (positive) |
xir |
upper tail GPD shape parameter |
phiur |
probability of being above upper threshold |
log |
logical, if TRUE then log density |
q |
quantiles |
lower.tail |
logical, if FALSE then upper tail probabilities |
p |
cumulative probabilities |
n |
sample size (positive integer) |
Details
Extreme value mixture model combining normal distribution for the bulk
between the lower and upper thresholds and GPD for upper and lower tails. The
user can pre-specify phiul
and phiur
permitting a parameterised
value for the lower and upper tail fraction respectively. Alternatively, when
phiul=TRUE
or phiur=TRUE
the corresponding tail fraction is
estimated as from the normal bulk model.
Notice that the tail fraction cannot be 0 or 1, and the sum of upper and lower tail
fractions phiul+phiur<1
, so the lower threshold must be less than the upper,
ul<ur
.
The cumulative distribution function now has three components. The lower tail with
tail fraction \phi_{ul}
defined by the normal bulk model (phiul=TRUE
)
upto the lower threshold x < u_l
:
F(x) = H(u_l) G_l(x).
where H(x)
is the normal cumulative distribution function (i.e.
pnorm(ur, nmean, nsd)
). The
G_l(X)
is the conditional GPD cumulative distribution function with negated
data and threshold, i.e. dgpd(-x, -ul, sigmaul, xil, phiul)
. The normal
bulk model between the thresholds u_l \le x \le u_r
given by:
F(x) = H(x).
Above the threshold x > u_r
the usual conditional GPD:
F(x) = H(u_r) + [1 - H(u_r)] G(x)
where G(X)
.
The cumulative distribution function for the pre-specified tail fractions
\phi_{ul}
and \phi_{ur}
is more complicated. The unconditional GPD
is used for the lower tail x < u_l
:
F(x) = \phi_{ul} G_l(x).
The normal bulk model between the thresholds u_l \le x \le u_r
given by:
F(x) = \phi_{ul}+ (1-\phi_{ul}-\phi_{ur}) (H(x) - H(u_l)) / (H(u_r) - H(u_l)).
Above the threshold x > u_r
the usual conditional GPD:
F(x) = (1-\phi_{ur}) + \phi_{ur} G(x)
Notice that these definitions are equivalent when \phi_{ul} = H(u_l)
and
\phi_{ur} = 1 - H(u_r)
.
See gpd
for details of GPD upper tail component,
dnorm
for details of normal bulk component and
dnormgpd
for normal with GPD extreme value
mixture model.
Value
dgng
gives the density,
pgng
gives the cumulative distribution function,
qgng
gives the quantile function and
rgng
gives a random sample.
Note
All inputs are vectorised except log
and lower.tail
.
The main input (x
, p
or q
) and parameters must be either
a scalar or a vector. If vectors are provided they must all be of the same length,
and the function will be evaluated for each element of vector. In the case of
rgng
any input vector must be of length n
.
Default values are provided for all inputs, except for the fundamentals
x
, q
and p
. The default sample size for
rgng
is 1.
Missing (NA
) and Not-a-Number (NaN
) values in x
,
p
and q
are passed through as is and infinite values are set to
NA
. None of these are not permitted for the parameters.
Error checking of the inputs (e.g. invalid probabilities) is carried out and will either stop or give warning message as appropriate.
Author(s)
Yang Hu and Carl Scarrott carl.scarrott@canterbury.ac.nz
References
http://en.wikipedia.org/wiki/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
Zhao, X., Scarrott, C.J. Reale, M. and Oxley, L. (2010). Extreme value modelling for forecasting the market crisis. Applied Financial Econometrics 20(1), 63-72.
See Also
Other normgpd: fgng
, fhpd
,
fitmnormgpd
, flognormgpd
,
fnormgpdcon
, fnormgpd
,
gngcon
, hpdcon
,
hpd
, itmnormgpd
,
lognormgpdcon
, lognormgpd
,
normgpdcon
, normgpd
Other normgpdcon: fgngcon
,
fhpdcon
, flognormgpdcon
,
fnormgpdcon
, fnormgpd
,
gngcon
, hpdcon
,
hpd
, normgpdcon
,
normgpd
Other gng: fgngcon
, fgng
,
fitmgng
, fnormgpd
,
gngcon
, itmgng
,
normgpd
Other gngcon: fgngcon
, fgng
,
fnormgpdcon
, gngcon
,
normgpdcon
Other fgng: fgng
Examples
## Not run:
set.seed(1)
par(mfrow = c(2, 2))
x = rgng(1000, phiul = 0.15, phiur = 0.15)
xx = seq(-6, 6, 0.01)
hist(x, breaks = 100, freq = FALSE, xlim = c(-6, 6))
lines(xx, dgng(xx, phiul = 0.15, phiur = 0.15))
# three tail behaviours
plot(xx, pgng(xx), type = "l")
lines(xx, pgng(xx, xil = 0.3, xir = 0.3), col = "red")
lines(xx, pgng(xx, xil = -0.3, xir = -0.3), col = "blue")
legend("topleft", paste("Symmetric xil=xir=",c(0, 0.3, -0.3)),
col=c("black", "red", "blue"), lty = 1)
x = rgng(1000, xil = -0.3, phiul = 0.2, xir = 0.3, phiur = 0.2)
xx = seq(-6, 6, 0.01)
hist(x, breaks = 100, freq = FALSE, xlim = c(-6, 6))
lines(xx, dgng(xx, xil = -0.3, phiul = 0.2, xir = 0.3, phiur = 0.2))
plot(xx, dgng(xx, xil = -0.3, phiul = 0.2, xir = 0.3, phiur = 0.2), type = "l", ylim = c(0, 0.4))
lines(xx, dgng(xx, xil = -0.3, phiul = 0.3, xir = 0.3, phiur = 0.3), col = "red")
lines(xx, dgng(xx, xil = -0.3, phiul = TRUE, xir = 0.3, phiur = TRUE), col = "blue")
legend("topleft", c("phiul = phiur = 0.2", "phiul = phiur = 0.3", "Bulk Tail Fraction"),
col=c("black", "red", "blue"), lty = 1)
## End(Not run)