# A toy example with 5 observations and 2 covariates, observed over 3 time periods
set.seed(123)
n_obs <- 5
surv_var <- round(rgamma(n_obs, 1, .1)) + 1
delta_var <- sample(size = n_obs, c(0, 1), prob = c(0.2, 0.8), replace = TRUE)
surv_data <- data.frame(id_var = 1:n_obs, surv_var, delta_var)
# Determine intervals
S <- c(3, 11)
# Create synthetic observations for each individual
covariate_list <- list()
for (i in 1:n_obs) {
nr_periods_survived <- sum(surv_var[i] > S) + 1
covariate_list[[i]] <- data.frame(id_var = i,
interval_var = 1:nr_periods_survived,
x1 = rnorm(nr_periods_survived),
x2 = rnorm(nr_periods_survived))
}
# Bind all individual covariate data frames together
# Each observation now has a covariate in each period they
# were observed in.
covariate_data <- do.call(rbind, covariate_list)
# Call prep_tvinput to pre-process for shrinkDSM
merged_data <- prep_tvinput(surv_data,
covariate_data,
id_var = "id_var",
surv_var = "surv_var",
delta_var = "delta_var",
interval_var = "interval_var")
# Can now be used in shrinkDSM
# Note that delta is now automatically extracted from merged_data,
# providing it will throw a warning
mod <- shrinkDSM(surv_var ~ x1 + x2, merged_data, S = S)
Run the code above in your browser using DataLab