Johannes Johow
2011-Sep-17 11:36 UTC
[R] Warning in 'probtrans'-function ('mstate'-package)
Dear all, in order to estimate transition-specific probabilities in a multi-state model i applied the 'probtrans()' function from the 'mstate'-package. Now, i am at loss with the following message (see attached example): Warning message: In probtrans(msf.0, predt = 0) : Negative diagonal elements of (I+dA); the estimate may not be meaningful. I am not very familiar with matrix algebra nor did i find anything about this issue in accompanying docs of the package. However, I have the feeling that the impact of this warning differs between the two predictions provided in the example code. Also, there must be a difference between a "warning" and an "error" so my main question is: How does this "inconsistency"(?) arise and are there any criterias to decide whether the model's validity is seriously affected of it? Best, Johannes ### EXAMPLE: # library(mstate) # set up transistion matrix for illness-death model with competing risks (2 death causes) tmat <- transMat(x=list( c(2), c(3,4), c(), c()), namesc(NA, "ill", "cause1", "cause2")) # create example data with 't' (time), 's' (status) & 'v' (variables/predictors) in 'wide format'.. set.seed(123) S1 <- data.frame( t1 = rnorm(100, 10, 1), t2 = rnorm(100, 20, 1), s0 = 1, s1 = sample(c(0,1),100, replace=TRUE), v1 = rnorm(100, 10, 1), v2 = rnorm(100, 10, 1), v3 = sample(c(0,1),100, replace=TRUE)) S1$s2 <- ifelse(S1$s1==1, 0, 1) covs <- c("v1", "v2", "v3") # ...reshape to long format SL <- msprep(time = c(NA, "t1", "t2", "t2"), status = c(NA, "s0", "s1", "s2"), data= S1, trans=tmat, keep=covs) # add 'transition-specific' covariates SLV <- expand.covs(SL, covs, append=TRUE, longnames=TRUE) head(SLV) names(SLV) # fit stratified Markov model cox1 <- coxph(Surv(Tstart, Tstop, status) ~ (v1.1 + v2.1) * v3.1 + (v1.2 + v2.2) * v3.2 + (v1.3 + v2.3) * v3.3 + strata(trans), SLV, method = "breslow") summary(cox1) # 'cloned' data for making predictions: specific covariate 'v3' fixed at 0 (& 1): SLV0 <- SLV[1:3,] SLV0$v3.1 <- 0 SLV0$v3.2 <- 0 SLV0$v3.3 <- 0 SLV0$strata <- 1:3 SLV1 <- SLV0 SLV1$v3.1 <- 1 SLV1$v3.2 <- 1 SLV1$v3.3 <- 1 # estimate... msf.0 <- msfit(cox1, SLV0, trans=tmat) pt.0 <- probtrans(msf.0, predt=0) # [..output:] # Warning message: # In probtrans(msf.0, predt = 0) : # Warning! Negative diagonal elements of (I+dA); the estimate may not be meaningful. msf.1 <- msfit(cox1, SLV1, trans=tmat) pt.1 <- probtrans(msf.1, predt=0) # [..output:] # There were 50 or more warnings (use warnings() to see the first 50) par(mfrow=c(1,2)) plot(pt.0) plot(pt.1) # note black bars in right panel(?)