Compute cumulative sum of estimates.
Computes the cumulative sum of parameter functions and the
standard error of it. Used for computing the cumulative rate, or the
survival function based on a glm with parametric baseline.
ci.cum( obj,
ctr.mat = NULL,
subset = NULL,
intl = 1,
alpha = 0.05,
Exp = TRUE,
ci.Exp = FALSE,
sample = FALSE )
ci.surv( obj,
ctr.mat = NULL,
subset = NULL,
intl = 1,
alpha = 0.05,
Exp = TRUE,
sample = FALSE )obj |
A model object (of class
|
ctr.mat |
Matrix or data frame. If If it is a data frame it should have columns corresponding to a
prediction data frame for |
subset |
Subset of the parameters of the model to which a matrix
|
intl |
Interval length for the cumulation. Either a constant or
a numerical vector of length |
alpha |
Significance level used when computing confidence limits. |
Exp |
Should the parameter function be exponentiated before it is cumulated? |
ci.Exp |
Should the confidence limits for the cumulative rate be computed on the log-scale, thus ensuring that exp(-cum.rate) is always in [0,1]? |
sample |
Should a sample of the original parameters be used to compute a cumulative rate? |
The purpose of this function is to the compute cumulative rate
(integrated intensity) at a set of points based on a model for the
rates. ctr.mat is a matrix which, when premultiplied to the
parameters of the model returns the (log)rates at a set of increasing
time points. If log-rates are returned from the model, the they should
be exponentiated before cumulated, and the variances computed
accordingly. Since the primary use is for log-linear Poisson models
the Exp parameter defaults to TRUE.
Each row in the object supplied via ctr.mat is assumed to
represent a midpoint in an interval. ci.cum will then return
the cumulative rates at the end of these
intervals. ci.surv will return the survival probability at the
start of each of these intervals, assuming the the first
interval starts at 0 - the first row of the result is c(1,1,1).
The ci.Exp argument ensures that the confidence intervals for
the cumulative rates are always positive, so that exp(-cum.rate) is
always in [0,1].
A matrix with 3 columns: Estimate, lower and upper c.i. and standard
error, unless se=TRUE, in which case the standard error is
returned too. If sample is TRUE, a sampled vector is returned, if
sample is numeric a matrix with sample columns is
returned, each column a cumulative rate based on a random sample from
the distribution of the parameter estimates.
ci.surv returns a 3 column matrix with estimate, lower and
upper confidence interval.
Bendix Carstensen, http://bendixcarstensen.com
# Packages required for this example
library( splines )
library( survival )
data( lung )
par( mfrow=c(1,2) )
# Plot the Kaplan-meier-estimator
plot( survfit( Surv( time, status==2 ) ~ 1, data=lung ) )
# Declare data as Lexis
lungL <- Lexis( exit=list(tfd=time),
exit.status=(status==2)*1,
data=lung )
summary( lungL )
# Split the follow-up every 10 days
sL <- splitLexis( lungL, "tfd", breaks=seq(0,1100,10) )
summary( sL )
# Fit a Poisson model with a natural spline for the effect of time (left
# end points of intervals are used as covariate)
mp <- glm( cbind(lex.Xst==1,lex.dur) ~ Ns(tfd,knots=c(0,50,100,200,400,700)),
family=poisreg, data=sL )
# mp is now a model for the rates along the time scale tfd
# prediction data frame for select time points on this time scale
nd <- data.frame( tfd = seq(5,995,10) ) # *midpoints* of intervals
Lambda <- ci.cum ( mp, nd, intl=10 )
surv <- ci.surv( mp, nd, intl=10 )
# Put the estimated survival function on top of the KM-estimator
# recall the ci.surv return the survival at *start* of intervals
matshade( nd$tfd-5, surv, col="Red", alpha=0.15 )
# Extract and plot the fitted intensity function
lambda <- ci.pred( mp, nd )*365.25 # mortality
matshade( nd$tfd, lambda, log="y", ylim=c(0.2,5), plot=TRUE,
xlab="Time since diagnosis", ylab="Mortality per year" )
# same thing works with gam from mgcv
library( mgcv )
mg <- gam( cbind(lex.Xst==1,lex.dur) ~ s(tfd), family=poisreg, data=sL )
matshade( nd$tfd-5, ci.surv( mg, nd, intl=10 ), plot=TRUE,
xlab="Days since diagnosis", ylab="P(survival)" )
matshade( nd$tfd , ci.pred( mg, nd )*365.25 , plot=TRUE, log="y",
xlab="Days since diagnosis", ylab="Mortality per 1 py" )Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.