predict.cgam {cgam} | R Documentation |
Predict Method for CGAM Fits
Description
Predicted values based on a cgam object
Usage
## S3 method for class 'cgam'
predict(object, newData, interval = c("none", "confidence", "prediction"),
type = c("response", "link"), level = 0.95, n.mix = 500,...)
Arguments
object |
A cgam object. |
newData |
A data frame in which to look for variables with which to predict. If omitted, the fitted values are used. |
interval |
Type of interval calculation. A prediction interval is only implemented for Gaussian response for now. |
type |
If the response is Gaussian, type = "response" gives the predicted mean; if the response is binomial, type = "response" gives the predicted probabilities, and type = "link" gives the predicted systematic component. |
level |
Tolerance/confidence level. |
n.mix |
Number of simulations to get the mixture distribution. The default is n.mix = 500. |
... |
Further arguments passed to the routine. |
Details
Constrained spline estimators can be characterized by projections onto a polyhedral convex cone. Point-wise confidence intervals for constrained splines are constructed by estimating the probabilities that the projection lands on each of the faces of the cone, and using a mixture of covariance matrices to estimate the standard error of the function estimator at any design point.
Note that currently predict.cgam only works when all components in a cgam formula are additive.
See references cited in this section for more details.
Value
fit |
A vector of predictions. |
lower |
A vector of lower bound if interval is set to be "confidence". |
upper |
A vector of upper bound if interval is set to be "confidence". |
Author(s)
Mary C. Meyer and Xiyue Liao
References
Meyer, M. C. (2017) Constrained partial linear regression splines. Statistical Sinica in press.
Meyer, M. C. (2017) Confidence intervals for regression functions using constrained splines with application to estimation of tree height
Meyer, M. C. (2012) Constrained penalized splines. Canadian Journal of Statistics 40(1), 190–206.
Meyer, M. C. (2008) Inference using shape-restricted regression splines. Annals of Applied Statistics 2(3), 1013–1033.
Examples
# Example 1.
# generate data
n <- 100
set.seed(123)
x <- runif(n)
y <- 4*x^3 + rnorm(n)
# regress y on x under the shape-restriction: "increasing-convex"
fit <- cgam(y ~ s.incr.conv(x))
# make a data frame
x0 <- seq(min(x), max(x), by = 0.05)
new.Data <- data.frame(x = x0)
# predict values in new.Data based on the cgam fit without a confidence interval
pfit <- predict(fit, new.Data)
# or
pfit <- predict(fit, new.Data, interval = "none")
# make a plot to check the prediction
plot(x, y, main = "Predict Method for CGAM")
lines(sort(x), (fitted(fit)[order(x)]))
points(x0, pfit$fit, col = 2, pch = 20)
# predict values in new.Data based on the cgam fit with a 95 percent confidence interval
pfit <- predict(fit, new.Data, interval = "confidence", level = 0.95)
# make a plot to check the prediction
plot(x, y, main = "Pointwise Confidence Bands (Gaussian Response)")
lines(sort(x), (fitted(fit)[order(x)]))
lines(sort(x0), (pfit$lower)[order(x0)], col = 2, lty = 2)
lines(sort(x0), (pfit$upper)[order(x0)], col = 2, lty = 2)
points(x0, pfit$fit, col = 2, pch = 20)
# Example 2. binomial response
n <- 200
x <- seq(0, 1, length = n)
eta <- 4*x - 2
mu <- exp(eta)/(1+exp(eta))
set.seed(123)
y <- 1:n*0
y[runif(n)<mu] = 1
fit <- cgam(y ~ s.incr.conv(x), family = binomial)
muhat <- fitted(fit)
# predict values in new.Data based on the cgam fit with a 95 percent confidence interval
xinterp <- seq(min(x), max(x), by = 0.05)
new.Data <- data.frame(x = xinterp)
pfit <- predict(fit, new.Data, interval = "confidence", level = 0.95)
pmu <- pfit$fit
lwr <- pfit$lower
upp <- pfit$upper
# make a plot to check the prediction
plot(x, y, type = "n", ylim = c(0, 1),
main = "Pointwise Confidence Bands (Binomial Response)")
rug(x[y == 0])
rug(x[y == 1], side = 3)
lines(x, mu)
lines(x, muhat, col = 5, lty = 2)
points(xinterp, pmu, pch = 20)
lines(xinterp, upp, col = 5)
points(xinterp, upp, pch = 20)
lines(xinterp, lwr, col = 5)
points(xinterp, lwr, pch = 20)