| densregion.normal {denstrip} | R Documentation |
Adds a density region to an existing plot of a normally-distributed quantity with continuously-varying mean and standard deviation, such as a time series forecast. Automatically computes a reasonable set of ordinates to evaluate the density at, which span the whole forecast space.
densregion.normal(x, mean, sd, ny=20, ...)
x |
Suppose the continuously-varying quantity varies over a
space S. x is a vector of the points in S at which the
posterior / predictive / fiducial distribution will be evaluated. |
mean |
Vector of normal means at each point in x. |
sd |
Vector of standard deviations at each point in x. |
ny |
Minimum number of points to calculate the density at for
each x. The density is calculated for at least ny equally
spaced normal quantiles for each point. The density is actually
calculated at the union over x of all such points, for each x.
|
... |
Further arguments passed to densregion. |
The plot is shaded by interpolating the value of the density
between grid points, using the algorithm described by Cleveland (1993)
as implemented in the filled.contour function.
Christopher Jackson <chris.jackson@mrc-bsu.cam.ac.uk>
Jackson, C. H. (2008) Displaying uncertainty with shading. The American Statistician, 62(4):340-347. http://www.mrc-bsu.cam.ac.uk/personal/chris/papers/denstrip.pdf
Cleveland, W. S. (1993) Visualizing Data. Hobart Press, Summit, New Jersey.
densregion, densregion.survfit, denstrip
## Time series forecasting
(fit <- arima(USAccDeaths, order = c(0,1,1),
seasonal = list(order=c(0,1,1))))
pred <- predict(fit, n.ahead = 36)
plot(USAccDeaths, xlim=c(1973, 1982), ylim=c(5000, 15000))
## Compute normal forecast densities automatically (slow)
densregion.normal(time(pred$pred), pred$pred, pred$se,
pointwise=TRUE, colmax="darkgreen")
lines(pred$pred, lty=2)
lines(pred$pred + qnorm(0.975)*pred$se, lty=3)
lines(pred$pred - qnorm(0.975)*pred$se, lty=3)
## Compute forecast densities by hand (more efficient)
nx <- length(pred$pred)
y <- seq(5000, 15000, by=100)
z <- matrix(nrow=nx, ncol=length(y))
for(i in 1:nx)
z[i,] <- dnorm(y, pred$pred[i], pred$se[i])
plot(USAccDeaths, xlim=c(1973, 1982), ylim=c(5000, 15000))
densregion(time(pred$pred), y, z, colmax="darkgreen", pointwise=TRUE)
lines(pred$pred, lty=2)
lines(pred$pred + qnorm(0.975)*pred$se, lty=3)
lines(pred$pred - qnorm(0.975)*pred$se, lty=3)