# Example 1: Simulated data
gdata <- data.frame(y = rgumbel(n = 1000, loc = 100, scale = exp(1)))
fit <- vglm(y ~ 1, egumbel(perc = NULL), gdata, trace = TRUE)
coef(fit, matrix = TRUE)
Coef(fit)
head(fitted(fit))
with(gdata, mean(y))
# Example 2: Venice data
(fit <- vglm(cbind(r1,r2,r3,r4,r5) ~ year, data = venice,
gumbel(R = 365, mpv = TRUE), trace = TRUE))
head(fitted(fit))
coef(fit, matrix = TRUE)
vcov(summary(fit))
sqrt(diag(vcov(summary(fit)))) # Standard errors
# Example 3: Try a nonparametric fit ---------------------
# Use the entire data set, including missing values
y <- as.matrix(venice[, paste("r", 1:10, sep = "")])
fit1 <- vgam(y ~ s(year, df = 3), gumbel(R = 365, mpv = TRUE),
data = venice, trace = TRUE, na.action = na.pass)
depvar(fit1)[4:5, ] # NAs used to pad the matrix
# Plot the component functions
par(mfrow = c(2, 1), mar = c(5, 4, 0.2, 1) + 0.1, xpd = TRUE)
plot(fit1, se = TRUE, lcol = "blue", scol = "green", lty = 1,
lwd = 2, slwd = 2, slty = "dashed")
# Quantile plot --- plots all the fitted values
par(mfrow = c(1, 1), bty = "l", mar = c(4, 4, 0.2, 3) + 0.1, xpd = TRUE, las = 1)
qtplot(fit1, 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
par(mfrow = c(1, 1), mar = c(3, 4, 0.2, 1) + 0.1, xpd = TRUE)
year = venice[["year"]]
matplot(year, y, ylab = "Sea level (cm)", type = "n")
matpoints(year, y, pch = "*", col = "blue")
lines(year, fitted(fit1)[,"99%"], lwd = 2, col = "red")
# 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.
par(mfrow = c(1, 1), mar = c(3, 4, 2, 1) + 0.1, xpd = TRUE, lwd = 2)
plot(year, y[, 4], ylab = "Sea level (cm)", type = "n",
main = "Red is 99 percentile, Green is a smoothing spline")
points(year, y[, 4], pch = "4", col = "blue")
lines(year, fitted(fit1)[,"99%"], lty = 1, col = "red")
lines(smooth.spline(year, y[, 4], df = 4), col = "darkgreen", lty = 2)
Run the code above in your browser using DataLab