Description Usage Arguments Details Value Examples
Simulate two-arm time-to-event data using the piecewise exponential distribution rpwexp()
.
User can specify enrollment speed as well as drop out rate separately for each arm. Additionaly if user has created
a gsSurv object from gsDesign
it can be used as input to supply simulation parameters. The only
censoring mechanism is from dropout of the study and no administrative censoring is implemented. The administrative censoring (such as interim or final analysis)
are implemented in the simtest()
function.
1 2 3 4 |
nsim |
Number of simulations |
lambdaC |
Hazard rate of control arm. Specify a vector for piecewise hazard with duration specified in "intervals" |
lambdaE |
Hazard rate of experimental arm. Specify a vector for piecewise hazard with duration specified in "intervals" |
intervals |
Duration of period in which hazard is constant as specified in lambdaC. A vector with length(lambdaC)-1 |
ssC |
Sample size of control arm |
ssE |
Sample size of experimental arm |
gamma |
A vector of rate of enrollment per unit of time |
R |
A vector of duration of time periods for recruitment with rates specified in gamma; should be same length as gamma or 1 less. |
fixEnrollTime |
if |
eta |
A vector for dropout rate per unit time for control arm |
etaE |
A vector for dropout rate per unit time for experimental arm. If left NULL, it uses the same dropout rate as eta. |
d |
A gsSurv object as input. The other inputs overwrite the corresponding parameters if not NULL |
All the simulation parameters: sample size, hazard rate in each interval and the interval duration,
enrollment time period and enrollment speed, and the piecewise dropout rate for the same interval duration need to be provided
unless a gsSurv object is provided, in which case the individual parameter can be left as NULL
. If not NULL
the value will
overwrite the corresponding value from the gsSurv object.
The function return a list with the follow components
as Input
actual enrollment rate per enrollment period. If fixEnrollTime
is not TRUE
this is the same as the input gamma
actual enrollment period. If fixEnrollTime
is TRUE
this is the same as input R
, otherwise
the last interval of the input R
will be adjusted to meet the specified sample size while keeping gamma
fixed.
same as eta
as Input or equal to etaC if Input is NULL
data table object that stores the simulated data
sim: simulation sequence number
treatment: "control" or "experimental"
enterT: calendar time a subject enters the study
ct: calendar time of event/censoring. Equals to enterT + survival
survival: simulated time-to-event value
cnsr: censoring status. 1 = censored, 0 = event
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | # Simulate a two-arm study with overall survival endpint using proportional harzard of 0.7
# and median survival of 6 months. The number of subjects in each arm is 300.
library(survival)
medC = 6
hr <- 0.7
intervals <- NULL
gamma <- c(2.5, 5, 7.5, 10) ## a ramp-up enrollment
R <- c(2 , 2, 2 , 6 ) ## enrollment period: total of 12 months
eta <- -log(0.99) ## 1% monthly dropout rate
sim1<-nphsim(nsim=10,lambdaC=log(2)/medC,lambdaE=log(2)/medC*hr, ssC=300,ssE=300,
intervals=intervals,gamma=gamma, R=R,eta=eta)
km<-survfit(Surv(survival,1-cnsr)~treatment,data=sim1$simd[sim==1])
plot(km,xlab="Month Since Randomization",ylab="Survival",lty=1:2,xlim=c(0,36),mark.time=TRUE)
ll <- gsub("x=","",names(km$strata)) ## legend labels
legend("top",legend=ll,lty=1:2,horiz=FALSE,bty='n')
# Simulate survival endpoint with delayed separation of KM curve: HR=1 for the
# first 3 months and 0.65 afterwards
hr <- c(1,0.65)
intervals <- 3
sim2<-nphsim(nsim=10,lambdaC=log(2)/medC,lambdaE=log(2)/medC*hr, ssC=300,ssE=300,
intervals=intervals,gamma=gamma, R=R,eta=eta)
km<-survfit(Surv(survival,1-cnsr)~treatment,data=sim1$simd[sim<=10])
plot(km,xlab="Month Since Randomization",ylab="Survival",lty=1:2,xlim=c(0,36))
ll <- gsub("x=","",names(km$strata)) ## legend labels
legend("top",legend=ll,lty=1:2,horiz=FALSE,bty='n')
# Use gsSurv as input
library(gsDesign)
gs <- gsSurv ( k = 3, test.type = 4, alpha = 0.025, beta = 0.05, timing = c( 0.5,0.75 ),
sfu = sfHSD , sfupar = c( -4 ), sfl = sfHSD, sflpar = c( -12 ),
lambdaC = log(2) / 6, hr = 0.65, hr0 = 1, eta = 0.01, gamma = c( 2.5,5,7.5,10 ),
R = c( 2,2,2,6 ) , S = NULL , T = 15 , minfup = 3 , ratio = 1)
sim3 <- nphsim(nsim=10,d=gs)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.