# [R] Warning in 'probtrans'-function ('mstate'-package)

Johannes Johow johannes.johow at gmx.de
Sat Sep 17 13:36:29 CEST 2011

```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()), names=
c(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)

SLV <- expand.covs(SL, covs, append=TRUE, longnames=TRUE)
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(?)

```