bckdengpd {evmix} | R Documentation |
Boundary Corrected Kernel Density Estimate 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
boundary corrected kernel density estimate for bulk
distribution upto the threshold and conditional GPD above threshold. The parameters
are the bandwidth lambda
, threshold u
GPD scale sigmau
and shape xi
and tail fraction phiu
.
Usage
dbckdengpd(x, kerncentres, lambda = NULL,
u = as.vector(quantile(kerncentres, 0.9)), sigmau = sqrt(6 *
var(kerncentres))/pi, xi = 0, phiu = TRUE, bw = NULL,
kernel = "gaussian", bcmethod = "simple", proper = TRUE,
nn = "jf96", offset = NULL, xmax = NULL, log = FALSE)
pbckdengpd(q, kerncentres, lambda = NULL,
u = as.vector(quantile(kerncentres, 0.9)), sigmau = sqrt(6 *
var(kerncentres))/pi, xi = 0, phiu = TRUE, bw = NULL,
kernel = "gaussian", bcmethod = "simple", proper = TRUE,
nn = "jf96", offset = NULL, xmax = NULL, lower.tail = TRUE)
qbckdengpd(p, kerncentres, lambda = NULL,
u = as.vector(quantile(kerncentres, 0.9)), sigmau = sqrt(6 *
var(kerncentres))/pi, xi = 0, phiu = TRUE, bw = NULL,
kernel = "gaussian", bcmethod = "simple", proper = TRUE,
nn = "jf96", offset = NULL, xmax = NULL, lower.tail = TRUE)
rbckdengpd(n = 1, kerncentres, lambda = NULL,
u = as.vector(quantile(kerncentres, 0.9)), sigmau = sqrt(6 *
var(kerncentres))/pi, xi = 0, phiu = TRUE, bw = NULL,
kernel = "gaussian", bcmethod = "simple", proper = TRUE,
nn = "jf96", offset = NULL, xmax = NULL)
Arguments
x |
quantiles |
kerncentres |
kernel centres (typically sample data vector or scalar) |
lambda |
bandwidth for kernel (as half-width of kernel) or |
u |
threshold |
sigmau |
scale parameter (positive) |
xi |
shape parameter |
phiu |
probability of being above threshold |
bw |
bandwidth for kernel (as standard deviations of kernel) or |
kernel |
kernel name ( |
bcmethod |
boundary correction method |
proper |
logical, whether density is renormalised to integrate to unity (where needed) |
nn |
non-negativity correction method (simple boundary correction only) |
offset |
offset added to kernel centres (logtrans only) or |
xmax |
upper bound on support (copula and beta kernels only) or |
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 boundary corrected kernel density (BCKDE) estimate for the bulk below the threshold and GPD for upper tail. The user chooses from a wide range of boundary correction methods designed to cope with a lower bound at zero and potentially also both upper and lower bounds.
Some boundary correction methods require a secondary correction for negative density estimates of which two methods are implemented. Further, some methods don't necessarily give a density which integrates to one, so an option is provided to renormalise to be proper.
It assumes there is a lower bound at zero, so prior transformation of data is required for a alternative lower bound (possibly including negation to allow for an upper bound).
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 BCKDE bulk model.
The alternate bandwidth definitions are discussed in the
kernels
, with the lambda
as the default.
The bw
specification is the same as used in the
density
function.
The possible kernels are also defined in kernels
with the "gaussian"
as the default choice.
The cumulative distribution function with tail fraction \phi_u
defined by the
upper tail fraction of the BCKDE (phiu=TRUE
), upto the threshold
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 BCKDE and conditional GPD
cumulative distribution functions respectively.
The cumulative distribution function for pre-specified \phi_u
, upto the
threshold 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)
.
Unlike the standard KDE, there is no general rule-of-thumb bandwidth for all the
BCKDE, with only certain methods having a guideline in the literature, so none
have been implemented. Hence, a bandwidth must always be specified and you should
consider using fbckdengpd
of
fbckden
function for cross-validation
MLE for bandwidth.
See gpd
for details of GPD upper tail component and
dbckden
for details of BCKDE bulk component.
Value
dbckdengpd
gives the density,
pbckdengpd
gives the cumulative distribution function,
qbckdengpd
gives the quantile function and
rbckdengpd
gives a random sample.
Boundary Correction Methods
See dbckden
for details of BCKDE methods.
Warning
The "simple"
, "renorm"
, "beta1"
, "beta2"
, "gamma1"
and "gamma2"
boundary correction methods may require renormalisation using
numerical integration which can be very slow. In particular, the numerical integration
is extremely slow for the kernel="uniform"
, due to the adaptive quadrature in
the integrate
function
being particularly slow for functions with step-like behaviour.
Acknowledgments
Based on code by Anna MacDonald produced for MATLAB.
Note
Unlike most of the other extreme value mixture model functions the
bckdengpd
functions have not been vectorised as
this is not appropriate. The main inputs (x
, p
or q
)
must be either a scalar or a vector, which also define the output length.
The kerncentres
can also be a scalar or vector.
The kernel centres kerncentres
can either be a single datapoint or a vector
of data. The kernel centres (kerncentres
) and locations to evaluate density (x
)
and cumulative distribution function (q
) would usually be different.
Default values are provided for all inputs, except for the fundamentals
kerncentres
, x
, q
and p
. The default sample size for
rbckdengpd
is 1.
The xmax
option is only relevant for the beta and copula methods, so a
warning is produced if this is not NULL
for in other methods.
The offset
option is only relevant for the "logtrans"
method, so a
warning is produced if this is not NULL
for in other methods.
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 or kernel centres.
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/Kernel_density_estimation
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
Bowman, A.W. (1984). An alternative method of cross-validation for the smoothing of density estimates. Biometrika 71(2), 353-360.
Duin, R.P.W. (1976). On the choice of smoothing parameters for Parzen estimators of probability density functions. IEEE Transactions on Computers C25(11), 1175-1179.
MacDonald, A., Scarrott, C.J., Lee, D., Darlow, B., Reale, M. and Russell, G. (2011). A flexible extreme value mixture model. Computational Statistics and Data Analysis 55(6), 2137-2157.
MacDonald, A., C. J. Scarrott, and D. S. Lee (2011). Boundary correction, consistency and robustness of kernel densities using extreme value theory. Submitted. Available from: http://www.math.canterbury.ac.nz/~c.scarrott.
Wand, M. and Jones, M.C. (1995). Kernel Smoothing. Chapman && Hall.
See Also
gpd
, kernels
,
kfun
,
density
, bw.nrd0
and dkde
in ks
package.
Other kdengpd: fbckdengpd
,
fgkg
, fkdengpdcon
,
fkdengpd
, fkden
,
gkg
, kdengpdcon
,
kdengpd
, kden
Other bckden: bckdengpdcon
,
bckden
, fbckdengpdcon
,
fbckdengpd
, fbckden
,
fkden
, kden
Other bckdengpd: bckdengpdcon
,
bckden
, fbckdengpdcon
,
fbckdengpd
, fbckden
,
fkdengpd
, gkg
,
kdengpd
, kden
Other bckdengpdcon: bckdengpdcon
,
bckden
, fbckdengpdcon
,
fbckdengpd
, fbckden
,
fkdengpdcon
, gkgcon
,
kdengpdcon
Other fbckdengpd: fbckdengpd
Examples
## Not run:
set.seed(1)
par(mfrow = c(2, 2))
kerncentres=rgamma(500, shape = 1, scale = 2)
xx = seq(-0.1, 10, 0.01)
hist(kerncentres, breaks = 100, freq = FALSE)
lines(xx, dbckdengpd(xx, kerncentres, lambda = 0.5, bcmethod = "reflect"),
xlab = "x", ylab = "f(x)")
abline(v = quantile(kerncentres, 0.9))
plot(xx, pbckdengpd(xx, kerncentres, lambda = 0.5, bcmethod = "reflect"),
xlab = "x", ylab = "F(x)", type = "l")
lines(xx, pbckdengpd(xx, kerncentres, lambda = 0.5, xi = 0.3, bcmethod = "reflect"),
xlab = "x", ylab = "F(x)", col = "red")
lines(xx, pbckdengpd(xx, kerncentres, lambda = 0.5, xi = -0.3, bcmethod = "reflect"),
xlab = "x", ylab = "F(x)", col = "blue")
legend("topleft", paste("xi =",c(0, 0.3, -0.3)),
col=c("black", "red", "blue"), lty = 1, cex = 0.5)
kerncentres = rweibull(1000, 2, 1)
x = rbckdengpd(1000, kerncentres, lambda = 0.1, phiu = TRUE, bcmethod = "reflect")
xx = seq(0.01, 3.5, 0.01)
hist(x, breaks = 100, freq = FALSE)
lines(xx, dbckdengpd(xx, kerncentres, lambda = 0.1, phiu = TRUE, bcmethod = "reflect"),
xlab = "x", ylab = "f(x)")
lines(xx, dbckdengpd(xx, kerncentres, lambda = 0.1, xi=-0.2, phiu = 0.1, bcmethod = "reflect"),
xlab = "x", ylab = "f(x)", col = "red")
lines(xx, dbckdengpd(xx, kerncentres, lambda = 0.1, xi=0.2, phiu = 0.1, bcmethod = "reflect"),
xlab = "x", ylab = "f(x)", col = "blue")
legend("topleft", c("xi = 0", "xi = 0.2", "xi = -0.2"),
col=c("black", "red", "blue"), lty = 1)
## End(Not run)