Nothing
## Purpose: Collapsibility
## Author: Mark Clements, 2019-10-23
###############################################################################
###############################################################################
## Exercise 14
###############################################################################
## @knitr loadDependencies
library(biostat3)
library(rstpm2)
library(ggplot2)
## @knitr loadPreprocess
## @knitr 14.simulate
set.seed(12345)
d <- local({
n <- 1e4
x <- rbinom(n, 1, 0.5)
u <- rnorm(n, 0, 3)
t <- rexp(n, exp(-5+x+u))
c <- runif(n, 0, 10)
y <- pmin(t, c)
delta <- (t < c)
data.frame(y,x,u,delta)
})
head(d)
## @knitr 14.dag
if (requireNamespace("dagitty")) {
library(dagitty)
g1 <- dagitty( "dag {
X -> T -> \"(Y,Delta)\"
U -> T
C -> \"(Y,Delta)\"
}")
plot(graphLayout(g1))
}
## @knitr 14.a
summary(fit1 <- glm(delta~x+u+offset(log(y)),data=d,family=poisson))
summary(fit2 <- coxph(Surv(y,delta)~x+u,data=d))
summary(fit3 <- stpm2(Surv(y,delta)~x+u,data=d,df=4))
## summary table for the coefficients for X
rbind(Poisson=coef(summary(fit1))["x",c("Estimate","Std. Error")],
Cox=coef(summary(fit2))["x",c("coef","se(coef)")],
Stpm2=coef(summary(fit3))["x",c("Estimate","Std. Error")])
## @knitr 14.tvc.xu
fit <- stpm2(Surv(y,delta)~x+u,data=d,df=4, tvc=list(x=2)) # slow
plot(fit, type="hr", newdata=data.frame(x=0,u=0), var="x", ylim=c(1,4))
predict(fit, type="surv", newdata=data.frame(x=0:1,u=3), grid=TRUE, full=TRUE,
se.fit=TRUE) |>
ggplot(aes(x=y,y=Estimate,fill=factor(x),ymin=lower,ymax=upper)) +
ylab("Survival") +
geom_ribbon(alpha=0.6) +
geom_line(aes(colour=factor(x)))
## standardisation: slow:(
plot(fit, type="meanhr", newdata=transform(d,x=0), var="x", seqLength=31, ylim=c(1,4))
plot(fit, type="meansurvdiff", newdata=transform(d,x=0), var="x", seqLength=31)
plot(fit, type="meansurv", newdata=transform(d,x=0), seqLength=101)
## @knitr 14.b
summary(fit1 <- glm(delta~x+offset(log(y)),data=d,family=poisson))
summary(fit2 <- coxph(Surv(y,delta)~x,data=d))
summary(fit3 <- stpm2(Surv(y,delta)~x,data=d,df=4))
## @knitr 14.b.2
## summary table for the coefficients for X
rbind(Poisson=coef(summary(fit1))["x",c("Estimate","Std. Error")],
Cox=coef(summary(fit2))["x",c("coef","se(coef)")],
Stpm2=coef(summary(fit3))["x",c("Estimate","Std. Error")])
## @knitr 14.tvc.x
fit <- stpm2(Surv(y,delta)~x,data=d,df=4, tvc=list(x=2))
plot(fit, type="hr", newdata=data.frame(x=0), var="x", ylim=c(1,4))
## @knitr 14.simulate.2
set.seed(12345)
d <- local({
n <- 1e4*10 # CHANGED N
x <- rbinom(n, 1, 0.5)
u <- rnorm(n, 0, 3)
t <- rexp(n, exp(-5+x+u))
c <- runif(n, 0, 10/1000) # CHANGED FROM 10 TO 0.01
y <- pmin(t, c)
delta <- (t < c)
data.frame(y,x,u,delta)
})
## @knitr 14.simulate.3
set.seed(12345)
d <- local( {
n <- 1e4
x <- rbinom(n, 1, 0.5)
u <- rnorm(n, 0, 1) # CHANGED SD FROM 3 TO 1
t <- rexp(n, exp(-5+x+u))
c <- runif(n, 0, 10)
y <- pmin(t, c)
delta <- (t < c)
data.frame(y,x,u,delta)
})
## @knitr 14.aft
fit <- aft(Surv(y,delta)~x+u,data=d,df=4)
summary(fit)
fit <- aft(Surv(y,delta)~x,data=d,df=4)
summary(fit)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.