# tests/survreg2.R In survival: Survival Analysis

```library(survival)
options(na.action=na.exclude, contrasts=c('contr.treatment', 'contr.poly'))

# Verify stratified fits in a simple way, but combining two data
#  sets and doing a single fit
#
aeq <- function(x,y) all.equal(as.vector(x), as.vector(y))

tdata <- data.frame(time=c(lung\$time, ovarian\$futime),
status=c(lung\$status-1, ovarian\$fustat),
group =rep(0:1, c(nrow(lung), nrow(ovarian))))
fit1 <- survreg(Surv(time, status) ~ 1, lung)
fit2 <- survreg(Surv(futime, fustat) ~ 1, ovarian)
fit3 <- survreg(Surv(time, status) ~ group + strata(group), tdata)

aeq(c(fit1\$coef, fit2\$coef-fit1\$coef), fit3\$coef)
aeq(c(fit1\$scale, fit2\$scale), fit3\$scale)
aeq(fit1\$loglik[2] + fit2\$loglik[2], fit3\$loglik[2])

#
# Test out the cluster term in survreg, which means first a test
#  of the dfbeta residuals
# I also am checking that missing values propogate
test1 <- data.frame(time=  c(9, 3,1,1,6,6,8),
status=c(1,NA,1,0,1,1,0),
x=     c(0, 2,1,1,1,0,0),
id=  1:7)
fit1 <- survreg(Surv(time, status) ~ x, cluster = id, test1)
fit2 <- survreg(Surv(time, status) ~ x + cluster(id), test1) #old form
all.equal(fit1, fit2)

db1 <- resid(fit1, 'dfbeta')
ijack <-db1
eps <- 1e-7
for (i in 1:7) {
temp <- rep(1.0,7)
temp[i] <- 1-eps
tfit <- survreg(Surv(time, status) ~ x, test1, weight=temp)
ijack[i,] <- c(tfit\$coef, log(tfit\$scale))
}
ijack[2,] <- NA  # stick the NA back in
ijack <- (rep(c(fit1\$coef, log(fit1\$scale)), each=nrow(db1)) - ijack)/eps
all.equal(db1, ijack, tolerance=eps)
all.equal(t(db1[-2,])%*% db1[-2,], fit1\$var)

# This is a harder test since there are multiple strata and multiple
#  obs/subject.  Use of enum + strata(enum) in essenence fits a different
#  baseline Weibull to each strata, with common coefficients for rx, size, and
#  number.
fit1 <- survreg(Surv(stop-start, event) ~  rx + size + number +

ijack <- db1  # a matrix of the same size
for (i in 1:nrow(db1)) {
tfit <- survreg(Surv(stop-start, event) ~ rx + size + number +