# \donttest{
library(survival)
# Build DGM on months scale
gbsg$time_months <- gbsg$rfstime / 30.4375
dgm <- generate_aft_dgm_flex(
data = gbsg,
continuous_vars = c("age", "size", "nodes", "pgr", "er"),
factor_vars = c("meno", "grade"),
outcome_var = "time_months",
event_var = "status",
treatment_var = "hormon",
subgroup_vars = c("er", "meno"),
subgroup_cuts = list(er = 20, meno = 0)
)
# Calibrate so simulated censoring rate matches reference
cal_rate <- calibrate_cens_adjust(
dgm = dgm,
target = "rate",
n = 1000,
analysis_time = 84,
max_entry = 24
)
cat("Calibrated cens_adjust (rate):", cal_rate$cens_adjust, "\n")
# Calibrate to KM median censoring time instead
cal_km <- calibrate_cens_adjust(
dgm = dgm,
target = "km_median",
n = 1000,
analysis_time = 84,
max_entry = 24
)
cat("Calibrated cens_adjust (km_median):", cal_km$cens_adjust, "\n")
# Use calibrated value in simulation
sim <- simulate_from_dgm(
dgm = dgm,
n = 1000,
analysis_time = 84,
max_entry = 24,
cens_adjust = cal_rate$cens_adjust,
seed = 123
)
mean(sim$event_sim) # event rate
mean(sim$event_sim == 0) # censoring rate — should match ref
# }
Run the code above in your browser using DataLab