Maximum likelihood estimation of the 2-parameter Gumbel distribution.
gumbel(llocation = "identitylink", lscale = "loglink",
iscale = NULL, R = NA, percentiles = c(95, 99),
mpv = FALSE, zero = NULL)
gumbelff(llocation = "identitylink", lscale = "loglink",
iscale = NULL, R = NA, percentiles = c(95, 99),
zero = "scale", mpv = FALSE)
Parameter link functions for Links
for more choices.
Numeric and positive.
Optional initial value for NULL
means an initial value is computed internally.
Numeric. Maximum number of values possible. See Details for more details.
Numeric vector of percentiles used
for the fitted values. Values should be between 0 and 100.
This argument uses the argument R
if assigned.
If percentiles = NULL
then the mean will be returned as the
fitted values.
Logical. If mpv = TRUE
then the median predicted value (MPV)
is computed and returned as the (last) column of the fitted values.
This argument is ignored if percentiles = NULL
.
See Details for more details.
A vector specifying which linear/additive predictors
are modelled as intercepts only. The value (possibly values) can
be from the set {1, 2} corresponding respectively to CommonVGAMffArguments
for more details.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.
When R
is not given (the default) the fitted percentiles are
that of the data, and not of the
overall population. For example, in the example below, the 50
percentile is approximately the running median through the data,
however, the data are the highest sea level measurements recorded each
year (it therefore equates to the median predicted value or MPV).
The Gumbel distribution is a generalized extreme value (GEV)
distribution with shape parameter gev
for more details.
The quantity mpv = TRUE
then the column labelled "MPV"
contains
the MPVs when fitted()
is applied to the fitted object.
The formula for the mean of a response R
is not given)
percentile
argument value(s).
If R
is given then the percentiles are
Yee, T. W. and Stephenson, A. G. (2007) Vector generalized linear and additive extreme value models. Extremes, 10, 1--19.
Smith, R. L. (1986) Extreme value theory based on the r largest annual events. Journal of Hydrology, 86, 27--43.
Rosen, O. and Cohen, A. (1996) Extreme percentile regression. In: Haerdle, W. and Schimek, M. G. (eds.), Statistical Theory and Computational Aspects of Smoothing: Proceedings of the COMPSTAT '94 Satellite Meeting held in Semmering, Austria, 27--28 August 1994, pp.200--214, Heidelberg: Physica-Verlag.
Coles, S. (2001) An Introduction to Statistical Modeling of Extreme Values. London: Springer-Verlag.
rgumbel
,
dgumbelII
,
cens.gumbel
,
guplot
,
gev
,
gevff
,
venice
.
# NOT RUN {
# Example 1: Simulated data
gdata <- data.frame(y1 = rgumbel(n = 1000, loc = 100, scale = exp(1)))
fit1 <- vglm(y1 ~ 1, gumbelff(perc = NULL), data = gdata, trace = TRUE)
coef(fit1, matrix = TRUE)
Coef(fit1)
head(fitted(fit1))
with(gdata, mean(y1))
# Example 2: Venice data
(fit2 <- vglm(cbind(r1, r2, r3, r4, r5) ~ year, data = venice,
gumbel(R = 365, mpv = TRUE), trace = TRUE))
head(fitted(fit2))
coef(fit2, matrix = TRUE)
sqrt(diag(vcov(summary(fit2)))) # Standard errors
# Example 3: Try a nonparametric fit ---------------------
# Use the entire data set, including missing values
# Same as as.matrix(venice[, paste0("r", 1:10)]):
Y <- Select(venice, "r", sort = FALSE)
fit3 <- vgam(Y ~ s(year, df = 3), gumbel(R = 365, mpv = TRUE),
data = venice, trace = TRUE, na.action = na.pass)
depvar(fit3)[4:5, ] # NAs used to pad the matrix
# }
# NOT RUN {
# Plot the component functions
par(mfrow = c(2, 3), mar = c(6, 4, 1, 2) + 0.3, xpd = TRUE)
plot(fit3, se = TRUE, lcol = "blue", scol = "limegreen", lty = 1,
lwd = 2, slwd = 2, slty = "dashed")
# Quantile plot --- plots all the fitted values
qtplot(fit3, mpv = TRUE, lcol = c(1, 2, 5), tcol = c(1, 2, 5), lwd = 2,
pcol = "blue", tadj = 0.1, ylab = "Sea level (cm)")
# Plot the 99 percentile only
year <- venice[["year"]]
matplot(year, Y, ylab = "Sea level (cm)", type = "n")
matpoints(year, Y, pch = "*", col = "blue")
lines(year, fitted(fit3)[, "99%"], lwd = 2, col = "orange")
# Check the 99 percentiles with a smoothing spline.
# Nb. (1-0.99) * 365 = 3.65 is approx. 4, meaning the 4th order
# statistic is approximately the 99 percentile.
plot(year, Y[, 4], ylab = "Sea level (cm)", type = "n",
main = "Orange is 99 percentile, Green is a smoothing spline")
points(year, Y[, 4], pch = "4", col = "blue")
lines(year, fitted(fit3)[, "99%"], lty = 1, col = "orange")
lines(smooth.spline(year, Y[, 4], df = 4), col = "limegreen", lty = 2)
# }
Run the code above in your browser using DataLab