Alternating recurrent event data arise frequently in biomedical and social sciences where two types of events such as hospital admissions and discharges occur alternatively over time. BivRec implements a collection of nonparametric and semiparametric methods to analyze such data.
The main functions are:
- bivrecReg: Use for the estimation of covariate effects on the two alternating event gap times (Xij and Yij) using semiparametric methods. The method options are “Lee.et.al” and “Chang”.
- bivrecNP: Use for the estimation of the joint cumulative distribution function (cdf) for the two alternating events gap times (Xij and Yij) as well as the marginal survival function for type I gap times (Xij) and the conditional cdf of the type II gap times (Yij) given an interval of type I gap times (Xij) in a nonparametric fashion.
The package also provides options to simulate and visualize the data and results of analysis.
BivRec depends on the following system requirements:
- Rtools. Download Rtools 35 from https://cran.r-project.org/bin/windows/Rtools/
Once those requirements are met you can install BivRec from github as follows:
#Installation requires devtools package. #install.packages("devtools") library(devtools) #install_github("SandraCastroPearson/BivRec")
This is an example using a simulated data set.
# Simulate bivariate alternating recurrent event data library(BivRec) set.seed(28) sim_data <- simBivRec(nsize=100, beta1=c(0.5,0.5), beta2=c(0,-0.5), tau_c=63, set=1.1) head(sim_data) #> id epi xij yij ci d1 d2 a1 a2 #> 1 1 1 5.396514 2.649410 11.76916 1 1 0 0.7455188 #> 2 1 2 3.723235 0.000000 11.76916 0 0 0 0.7455188 #> 3 2 1 5.648637 2.247070 45.31703 1 1 0 0.3344112 #> 4 2 2 2.949107 2.032798 45.31703 1 1 0 0.3344112 #> 5 2 3 4.437588 2.936018 45.31703 1 1 0 0.3344112 #> 6 2 4 3.114917 3.337000 45.31703 1 1 0 0.3344112 # Create a bivrecSurv object bivrec_object <- with(sim_data, bivrecSurv(id, epi, xij, yij, d1, d2)) # Plot gap times plot(bivrec_object, main="Example", type = c("Type I", "Type II"), col = c("darkgrey","darkgreen"))
Nonparametric Analysis
# Apply the nonparametric method of Huang and Wang (2005) and visualize joint, marginal and conditional results library(BivRec) npresult <- bivrecNP(response = with(sim_data, bivrecSurv(id, epi, xij, yij, d1, d2)), ai=1, u1 = seq(1, 15, 0.5), u2 = seq(1, 15, 0.5), conditional = TRUE, given.interval = c(1, 10), level = 0.99) #> [1] "Estimating joint CDF and marginal survival" #> [1] "Estimating conditional cdf with 99% confidence interval using 200 bootstrap samples" head(npresult) #> #> Joint CDF: #> x y Joint Probability SE Lower .99 Upper .99 #> 1 1 1.0 0.05900966 0.01967078 0.008341088 0.1096782 #> 2 1 1.5 0.06086021 0.01995590 0.009457207 0.1122632 #> 3 1 2.0 0.06179946 0.01994861 0.010415238 0.1131837 #> 4 1 2.5 0.06179946 0.01994861 0.010415238 0.1131837 #> 5 1 3.0 0.06179946 0.01994861 0.010415238 0.1131837 #> 6 1 3.5 0.06179946 0.01994861 0.010415238 0.1131837 #> #> Marginal Survival: #> Time Marginal Survival SE Lower .99 Upper .99 #> 1 0.3120105 0.9997561 0.0000243843 0.9996933 0.9998189 #> 2 0.3408594 0.9995122 0.0002438430 0.9988841 1.0000000 #> 3 0.3769168 0.9992683 0.0004858536 0.9980168 1.0000000 #> 4 0.3793933 0.9990302 0.0007282511 0.9971543 1.0000000 #> 5 0.3859942 0.9987863 0.0007635383 0.9968196 1.0000000 #> 6 0.3878224 0.9985424 0.0009969369 0.9959745 1.0000000 #> #> Conditional CDF: #> Time Conditional Probability Bootstrap SE Bootstrap Lower .99 #> 1 0.0000 0.0000 0.0000 0.00 #> 2 0.0776 0.0000 0.0000 0.00 #> 3 0.1551 0.0000 0.0000 0.00 #> 4 0.2327 0.0018 0.0011 0.00 #> 5 0.3103 0.0095 0.0038 0.00 #> 6 0.3878 0.0224 0.0081 0.01 #> Bootstrap Upper .99 #> 1 0.00 #> 2 0.00 #> 3 0.00 #> 4 0.00 #> 5 0.02 #> 6 0.04 plot(npresult)
# To save individual plots in a pdf file un-comment the following line of code: # pdf("nonparam_jointcdfplot.pdf") # plotJoint(npresult) # dev.off() # pdf("nonparam_marginalplot.pdf") # plotMarg(npresult) # dev.off() # pdf("nonparam_conditionaplot.pdf") # plotCond(npresult) # dev.off()
Semiparametric Regression Analysis
#Explore how the response changes by levels of a categorical covariate using a plot. #Use attach as follows or specifiy each vector using the $ operator (sim_data$id, sim_data$epi, etc.) attach(sim_data) plot(x = bivrecSurv(id, epi, xij, yij, d1, d2), by = data.frame(a1, a2), type = c("Type I", "Type II"), col = c("darkgrey","darkgreen")) #> [1] "a2 not used - either continuous or had more than 6 levels." #> [1] "Subjects for plots: 100."
detach(sim_data) # Apply Lee, Huang, Xu, Luo (2018) method using multiple covariates. lee_fit <- bivrecReg(bivrecSurv(id, epi, xij, yij, d1, d2) ~ a1 + a2, data= sim_data, "Lee.et.al") #> [1] "Fitting model with covariates: a1, a2" #> [1] "Estimating standard errors" summary(lee_fit) #> #> Call: #> bivrecReg(formula = bivrecSurv(id, epi, xij, yij, d1, d2) ~ a1 + #> a2, data = sim_data, method = "Lee.et.al") #> #> Number of Subjects: #> 100 #> #> Coefficients: #> Estimates SE z Pr(>|z|) #> xij a1 0.686004 0.171881 3.9912 3e-05 *** #> xij a2 0.293041 0.304425 0.9626 0.16787 #> yij a1 -0.057268 0.294032 -0.1948 0.42279 #> yij a2 -0.911427 0.480674 -1.8961 0.02897 * #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 #> #> exp(coefficients): #> exp(coeff) Lower .95 Upper .95 #> xij a1 1.98576 1.41782 2.7812 #> xij a2 1.34050 0.73814 2.4344 #> yij a1 0.94434 0.53070 1.6804 #> yij a2 0.40195 0.15668 1.0312 # To apply Chang (2004) method use method="Chang". # chang_fit <- bivrecReg(bivrecSurv(id, epi, xij, yij, d1, d2) ~ a1 + a2, # data= sim_data, "Chang")
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4