Type: Package
Title: Isotonic Regression on Survival Analysis
Version: 0.3.0
Date: 2023-9-1
Description: Nonparametric estimation on survival analysis under order-restrictions.
Depends: R (≥ 3.6.0), Iso, survival, stats, graphics
License: GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]
Encoding: UTF-8
NeedsCompilation: no
Packaged: 2023-09-02 06:09:36 UTC; ychung36
Author: Yunro Chung ORCID iD [aut, cre]
Maintainer: Yunro Chung <yunro.chung@asu.edu>
Repository: CRAN
Date/Publication: 2023-09-02 06:30:06 UTC

Isotonic Regression on Survival Analysis

Description

Nonparametric estimation on survival analysis under order restrictions

Details

Package: isoph
Type: Package
Version: 0.3.0
Date: 2023-9-1
License: GPL (>= 2)

Author(s)

Yunro Chung [aut,cre] Maintainer: Yunro Chung <yunro.chung@asu.edu>

References

Yunro Chung, Anastasia Ivanova, Michael G. Hudgens, Jason P. Fine (2018), Partial likelihood estimation of isotonic proportional hazards models, Biometrika, 105(1), 133-148. doi:10.1093/biomet/asx064


Fit Double Isotonic Proportional Hazards Model

Description

Nonparametric estimation of monotone baseline hazard and monotone covariate effect functions in the proportional hazards model.

Usage

  disoph(formula, bshape, data, maxiter, eps)

Arguments

formula

formula object: response ~ iso(z,shape="increasing")+x_1+x_2+...+x_p. The response must be right-censored survival outcome using the Surv function in the survival package. The iso function attributes the covariate z' name, shape and anchor point.

bshape

direnction of the baseline hazard function (bshape="increasing" or "decreasing").

data

data.frame includes variables named in the formula argument.

maxiter

maximum number of iteration (default is 10^4).

eps

stopping convergence criteria (default is 10^-3).

Details

The disoph function computes (\lambda0, \psi, \beta) in the isotonic proportional hazards model, defined as

\lambda(t|z,x)=\lambda0(t)exp(\psi(z)+\beta_1x_1+\beta_2x_2+...+\beta_px_p),

based on the full likelihood, where \lambda0 is a monotone increasing (or decreasing) baseline hazard function, \psi is a monotone increasing (or decreasing) covariate effect function, z is a univariate variable, (x_1,x_2,...,x_p) is a set of covariates, and \beta=(\beta_1,\beta_2,...,\beta_p) is a set of corresponding regression parameters. It allows to estimate (\lambda0, \beta) only if iso(z,shape="increasing") is removed in the formula object. Likewise, It allows to estimate (\lambda0, \psi) only if x is removed in the formula object. Using the nonparametric maximum likelihood approaches, estimated \lambda0 and \psi are right continuous increasing (or left continuos decreasing) step functions. Compared to the standard partial likelihood approach, the full likelihood approach in the disoph function additionally use shape-information on \lambda0, resulting in more efficient estimators especially for a finate sampe size.

For the anchor constraint, one point has to be fixed with \psi(K)=0 to solve the identifiability problem, e.g. \lambda0(t)exp(\psi(z))=(\lambda0(t)exp(-c))(exp(\psi(z)+c)) for any constant c. K is called an anchor point. By default, we set K as a median of values of z's. The choice of anchor points are not important because, for example, different anchor points results in the same hazard ratios.

Value

A list of class fisoph:

iso.bh

data.frame with t and estimated \lambda0(t).

iso.cov

data.frame with z and estimated \psi(z).

beta

estimated \beta_1,\beta_2,...,\beta_p.

conv

algorithm convergence status.

iter

total number of iterations.

Zk

anchor satisfying estimated \psi(Zk)=0.

shape.bh

order restriction on \lambda0.

shape.cov

order restriction on \psi.

Author(s)

Yunro Chung [auth, cre]

References

Yunro Chung, Double Isotonic Proportional Hazards Models with Applications to Dose-Finding Studies. In preparation.

Examples

#test1
test1=data.frame(
  time=  c(2, 5, 1, 7, 9, 5, 3, 6, 8, 9, 7, 4, 5, 2, 8),
  status=c(0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1),
  z=     c(2, 1, 1, 3, 5, 6, 7, 9, 3, 0, 2, 7, 3, 9, 4)
)
disoph.fit1=disoph(Surv(time, status)~iso(z,shape="inc"),bshape="inc",data=test1)
print(disoph.fit1)
plot(disoph.fit1)

#test2
test2=data.frame(
  time=  c(2, 5, 1, 7, 9, 5, 3, 6, 8, 9, 7, 4, 5, 2, 8),
  status=c(0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1),
  z=     c(2, 1, 1, 3, 5, 6, 7, 9, 3, 0, 2, 7, 3, 9, 4),
  trt=   c(1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0),
  x=     c(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6)
)
disoph.fit2=disoph(Surv(time, status)~iso(z,shape="inc")+trt+x,bshape="inc",data=test2)
print(disoph.fit2)
plot(disoph.fit2)

Attributions of isotonic covariate effect

Description

attributes the covariate with respect to the name, direction, anchor point, and class.

Usage

  iso(z, shape)

Arguments

z

a univariate covariate.

shape

a direction of z (shape="increasing" or "decreasing").

Details

Internal function. The iso function attributes the covariate z for its name, shape , anchor point and class, where the anchor point is set to a median of z's, and class is set to "iso covariate"

Value

The value z with attribution of its name, shape and median anchor point.

Author(s)

Yunro Chung [cre]


Fit Isotonic Proportional Hazards Model

Description

Nonparametric estimation of a monotone covariate effect under the proportional hazards model.

Usage

  isoph(formula, data, maxiter, eps)

Arguments

formula

a formula object: response ~ iso(z,shape="increasing")+x_1+x_2+...+x_p. The response must be right-censored survival outcome using the Surv function in the survival package. The iso function attributes the covariate z' name, shape and anchor point.

data

data.frame includes variables named in the formula argument.

maxiter

maximum number of iteration (default is 10^4).

eps

stopping convergence criteria (default is 10^-3).

Details

The isoph function estimates (\psi, \beta) in the isotonic proportional hazards model, defined as

\lambda(t|z,x)=\lambda0(t)exp(\psi(z)+\beta_1x_1+\beta_2x_2+...+\beta_px_p),

based on the partial likelihood with unspecified baseline hazard function \lambda0, where \psi is a monotone increasing (or decreasing) covariate effect function, z is a univariate variable, x=(x_1,x_2,...,x_p) is a set of covariates, and \beta=(\beta_1,\beta_2,...,\beta_p) is a set of corresponding regression parameters. It allows to estimate \psi only if x is removed in the formula object. Using the nonparametric maximum likelihood approaches, estimated \psi is a right continuous increasing (or left continuos decreasing) step function.

For the anchor constraint, one point has to be fixed with \psi(K)=0 to solve the identifiability problem, e.g. \lambda0(t)exp(\psi(z))=(\lambda0(t)exp(-c))(exp(\psi(z)+c)) for any constant c. K is called an anchor point. By default, we set K as a median of values of z's. The choice of anchor points are not important because, for example, different anchor points results in the same hazard ratios.

Value

A list of class isoph:

iso.cov

data.frame with z and estimated \psi.

beta

estimated \beta_1,\beta_2,...,\beta_p.

conv

algorithm convergence status.

iter

total number of iterations.

Zk

anchor point satisfying \psi(Zk)=0.

shape

Order-restriction imposed on \psi.

Author(s)

Yunro Chung [aut, cre]

References

Yunro Chung, Anastasia Ivanova, Michael G. Hudgens, Jason P. Fine, Partial likelihood estimation of isotonic proportional hazards models, Biometrika. 2018, 105 (1), 133-148. doi:10.1093/biomet/asx064

Examples

# test1
test1=data.frame(
  time=  c(2, 5, 1, 7, 9, 5, 3, 6, 8, 9, 7, 4, 5, 2, 8),
  status=c(0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1),
  z=     c(2, 1, 1, 3, 5, 6, 7, 9, 3, 0, 2, 7, 3, 9, 4)
)
isoph.fit1=isoph(Surv(time, status)~iso(z,shape="inc"),data=test1)
print(isoph.fit1)
plot(isoph.fit1)

# test2
test2=data.frame(
  time=  c(2, 5, 1, 7, 9, 5, 3, 6, 8, 9, 7, 4, 5, 2, 8),
  status=c(0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1),
  z=     c(2, 1, 1, 3, 5, 6, 7, 9, 3, 0, 2, 7, 3, 9, 4),
  trt=   c(1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0)
)
isoph.fit2=isoph(Surv(time, status)~iso(z,shape="inc")+trt, data=test2)
print(isoph.fit2)
plot(isoph.fit2)