simPH (version 0.8.4)

coxsimtvc: Simulate time-varying quantities of interest from Cox Proportional Hazards models

Description

coxsimtvc simulates time-varying relative hazards, first differences, and hazard ratios from models estimated with coxph using the multivariate normal distribution. These can be plotted with simGG.

Usage

coxsimtvc(obj, b, btvc, qi = "Relative Hazard",
    Xj = NULL, Xl = NULL, tfun = "linear", pow = NULL,
    nsim = 1000, from, to, by = 1, ci = 0.95, spin = FALSE)

Arguments

obj
a coxph fitted model object with a time interaction.
b
the non-time interacted variable's name.
btvc
the time interacted variable's name.
qi
character string indicating what quantity of interest you would like to calculate. Can be 'Relative Hazard', 'First Difference', 'Hazard Ratio', 'Hazard Rate'. Default is qi = 'Relative Haz
Xj
numeric vector of fitted values for b. Must be the same length as Xl or Xl must be NULL.
Xl
numeric vector of fitted values for Xl. Must be the same length as Xj. Only applies if qi = 'First Difference' or qi = 'Hazard Ratio'.
nsim
the number of simulations to run per point in time. Default is nsim = 1000.
tfun
function of time that btvc was multiplied by. Default is "linear". It can also be "log" (natural log) and "power". If tfun = "power" then the pow argument needs to be specified also.
pow
if tfun = "power", then use pow to specify what power the time interaction was raised to.
from
point in time from when to begin simulating coefficient values
to
point in time to stop simulating coefficient values.
by
time intervals by which to simulate coefficient values.
ci
the proportion of simulations to keep. The default is ci = 0.95, i.e. keep the middle 95 percent. If spin = TRUE then ci is the confidence level of the shortest probability interval. Any value from 0 through
spin
logical, whether or not to keep only the shortest probability interval rather than the middle simulations. Currently not supported for hazard rates.

Value

  • a simtvc object

Details

Simulates time-varying relative hazards, first differences, and hazard ratios using parameter estimates from coxph models. Can also simulate hazard rates for multiple strata.

Relative hazards are found using: $$RH = e^{\beta_{1} + \beta_{2}f(t)}$$ where $f(t)$ is the function of time.

First differences are found using: $$FD = (e^{(X_{j} - X_{l}) (\beta_{1} + \beta_{2}f(t))} - 1) * 100$$ where $X_{j}$ and $X_{l}$ are some values of $X$ to contrast.

Hazard ratios are calculated using: $$FD = e^{(X_{j} - X_{l}) (\beta_{1} + \beta_{2}f(t))}$$ When simulating non-stratifed time-varying harzards coxsimtvc uses the point estimates for a given coefficient $\hat{\beta}_{x}$ and its time interaction $\hat{\beta}_{xt}$ along with the variance matrix ($\hat{V}(\hat{\beta})$) estimated from a coxph model. These are used to draw values of $\beta_{1}$ and $\beta_{2}$ from the multivariate normal distribution $N(\hat{\beta},\: \hat{V}(\hat{beta}))$.

When simulating stratified time-varying hazard rates $H$ for a given strata $k$, coxsimtvc uses: $$H_{kxt} = \hat{\beta_{k0t}}\exp{\hat{\beta_{1}} + \beta_{2}f(t)}$$ The resulting simulation values can be plotted using simGG.

References

Golub, Jonathan, and Bernard Steunenberg. 2007. ''How Time Affects EU Decision-Making.'' European Union Politics 8(4): 555-66.

Licht, Amanda A. 2011. ''Change Comes with Time: Substantive Interpretation of Nonproportional Hazards in Event History Analysis.'' Political Analysis 19: 227-43.

King, Gary, Michael Tomz, and Jason Wittenberg. 2000. ''Making the Most of Statistical Analyses: Improving Interpretation and Presentation.'' American Journal of Political Science 44(2): 347-61.

Liu, Ying, Andrew Gelman, and Tian Zheng. 2013. ''Simulation-Efficient Shortest Probability Intervals.'' Arvix. http://arxiv.org/pdf/1302.2142v1.pdf.

See Also

simGG, survival, strata, and coxph

Examples

Run this code
# Load Golub & Steunenberg (2007) Data
data("GolubEUPData")

# Load survival package
library(survival)

# Create natural log time interactions
Golubtvc <- function(x){
  assign(paste0("l", x), tvc(GolubEUPData, b = x, tvar = "end", tfun = "log"))
}

GolubEUPData$Lcoop <-Golubtvc("coop")
GolubEUPData$Lqmv <- Golubtvc("qmv")
GolubEUPData$Lbacklog <- Golubtvc("backlog")
GolubEUPData$Lcodec <- Golubtvc("codec")
GolubEUPData$Lqmvpostsea <- Golubtvc("qmvpostsea")
GolubEUPData$Lthatcher <- Golubtvc("thatcher")

# Run Cox PH Model
M1 <- coxph(Surv(begin, end, event) ~
            qmv + qmvpostsea + qmvpostteu +
            coop + codec + eu9 + eu10 + eu12 +
            eu15 + thatcher + agenda + backlog +
            Lqmv + Lqmvpostsea + Lcoop + Lcodec +
            Lthatcher + Lbacklog,
         data = GolubEUPData,
         ties = "efron")

# Create simtvc object for Relative Hazard
Sim1 <- coxsimtvc(obj = M1, b = "qmv", btvc = "Lqmv",
                   tfun = "log", from = 80, to = 2000,
                   Xj = 1, by = 15, ci = 0.99, nsim = 100)

## dontrun
# Create simtvc object for First Difference
# Sim2 <- coxsimtvc(obj = M1, b = "qmv", btvc = "Lqmv",
#                 qi = "First Difference", Xj = 1,
#                 tfun = "log", from = 80, to = 2000,
#                 by = 15, ci = 0.95)

# Create simtvc object for Hazard Ratio
# Sim3 <- coxsimtvc(obj = M1, b = "backlog", btvc = "Lbacklog",
#                  qi = "Hazard Ratio", Xj = c(191, 229),
#                  Xl = c(0, 0),
#                  tfun = "log", from = 80, to = 2000,
#                  by = 15, ci = 0.5)

Run the code above in your browser using DataCamp Workspace