You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
when I use a piece-wise constant hazard function to simulate data I always get periodic jumps after the first cutpoint, resulting from accumulated eventtimes. In the first image below this is most visible in the 4th intervall. The survial curve should look like resulting from an exponential distribution since the hazard is constant.
I used my own code as well as the example in section 4.4. provided in the package authors publication
When I reduce the number of cut-points that separate the hazard function to 4 the simulated data shows these jumps.
library(simsurv)
library(survival)
##### create a bathtub-shaped hazard function
set.seed(1729)
# ncuts <- 19ncuts<-4cuts<- sort(rexp(ncuts, rate=0.1))
pw_times<- c(0, cuts)
N<- length(pw_times)
pw_haz<- sort(abs(rnorm(N)))
pw_haz<- abs(pw_haz- median(pw_haz))
##### user defined hazard function haz<-function(t, x, betas, lb_interval, haz_interval, ...) {
haz_interval[findInterval(t, lb_interval)]
}
##### Simulate datacov<-data.frame(id=1:5000)
dat<- simsurv(x=cov, hazard=haz, lb_interval=pw_times,
haz_interval=pw_haz)
summary(dat$eventtime)
##### Plot the piecewise constant hazard function
plot(x=pw_times, y=pw_haz, type="s",main="Piecewise constant hazard function", xlab="Time", ylab="Hazard rate")
##### Plot KM curve of simulated datafit_km<- survfit(Surv(eventtime, status) ~1 ,data=dat)
plot(fit_km, conf.int=FALSE, main="Kaplan-Meier curve of simsurv simulated data", xlab="Time", ylab="S(t)")
abline(v=cuts, col="grey", lty=2)
I run into the same issue withmy own piecewiese constant hazard function.
here there are is only one cutpoint at t=5. In the second intervall a treatment effect is added that seperates both arms.
### piecewise constant hazard function pc_hazard<-function(t, x, betas) {
### calculate hazard at time t
ifelse(test= (t<=5),
yes=betas[["beta1"]],
no=betas[["beta2"]] *x[["treatment"]])
}
### Set simulation parameters
set.seed(1234)
n<-1000t_max=10# Covariate datacovs<-data.frame(id=1:n,
treatment= rep(c(1,2), each= (n/2)))
# Population (fixed effect) parametersbetas<- c(0.02, 0.1)
names(betas) <- c("beta1", "beta2")
#---------------------------------------------------------------------------------### Simulationsim_times<- simsurv(hazard=pc_hazard,
x=covs,
betas=betas,
maxt=t_max)
sim_data<- merge(sim_times, covs)
#---------------------------------------------------------------------------------### Visualisation of the simulated datafit_km<- survfit(Surv(eventtime, status) ~treatment, data=sim_data)
plot(fit_km,
conf.int=FALSE,
col= c("red", "blue"),
main="Simulated delayed effect", xlab="t", ylab="S(t)")
The text was updated successfully, but these errors were encountered:
Hello,
when I use a piece-wise constant hazard function to simulate data I always get periodic jumps after the first cutpoint, resulting from accumulated eventtimes. In the first image below this is most visible in the 4th intervall. The survial curve should look like resulting from an exponential distribution since the hazard is constant.
I used my own code as well as the example in section 4.4. provided in the package authors publication
When I reduce the number of cut-points that separate the hazard function to 4 the simulated data shows these jumps.
I run into the same issue withmy own piecewiese constant hazard function.
here there are is only one cutpoint at t=5. In the second intervall a treatment effect is added that seperates both arms.
The text was updated successfully, but these errors were encountered: