@@ -1281,6 +1281,7 @@ if (3 %in% which) {
12811281# #' @param rc relative risk for exponential censoring
12821282# #' @param strata1 strata variable for cox1 baseline, then data is not needed
12831283# #' @param stratad strata variable for coxd baseline, then data is not needed
1284+ # #' @param death.code code for death (default is 3) in status variable, events are coded as 1
12841285# #' @param ... Additional arguments to simGLcox, nmin, nmax regulates linear approximation grid
12851286# #' @author Thomas Scheike
12861287# #' @references
@@ -1292,20 +1293,21 @@ if (3 %in% which) {
12921293# #' n <- 100
12931294# #' xr <- phreg(Surv(entry,time,status==1)~x+cluster(id),data=hf)
12941295# #' dr <- phreg(Surv(entry,time,status==2)~x+cluster(id),data=hf)
1295- # #' simcoxcox <- sim.recurrent(xr,dr,n=n,data=hf)
1296+ # #' simcoxcox <- sim.recurrent(xr,dr,n=n,data=hf,death.code=2 )
12961297# #' recGL <- recreg(Event(entry,time,status)~x+cluster(id),hf,death.code=2)
1297- # #' simglcox <- sim.recurrent(recGL,dr,n=n,data=hf)
1298+ # #' simglcox <- sim.recurrent(recGL,dr,n=n,data=hf,death.code=2 )
12981299# #'
12991300# ' @export sim.recurrent
13001301# ' @usage sim.recurrent(cox1,coxd=NULL,n=1,data=NULL,
13011302# ' type=c("default","cox-cox","gl-cox"),id="id",
13021303# ' varz=1,share=1,cens=0.001,scale1=1,scaled=1,dependence=NULL,
1303- # ' r1=NULL,rd=NULL,rc=NULL,strata1=NULL,stratad=NULL,...)
1304+ # ' r1=NULL,rd=NULL,rc=NULL,strata1=NULL,stratad=NULL,death.code=3death.code=3,, ...)
13041305sim.recurrent <- function (cox1 ,coxd = NULL ,
13051306 n = 1 , data = NULL ,type = c(" default" ," cox-cox" ," gl-cox" ),
13061307 id = " id" ,varz = 1 ,share = 1 ,cens = 0.001 ,
13071308 scale1 = 1 ,scaled = 1 ,dependence = NULL ,
13081309 r1 = NULL ,rd = NULL ,rc = NULL ,strata1 = NULL ,stratad = NULL ,
1310+ death.code = 3 ,
13091311 ... ) {# {{{
13101312# # exp censoring default
13111313death <- NULL
@@ -1365,28 +1367,33 @@ for (j in 1:attr(strat1d,"nlevel")) {
13651367 rrss $ id <- r1i [rrss $ id + 1 ]
13661368 rrs <- rbind(rrs ,rrss )
13671369}
1370+ rrs <- dtransform(rrs ,statusD = death.code ,statusD == 3 )
13681371} else {
13691372if (is.null(dependence )) dependence <- 0
13701373if (! is.null(LamD ))
1371- rrs <- simRecurrentList(n ,list ( Lam1 ) ,death.cumhaz = list ( LamD ) ,rr = matrix (r1 ,ncol = 1 ),rd = matrix (rd ,ncol = 1 ),rc = rc ,cens = cens ,var.z = varz ,dependence = dependence )
1374+ rrs <- simRecurrentList(n ,Lam1 ,death.cumhaz = LamD ,rr = matrix (r1 ,ncol = 1 ),rd = matrix (rd ,ncol = 1 ),rc = rc ,cens = cens ,var.z = varz ,dependence = dependence )
13721375else rrs <- simRecurrentList(n ,list (Lam1 ),rr = matrix (r1 ,ncol = 1 ),rc = rc ,cens = cens ,var.z = varz ,dependence = dependence )
1373- rrs $ Z <- attr(rrs ," z" )[rrs $ id ]
1376+ rrs $ Z <- attr(rrs ," z" )[rrs $ id + 1 ]
13741377
13751378rrs $ statusD <- rrs $ status
13761379if (! is.null(LamD )) {
1377- rrs <- dtransform(rrs ,statusD = 3 ,death == 1 )
1380+ rrs <- dtransform(rrs ,statusD = death.code ,death == 1 )
13781381}
1379- rrs $ id <- rrs $ id - 1
13801382}
13811383
13821384# # add covariates,
13831385if (! is.null(data )) rrs <- cbind(rrs ,rrdata $ data [rrs $ id ,])
13841386
1387+ # # add correct names to entry,time,status
1388+ varsY <- all.vars(update(drop.specials(xr $ formula ," cluster" ),. ~ 1 ))
1389+ rrs [,varsY ] <- cbind(rrs $ start ,rrs $ stop ,rrs $ statusD )
1390+
1391+ rrs <- dkeep(rrs ,c(all.vars(xr $ formula ),all.vars(dr $ formula )," orig.id" ))
1392+
13851393return (rrs )
13861394}
13871395# }}}
13881396
1389-
13901397simRecurrentIIHist <- function (n ,cumhaz ,death.cumhaz ,cens = NULL ,rr = NULL ,rc = NULL ,rd = NULL ,
13911398 max.recurrent = 100 ,dependence = 0 ,var.z = 0.22 ,cor.mat = NULL ,
13921399 HistN1 = ~ I(Nt ^ .5 ),HistD = ~ I(Nt ^ .5 ),HistN1.beta = c(1.0 ),HistD.beta = c(1.0 ),... )
0 commit comments