| predict.flexrsurv {flexrsurv} | R Documentation |
Predictions for a relative survival model
Description
Predict linear predictors, hazard and cumulative
hazard for a model fitted by flexrsuv
Usage
## S3 method for class 'flexrsurv'
predict(object, newdata= NULL,
type = c("lp", "link", "risk", "hazard", "hazardrate",
"rate", "loghazard", "log", "lograte",
"cumulative.rate", "cumulative.hazard", "cumulative", "cum",
"survival", "surv", "netsurv"),
se.fit=FALSE,
ci.fit = FALSE,
level = .95,
na.action=na.pass, ...)
Arguments
object |
the results of a flexrsurv fit. |
newdata |
Optional new data at which to do predictions. If absent predictions are for the data frame used in the original fit. |
type |
the type of predicted value.
Choices are the linear predictor ( |
se.fit |
if TRUE, pointwise standard errors are produced for the predictions (not available for cumulative hazard). |
ci.fit |
if TRUE, confidence intervale are produced for the predictions. |
level |
Confidence level. |
na.action |
function determining what should be done with missing values in
|
... |
For future methods |
Details
For cumulative hazard, the cumulative hazard is computed from 0 until the given end time. The cumulative hazard is computed using the same numerical integration method as the one used to fit the model.
Value
a vector or a list containing the predictions (element "fit") and their
standard errors (element "se.fit") if the se.fit option is TRUE.
Note
To work correctly, arguments Boundary.knots and
Boundary.knots.t must be included in the call to NPH(), NLL() and
NPHNLL() in the formula of flexrsurv
See Also
predict, flexrsurv, flexrsurvclt
Examples
if (requireNamespace("relsurv", quietly = TRUE)) {
# data from package relsurv
data(rdata, package="relsurv")
# rate table from package relsurv
data(slopop, package="relsurv")
# get the death rate at event (or end of followup) from slopop for rdata
rdata$iage <- findInterval(rdata$age*365.24+rdata$time, attr(slopop, "cutpoints")[[1]])
rdata$iyear <- findInterval(rdata$year+rdata$time, attr(slopop, "cutpoints")[[2]])
therate <- rep(-1, dim(rdata)[1])
for( i in 1:dim(rdata)[1]){
therate[i] <- slopop[rdata$iage[i], rdata$iyear[i], rdata$sex[i]]
}
rdata$slorate <- therate
# change sex coding
rdata$sex01 <- rdata$sex -1
# centering age
rdata$agec <- rdata$age- 60
# fit a relative survival model with a non linear effect of age
fit <- flexrsurv(Surv(time,cens)~sex01+NLL(age, Knots=60, Degree=3,
Boundary.knots = c(24, 95)),
rate=slorate, data=rdata,
knots.Bh=1850, # one interior knot at 5 years
degree.Bh=3,
Spline = "b-spline",
initbyglm=TRUE,
int_meth= "BOOLE",
step=50
)
summary(fit, correlation=TRUE)
newrdata <- rdata
newrdata$age <- rep(60, length(rdata$age))
newrdata$sex <- factor(newrdata$sex, labels=c("m", "f"))
linpred <- predict(fit, newdata=newrdata, type="lp", ci.fit=TRUE)
predhazard <- predict(fit, newdata=newrdata, type="hazard" , ci.fit=TRUE)
predcumhazard <- predict(fit, newdata=newrdata, type="cum", ci.fit=TRUE)
require(ggplot2)
tmp <- cbind(newrdata, linpred)
glp <- ggplot(tmp, aes(time, colour=sex))
glp + geom_ribbon(aes(ymin = lwr, ymax = upr, fill=sex)) +
geom_line(aes(y=fit)) +
scale_fill_manual(values = alpha(c("blue", "red"), .3))
tmp <- cbind(newrdata, predhazard)
glp <- ggplot(tmp, aes(time, colour=sex))
glp + geom_ribbon(aes(ymin = lwr, ymax = upr, fill=sex)) +
geom_line(aes(y=fit)) +
scale_fill_manual(values = alpha(c("blue", "red"), .3))
tmp <- cbind(newrdata, predcumhazard)
glp <- ggplot(tmp, aes(time, colour=sex))
glp + geom_ribbon(aes(ymin = lwr, ymax = upr, fill=sex)) +
geom_line(aes(y=fit)) +
scale_fill_manual(values = alpha(c("blue", "red"), .3))
}