# SurvRegCens: Weibull Survival Regression Model with a censored covariate In SurvRegCensCov: Weibull Regression for a Right-Censored Endpoint with Interval-Censored Covariate

## Description

Computes estimators for the shape and scale parameter of the Weibull distribution, as well as for the vector of regression parameters in a parametric survival model with potentially right-censored time-to-event endpoint distributed according to a Weibull distribution. The regression allows for one potentially interval-censored and an arbitrary number of non-censored covariates.

## Usage

 ```1 2``` ```SurvRegCens(formula, data = parent.frame(), Density, initial, conf.level = 0.95, intlimit = 10^-10, namCens = "VarCens", trace = 0, reltol = 10^-8) ```

## Arguments

 `formula` A formula expression as for other regression models. The response has to be a survival object for right-censored data, as returned by the `Surv` function. The censored covariate is equally specified using `Surv`. See the examples below and the documentation for `Surv`, `lm` and `formula` for details. `data` A data frame in which to interpret the variables named in the formula argument. `Density` Density function of the censored covariate. `initial` Initial values for the parameters to be optimized over, ordered according to Scale parameter, Shape parameter, regression parameters (i.e. β) linked to the non-censored covariates, regression parameter (i.e. β) linked to the censored covariate. A straightforward initial vector is based on ignoring the censoring of the censored covariate and using `survreg`, see the example below for an illustration. `conf.level` Confidence level of confidence intervals. `intlimit` In computation of integrals, values of the function to be integrated below `intlimit` are set to 0. This makes integration results more accurate and speeds up integration. If the data is such that the absolute values of the underlying baseline Weibull density are very small, i.e. in the range of `intlimit`, it is advisable to rescale the time variable, e.g. change the scaling from days to years. A very small value of the estimated λ is indicative of that situation. `namCens` Name of censored covariate, to tidy outputs. `trace` `trace` argument in `optim`, indicates whether to show optimization progress. `reltol` `reltol` argument in `optim`. By changing this one can modify the relative tolerance in maximization of the likelihood function.

## Details

The time-to-event distributed according to a Weibull distribution, i.e. time-to-event ~ Weibull(λ,γ), has conditional density given by,

f_{Y_i}(t|x_i,β) =γ * λ * t^(γ-1) * exp(x_i*β) * exp(- λ * t^γ * exp(x_i*β)),

conditional hazard function given by,

h_i(t|x_i,β)= λ * γ * t^(γ-1) * exp(x_i*β),

and conditional survival function given by,

S_i(t|x_i,β) = exp(- λ * t^γ * exp(x_i*β),

where x_i collects the values of each covariate for observation i and β represents the regression parameters.

## Value

`SurvRegCens` returns an object of class `"src"`, a list containing the following components:

 `coeff` Estimators, confidence intervals, p-values for the for the null hypothesis: {Estimators is equal to 0}, and this for each of the parameters of the Weibull survival regression model. `percent.cens` Percentage of censored observations in the censored covariate. `loglik` Log-likelihood function value at the estimators. `info.converg` Convergence information provided by the function `optim`. `info.converg.message` Message provided by `optim`.

The methods `print.src`, `summary.src`, `coef.src`, and `logLik.src` are used to print or obtain a summary, coefficients, or the value of the log-likelihood at the maximum.

## Author(s)

Stanislas Hubeaux, [email protected]

Kaspar Rufibach, [email protected]
http://www.kasparrufibach.ch

## References

Hubeaux, S. (2013). Parametric Surival Regression Model with left- and/or interval-censored covariate. Technical report, Biostatistics Oncology, F. Hoffmann-La Roche Ltd.

Hubeaux, S. and Rufibach, K. (2014). SurvRegCensCov: Weibull Regression for a Right-Censored Endpoint with a Censored Covariate. Preprint, http://arxiv.org/abs/1402.0432.

Sattar, A., Sinha, S. K. and Morris, N. J. (2012). A Parametric Survival Model When a Covariate is Subject to Left-Censoring. Biometrics & Biostatistics, S3(2).

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97``` ```## Not run: ## -------------------------------------------------------------- ## 1 censored-covariate and 2 non-censored covariates ## no censoring, to compare result with survival::survreg ## modify prop.cens to introduce left-censoring of covariate ## -------------------------------------------------------------- set.seed(158) n <- 100 lambda <- exp(-2) gamma <- 1.5 ## vector of regression parameters: the last entry is the one for the censored covariate beta <- c(0.3, -0.2, 0.25) true <- c(lambda, gamma, beta) ## non-censored covariates var1 <- rnorm(n, mean = 4, sd = 0.5) var2 <- rnorm(n, mean = 4, sd = 0.5) ## Generate censored covariate. ## For generation of Weibull survival times, do not left-censor it yet. var3 <- rnorm(n, mean = 5, sd = 0.5) ## simulate from a Weibull regression model time <- TimeSampleWeibull(covariate_noncens = data.frame(var1, var2), covariate_cens = var3, lambda = lambda, gamma = gamma, beta = beta) ## left-censor covariate ## prop.cens specifies the proportion of observations that should be left-censored prop.cens <- 0 LOD <- qnorm(prop.cens, mean = 5, sd = 0.5) var3.cens <- censorContVar(var3, LLOD = LOD) ## censor survival time event <- matrix(1, nrow = n, ncol = 1) time.cens <- rexp(n, rate = 0.5) ind.time <- (event >= time.cens) event[ind.time] <- 0 time[ind.time] <- time.cens[ind.time] ## specify the density for the censored covariate: ## For simplicity, we take here the "true" density we simulate from. In an application, ## you might want to use a density with parameters estimated from the censored covariate, ## e.g. using the function ParamSampleCens. See example in Hubeaux & Rufibach (2014). DensityCens <- function(value){return(dnorm(value, mean = 5, sd = 0.5))} ## use Weibull regression where each censored covariate value is set ## to LOD ("naive" method) naive <- survreg(Surv(time, event) ~ var1 + var2 + var3.cens[, 2], dist = "weibull") initial <- as.vector(ConvertWeibull(naive)\$vars[, 1]) ## use new method that takes into account the left-censoring of one covariate data <- data.frame(time, event, var3.cens, var1, var2) formula <- formula(Surv(time, event) ~ Surv(time = var3.cens[, 1], time2 = var3.cens[, 2], type = "interval2") + var1 + var2) cens1 <- SurvRegCens(formula = formula, data = data, Density = DensityCens, initial = initial, namCens = "biomarker") summary(cens1) coef(cens1) logLik(cens1) ## compare estimates tab <- data.frame(cbind(true, initial, cens1\$coeff[, 1])) colnames(tab) <- c("true", "naive", "Weibull MLE") rownames(tab) <- rownames(cens1\$coeff) tab ## compare confidence intervals ConvertWeibull(naive)\$HR[, 2:3] cens1\$coeff[, 7:8] ## -------------------------------------------------------------- ## model without the non-censored covariates ## -------------------------------------------------------------- naive2 <- survreg(Surv(time, event) ~ var3.cens[, 2], dist = "weibull") initial2 <- as.vector(ConvertWeibull(naive2)\$vars[, 1]) ## use new method that takes into account the left-censoring of one covariate formula <- formula(Surv(time, event) ~ Surv(time = var3.cens[, 1], time2 = var3.cens[, 2], type = "interval2")) cens2 <- SurvRegCens(formula = formula, data = data, Density = DensityCens, initial = initial2, namCens = "biomarker") summary(cens2) ## compare estimates tab <- data.frame(cbind(true[c(1, 2, 5)], initial2, cens2\$coeff[, 1])) colnames(tab) <- c("true", "naive", "Weibull MLE") rownames(tab) <- rownames(cens2\$coeff) tab ## compare confidence intervals ConvertWeibull(naive2)\$HR[, 2:3] cens2\$coeff[, 7:8] ## End(Not run) ```

### Example output

```Loading required package: survival

Weibull regression for a right-censored response with an interval-censored covariate

Call:
SurvRegCens(formula = formula, data = data, Density = DensityCens,
initial = initial, namCens = "biomarker")

Coefficients:
Estimate Std. Error    CI.low     CI.up p-value
lambda     0.001959   0.004254 -0.006380  0.010297      NA
gamma      1.614858   0.152556  1.315855  1.913862      NA
var1       0.385001   0.291292 -0.185922  0.955923  0.1863
var2       0.475895   0.289898 -0.092295  1.044086  0.1007
biomarker  0.490131   0.293964 -0.086029  1.066290  0.0955

AIC: 276.1
lambda   gamma  var1   var2 biomarker
0.00196 1.61486 0.385 0.4759   0.49013
'log Lik.' -133.03514 (df=5)                true       naive Weibull MLE
lambda     0.1353353 0.001958688 0.001958688
gamma      1.5000000 1.614858351 1.614858351
var1       0.3000000 0.385000733 0.385000733
var2      -0.2000000 0.475895438 0.475895438
biomarker  0.2500000 0.490130621 0.490130621
LB       UB
var1           0.8303384 2.601071
var2           0.9118360 2.840801
var3.cens[, 2] 0.9175676 2.904584
exp(CI.low) exp(CI.up)
lambda             NA         NA
gamma              NA         NA
var1        0.8303384   2.601071
var2        0.9118360   2.840801
biomarker   0.9175676   2.904584

Weibull regression for a right-censored response with an interval-censored covariate

Call:
SurvRegCens(formula = formula, data = data, Density = DensityCens,
initial = initial2, namCens = "biomarker")

Coefficients:
Estimate Std. Error   CI.low    CI.up p-value
lambda     0.07799    0.11385 -0.14515  0.30112      NA
gamma      1.54765    0.14361  1.26618  1.82912      NA
biomarker  0.44208    0.29145 -0.12914  1.01331   0.129

AIC: 277.6
true      naive Weibull MLE
lambda    0.1353353 0.07798653  0.07798653
gamma     1.5000000 1.54764945  1.54764945
biomarker 0.2500000 0.44208204  0.44208204
LB        UB
0.8788471 2.7546997
exp(CI.low) exp(CI.up)
lambda             NA         NA
gamma              NA         NA
biomarker   0.8788471     2.7547
```

SurvRegCensCov documentation built on May 30, 2017, 3:32 a.m.