hputter / mstate

https://hputter.github.io/mstate/
7 stars 5 forks source link

Two-state model does not work with vartype = "greenwood" #30

Closed edbonneville closed 3 months ago

edbonneville commented 3 months ago

Reported by @marije-sluiskes , see reproducible example below:

library(mstate)
#> Warning: package 'mstate' was built under R version 4.3.2
#> Loading required package: survival
#> Warning: package 'survival' was built under R version 4.3.2
n <- 2000
X <- rbinom(n = n, size = 1, prob = 0.5)
dat <- cbind.data.frame(
  time = rexp(n, rate = exp(0.5 * X)),
  status = 1,
  X
)
tmat <- transMat(list(c(2), c()), c("alive", "dead"))
tmat
#>        to
#> from    alive dead
#>   alive    NA    1
#>   dead     NA   NA

msdat <- msprep(
  time = c(NA, "time"),
  status = c(NA, "status"),
  data = dat,
  keep = "X",
  trans = tmat
)
# strata(trans) not necessary ofc but msfit() requires formula to have it
mod <- coxph(
  Surv(Tstart, Tstop, status) ~ strata(trans), 
  data = msdat, 
  method = "breslow"
)
newpat <- msdat[4, ]
newpat$strata <- newpat$trans
msf <- msfit(
  object = mod,
  newdata = newpat,
  vartype = "greenwood", 
  trans = tmat
)
#> Error in data.frame(time = sf0$time, Haz = -log(sf0$surv), norisk = norisk, : arguments imply differing number of rows: 2000, 0

Created on 2024-06-14 with reprex v2.0.2

edbonneville commented 3 months ago

Turns out to be same fix as with #27