Nothing
library(dplyr, warn.conflicts = FALSE)
library(survival)
testthat::test_that("phregr: handling ties", {
pbc <- pbc %>% mutate(event = 1*(status == 2))
for (ties in c("breslow", "efron")) {
fit1 <- phregr(pbc, time="time", event="event",
covariates=c("age", "edema", "log(bili)",
"log(protime)", "log(albumin)"),
ties=ties)
fit2 <- coxph(Surv(time, event) ~ age + edema + log(bili) +
log(protime) + log(albumin), data=pbc, ties=ties)
dimnames(fit1$vbeta) <- NULL
testthat::expect_equal(fit1$beta, fit2$coefficients)
testthat::expect_equal(fit1$vbeta, fit2$var)
}
})
testthat::test_that("phregr: counting process form", {
heart <- heart %>% mutate(rx = as.numeric(transplant) - 1)
fit1 <- phregr(heart, time="start", time2="stop", event="event",
covariates=c("rx", "age"), id="id", robust=TRUE)
fit2 <- coxph(Surv(start, stop, event) ~ rx + age, cluster=id,
data=heart, robust=TRUE)
dimnames(fit1$vbeta) <- NULL
testthat::expect_equal(as.numeric(fit1$beta),
as.numeric(fit2$coefficients))
testthat::expect_equal(fit1$vbeta, fit2$var)
testthat::expect_equal(c(fit1$sumstat$loglik0, fit1$sumstat$loglik1),
fit2$loglik)
testthat::expect_equal(fit1$sumstat$scoretest, fit2$score)
})
testthat::test_that("phregr: firth with plci", {
# we include the status variable as a predictor to force an infinite beta
# in this case, we invoke the firth option to obtain finite beta estimate
fit1 <- phregr(ovarian, time="futime", event="fustat",
covariates=c("rx", "fustat"),
firth=TRUE, plci=TRUE)
# coxph does not have the firth option, and we use SAS PROC PHREG
# proc phreg data=ovarian;
# model futime*fustat(0) = rx fustat / firth risklimits = pl;
# run;
# to obtain the estimated hazard ratios and 95% profile likelihood CI
# of note, although not applicable to the ovarian data, which does not
# have ties, SAS PROC PHREG only has the firth option for the Breslow
# method for handling ties, while the phregr also has the firth option
# for the Efron method for handling ties
beta = c(-0.54197, 4.23615)
hrlower = c(0.173, 8.771)
hrupper = c(1.884, 8936.061)
testthat::expect_equal(round(c(fit1$parest$beta, fit1$parest$lower,
fit1$parest$upper), 3),
round(c(beta, log(c(hrlower, hrupper))), 3))
})
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.