Learn R Programming

timereg (version 2.0.1)

prop.odds.subdist: Fit Semiparametric Proportional 0dds Model for the competing risks subdistribution

Description

Fits a semiparametric proportional odds model: $$ logit(F_1(t;X,Z)) = log( A(t)) + \beta^T Z $$ where A(t) is increasing but otherwise unspecified. Model is fitted by maximising the modified partial likelihood. A goodness-of-fit test by considering the score functions is also computed by resampling methods.

Usage

prop.odds.subdist(
  formula,
  data = parent.frame(),
  cause = 1,
  beta = NULL,
  Nit = 10,
  detail = 0,
  start.time = 0,
  max.time = NULL,
  id = NULL,
  n.sim = 500,
  weighted.test = 0,
  profile = 1,
  sym = 0,
  cens.model = "KM",
  cens.formula = NULL,
  clusters = NULL,
  max.clust = 1000,
  baselinevar = 1,
  weights = NULL,
  cens.weights = NULL
)

Arguments

formula

a formula object, with the response on the left of a '~' operator, and the terms on the right. The response must be an object as returned by the `Event' function.

data

a data.frame with the variables.

cause

cause indicator for competing risks.

beta

starting value for relative risk estimates

Nit

number of iterations for Newton-Raphson algorithm.

detail

if 0 no details is printed during iterations, if 1 details are given.

start.time

start of observation period where estimates are computed.

max.time

end of observation period where estimates are computed. Estimates thus computed from [start.time, max.time]. This is very useful to obtain stable estimates, especially for the baseline. Default is max of data.

id

For timevarying covariates the variable must associate each record with the id of a subject.

n.sim

number of simulations in resampling.

weighted.test

to compute a variance weighted version of the test-processes used for testing time-varying effects.

profile

use profile version of score equations.

sym

to use symmetrized second derivative in the case of the estimating equation approach (profile=0). This may improve the numerical performance.

cens.model

specifies censoring model. So far only Kaplan-Meier "KM".

cens.formula

possible formula for censoring distribution covariates. Default all !

clusters

to compute cluster based standard errors.

max.clust

number of maximum clusters to be used, to save time in iid decomposition.

baselinevar

set to 0 to save time on computations.

weights

additional weights.

cens.weights

specify censoring weights related to the observations.

Value

returns an object of type 'cox.aalen'. With the following arguments:

cum

cumulative timevarying regression coefficient estimates are computed within the estimation interval.

var.cum

the martingale based pointwise variance estimates.

robvar.cum

robust pointwise variances estimates.

gamma

estimate of proportional odds parameters of model.

var.gamma

variance for gamma.

robvar.gamma

robust variance for gamma.

residuals

list with residuals. Estimated martingale increments (dM) and corresponding time vector (time).

obs.testBeq0

observed absolute value of supremum of cumulative components scaled with the variance.

pval.testBeq0

p-value for covariate effects based on supremum test.

sim.testBeq0

resampled supremum values.

obs.testBeqC

observed absolute value of supremum of difference between observed cumulative process and estimate under null of constant effect.

pval.testBeqC

p-value based on resampling.

sim.testBeqC

resampled supremum values.

obs.testBeqC.is

observed integrated squared differences between observed cumulative and estimate under null of constant effect.

pval.testBeqC.is

p-value based on resampling.

sim.testBeqC.is

resampled supremum values.

conf.band

resampling based constant to construct robust 95% uniform confidence bands.

test.procBeqC

observed test-process of difference between observed cumulative process and estimate under null of constant effect over time.

loglike

modified partial likelihood, pseudo profile likelihood for regression parameters.

D2linv

inverse of the derivative of the score function.

score

value of score for final estimates.

test.procProp

observed score process for proportional odds regression effects.

pval.Prop

p-value based on resampling.

sim.supProp

re-sampled supremum values.

sim.test.procProp

list of 50 random realizations of test-processes for constant proportional odds under the model based on resampling.

Details

An alternative way of writing the model : $$ F_1(t;X,Z) = \frac{ \exp( \beta^T Z )}{ (A(t)) + \exp( \beta^T Z) } $$ such that \(\beta\) is the log-odds-ratio of cause 1 before time t, and \(A(t)\) is the odds-ratio.

The modelling formula uses the standard survival modelling given in the survival package.

The data for a subject is presented as multiple rows or "observations", each of which applies to an interval of observation (start, stop]. The program essentially assumes no ties, and if such are present a little random noise is added to break the ties.

References

Eriksson, Li, Zhang and Scheike (2014), The proportional odds cumulative incidence model for competing risks, Biometrics, to appear.

Scheike, A flexible semiparametric transformation model for survival data, Lifetime Data Anal. (2007).

Martinussen and Scheike, Dynamic Regression Models for Survival Data, Springer (2006).

Examples

Run this code
# NOT RUN {
library(timereg)
data(bmt)
# Fits Proportional odds model 
out <- prop.odds.subdist(Event(time,cause)~platelet+age+tcell,data=bmt,
 cause=1,cens.model="KM",detail=0,n.sim=1000)
summary(out) 
par(mfrow=c(2,3))
plot(out,sim.ci=2); 
plot(out,score=1) 

# simple predict function without confidence calculations 
pout <- predictpropodds(out,X=model.matrix(~platelet+age+tcell,data=bmt)[,-1])
matplot(pout$time,pout$pred,type="l")

# predict function with confidence intervals
pout2 <- predict(out,Z=c(1,0,1))
plot(pout2,col=2)
pout1 <- predictpropodds(out,X=c(1,0,1))
lines(pout1$time,pout1$pred,type="l")

# Fits Proportional odds model with stratified baseline, does not work yet!
###out <- Gprop.odds.subdist(Surv(time,cause==1)~-1+factor(platelet)+
###prop(age)+prop(tcell),data=bmt,cause=bmt$cause,
###cens.code=0,cens.model="KM",causeS=1,detail=0,n.sim=1000)
###summary(out) 
###par(mfrow=c(2,3))
###plot(out,sim.ci=2); 
###plot(out,score=1) 

# }

Run the code above in your browser using DataLab