## 3-state illness-death multistate model (no left-truncation)
## Row data for 3 individuals
## Data in the form "id", "start", "stop", "start.stage", "end.stage"
p1 <- c(1,0,0.21,1,3)
p2 <- c(2,0,0.799,1,2)
p22 <- c(2,0.799,1.577,2,3)
p3 <- c(3,0,0.199,1,0)
## Combining data into a matrix
ex1 <- rbind(p1,p2,p22,p3)
colnames(ex1) <- c("id", "start", "stop", "start.stage", "end.stage")
ex1 <- data.frame(id=ex1[,1], start=ex1[,2], stop=ex1[,3],
start.stage=ex1[,4], end.stage=ex1[,5])
## Inputting nodes & edges of the tree structure
Nodes <- c("1","2","3") # states in MSM
Edges <- list("1"=list(edges=c("2","3")),"2"=list(edges=c("3")),
"3"=list(edges=NULL)) ## allowed transitions between states
## edges=NULL implies terminal node
## Specifying tree
treeobj <- new("graphNEL", nodes=Nodes, edgeL=Edges,
edgemode="directed")
ans1 <- msSurv(ex1, treeobj)
## printing msSurv object 'ans1'
print(ans1)
## summary for msSurv object
summary(ans1)
## plotting msSurv object 'ans1'
plot(ans1, plot.type="stateocc")
plot(ans1, plot.type="stateocc", states=c("1", "2"))
plot(ans1, plot.type="transprob")
plot(ans1, plot.type="entry.norm")
plot(ans1, plot.type="exit.norm")
## 3-state illness-death multistate model WITH left-truncation
## Row data for 3 individuals
## Data in the form "id", "start", "stop", "start.stage", "end.stage"
p1 <- c(1, 0.383, 1.400, 1, 0)
p2 <- c(2, 0.698, 0.999, 1, 2)
p22 <- c(2, 0.999, 1.180, 2, 0)
p3 <- c(3, 0.249, 0.391, 1, 2)
p32 <- c(3, 0.391, 0.513, 2, 3)
ex2 <- rbind(p1, p2, p22, p3, p32)
colnames(ex2) <- c("id", "start", "stop", "start.stage", "end.stage")
ex2 <- data.frame(ex2)
## inputting nodes & edgest of the tree structure
Nodes <- c("1", "2", "3")
Edges <- list("1"=list(edges=c("2", "3")), "2"=list(edges=c("3")), "3"=list(edges=NULL))
treeobj <- new("graphNEL", nodes=Nodes, edgeL=Edges, edgemode="directed")
ans2 <- msSurv(ex2, treeobj, LT=TRUE)
## Summary for msSurv object 'ans2'
summary(ans2) ## gives estimates for IQR event times
summary(ans2, all=TRUE) ## gives estimates for all event times
## Summary for state occupation probability only
summary(ans2, trans.pr=FALSE, dist=FALSE)
Run the code above in your browser using DataLab