Skip to contents

pope: Fit Proportional Odds Regression Model with Piecewise Exponential baseline distribution.

Usage

pope(
  formula,
  data,
  n_int = NULL,
  rho = NULL,
  tau = NULL,
  hessian = TRUE,
  approach = c("mle", "bayes"),
  hyper_parms = list(h1_gamma = 0, h2_gamma = 4, mu_beta = 0, sigma_beta = 4),
  ...
)

Arguments

formula

an object of class "formula" (or one that can be coerced to that class): a symbolic description of the model to be fitted.

data

an optional data frame, list or environment (or object coercible by as.data.frame to a data frame) containing the variables in the model. If not found in data, the variables are taken from environment(formula), typically the environment from which pope is called.

n_int

number of intervals of the PE distribution. If NULL, default value (square root of n) is used.

rho

the time grid of the PE distribution. If NULL, the function timeGrid is used to compute rho.

tau

the maximum time of follow-up. If NULL, tau = max(time), where time is the vector of observed survival times.

hessian

logical; If TRUE (default), the hessian matrix is returned when approach="mle".

approach

approach to be used to fit the model (mle: maximum likelihood; bayes: Bayesian approach).

hyper_parms

a list containing the hyper-parameters of the prior distributions (when approach = "bayes"). If not specified, default values are used.

...

Arguments passed to either `rstan::optimizing` or `rstan::sampling` .

Value

pope returns an object of class "pope" containing the fitted model.

Examples

# \donttest{
# ML approach:
library(YPPE)
mle <- pope(Surv(time, status)~arm, data=ipass, n_int=10, approach="mle")
summary(mle)
#> Call:
#> pope(formula = Surv(time, status) ~ arm, data = ipass, n_int = 10, 
#>     approach = "mle")
#> 
#> Proportional odds coefficients:
#>      Estimate    StdErr z.value p.value
#> arm -0.051702  0.103114 -0.5014  0.6161
#> 
#> --- 
#> loglik = -2821.851   AIC = 5665.702 

# Bayesian approach:
bayes <- pope(Surv(time, status)~arm, data=ipass, n_int=10, approach="bayes")
#> 
#> SAMPLING FOR MODEL 'yppe' NOW (CHAIN 1).
#> Chain 1: 
#> Chain 1: Gradient evaluation took 0.000534 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 5.34 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1: 
#> Chain 1: 
#> Chain 1: Iteration:    1 / 2000 [  0%]  (Warmup)
#> Chain 1: Iteration:  200 / 2000 [ 10%]  (Warmup)
#> Chain 1: Iteration:  400 / 2000 [ 20%]  (Warmup)
#> Chain 1: Iteration:  600 / 2000 [ 30%]  (Warmup)
#> Chain 1: Iteration:  800 / 2000 [ 40%]  (Warmup)
#> Chain 1: Iteration: 1000 / 2000 [ 50%]  (Warmup)
#> Chain 1: Iteration: 1001 / 2000 [ 50%]  (Sampling)
#> Chain 1: Iteration: 1200 / 2000 [ 60%]  (Sampling)
#> Chain 1: Iteration: 1400 / 2000 [ 70%]  (Sampling)
#> Chain 1: Iteration: 1600 / 2000 [ 80%]  (Sampling)
#> Chain 1: Iteration: 1800 / 2000 [ 90%]  (Sampling)
#> Chain 1: Iteration: 2000 / 2000 [100%]  (Sampling)
#> Chain 1: 
#> Chain 1:  Elapsed Time: 3.691 seconds (Warm-up)
#> Chain 1:                3.589 seconds (Sampling)
#> Chain 1:                7.28 seconds (Total)
#> Chain 1: 
#> 
#> SAMPLING FOR MODEL 'yppe' NOW (CHAIN 2).
#> Chain 2: 
#> Chain 2: Gradient evaluation took 0.000483 seconds
#> Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 4.83 seconds.
#> Chain 2: Adjust your expectations accordingly!
#> Chain 2: 
#> Chain 2: 
#> Chain 2: Iteration:    1 / 2000 [  0%]  (Warmup)
#> Chain 2: Iteration:  200 / 2000 [ 10%]  (Warmup)
#> Chain 2: Iteration:  400 / 2000 [ 20%]  (Warmup)
#> Chain 2: Iteration:  600 / 2000 [ 30%]  (Warmup)
#> Chain 2: Iteration:  800 / 2000 [ 40%]  (Warmup)
#> Chain 2: Iteration: 1000 / 2000 [ 50%]  (Warmup)
#> Chain 2: Iteration: 1001 / 2000 [ 50%]  (Sampling)
#> Chain 2: Iteration: 1200 / 2000 [ 60%]  (Sampling)
#> Chain 2: Iteration: 1400 / 2000 [ 70%]  (Sampling)
#> Chain 2: Iteration: 1600 / 2000 [ 80%]  (Sampling)
#> Chain 2: Iteration: 1800 / 2000 [ 90%]  (Sampling)
#> Chain 2: Iteration: 2000 / 2000 [100%]  (Sampling)
#> Chain 2: 
#> Chain 2:  Elapsed Time: 3.723 seconds (Warm-up)
#> Chain 2:                3.62 seconds (Sampling)
#> Chain 2:                7.343 seconds (Total)
#> Chain 2: 
#> 
#> SAMPLING FOR MODEL 'yppe' NOW (CHAIN 3).
#> Chain 3: 
#> Chain 3: Gradient evaluation took 0.000444 seconds
#> Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 4.44 seconds.
#> Chain 3: Adjust your expectations accordingly!
#> Chain 3: 
#> Chain 3: 
#> Chain 3: Iteration:    1 / 2000 [  0%]  (Warmup)
#> Chain 3: Iteration:  200 / 2000 [ 10%]  (Warmup)
#> Chain 3: Iteration:  400 / 2000 [ 20%]  (Warmup)
#> Chain 3: Iteration:  600 / 2000 [ 30%]  (Warmup)
#> Chain 3: Iteration:  800 / 2000 [ 40%]  (Warmup)
#> Chain 3: Iteration: 1000 / 2000 [ 50%]  (Warmup)
#> Chain 3: Iteration: 1001 / 2000 [ 50%]  (Sampling)
#> Chain 3: Iteration: 1200 / 2000 [ 60%]  (Sampling)
#> Chain 3: Iteration: 1400 / 2000 [ 70%]  (Sampling)
#> Chain 3: Iteration: 1600 / 2000 [ 80%]  (Sampling)
#> Chain 3: Iteration: 1800 / 2000 [ 90%]  (Sampling)
#> Chain 3: Iteration: 2000 / 2000 [100%]  (Sampling)
#> Chain 3: 
#> Chain 3:  Elapsed Time: 3.77 seconds (Warm-up)
#> Chain 3:                3.495 seconds (Sampling)
#> Chain 3:                7.265 seconds (Total)
#> Chain 3: 
#> 
#> SAMPLING FOR MODEL 'yppe' NOW (CHAIN 4).
#> Chain 4: 
#> Chain 4: Gradient evaluation took 0.000482 seconds
#> Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 4.82 seconds.
#> Chain 4: Adjust your expectations accordingly!
#> Chain 4: 
#> Chain 4: 
#> Chain 4: Iteration:    1 / 2000 [  0%]  (Warmup)
#> Chain 4: Iteration:  200 / 2000 [ 10%]  (Warmup)
#> Chain 4: Iteration:  400 / 2000 [ 20%]  (Warmup)
#> Chain 4: Iteration:  600 / 2000 [ 30%]  (Warmup)
#> Chain 4: Iteration:  800 / 2000 [ 40%]  (Warmup)
#> Chain 4: Iteration: 1000 / 2000 [ 50%]  (Warmup)
#> Chain 4: Iteration: 1001 / 2000 [ 50%]  (Sampling)
#> Chain 4: Iteration: 1200 / 2000 [ 60%]  (Sampling)
#> Chain 4: Iteration: 1400 / 2000 [ 70%]  (Sampling)
#> Chain 4: Iteration: 1600 / 2000 [ 80%]  (Sampling)
#> Chain 4: Iteration: 1800 / 2000 [ 90%]  (Sampling)
#> Chain 4: Iteration: 2000 / 2000 [100%]  (Sampling)
#> Chain 4: 
#> Chain 4:  Elapsed Time: 3.792 seconds (Warm-up)
#> Chain 4:                3.607 seconds (Sampling)
#> Chain 4:                7.399 seconds (Total)
#> Chain 4: 
summary(bayes)
#> Call:
#> pope(formula = Surv(time, status) ~ arm, data = ipass, n_int = 10, 
#>     approach = "bayes")
#> 
#> Proportional hazards coefficients:
#>       mean se_mean    sd   2.5%   25%    50%   75% 97.5%    n_eff Rhat
#> arm -0.049   0.002 0.107 -0.257 -0.12 -0.049 0.023  0.16 4362.482    1
#> --- 
#> Inference for Stan model: yppe.
#> 4 chains, each with iter=2000; warmup=1000; thin=1; 
#> post-warmup draws per chain=1000, total post-warmup draws=4000.
#> 
# }