library(dplyr, warn.conflicts = FALSE) library(survival) testthat::test_that("liferegr: eligible distributions", { for (dist in c("exponential", "weibull", "lognormal", "loglogistic")) { fit1 <- liferegr(ovarian, time="futime", event="fustat", covariates=c("ecog.ps", "rx"), dist=dist) fit2 <- survreg(Surv(futime, fustat) ~ ecog.ps + rx, data=ovarian, dist=dist) testthat::expect_equal(fit1$beta[1:(fit1$nvar+1)], fit2$coefficients) if (dist != "exponential") { testthat::expect_equal(exp(fit1$parest$beta[(fit1$nvar+2)]), fit2$scale) } } }) testthat::test_that("liferegr: left-censored data", { tobin <- tobin %>% mutate(time = ifelse(durable > 0, durable, NA)) for (dist in c("gaussian", "logistic")) { fit1 <- liferegr(tobin, time="time", time2="durable", covariates=c("age", "quant"), dist=dist) fit2 <- survreg(Surv(durable, durable>0, type='left') ~ age + quant, data=tobin, dist=dist) testthat::expect_equal(fit1$beta[1:(fit1$nvar+1)], fit2$coefficients) testthat::expect_equal(exp(fit1$parest$beta[(fit1$nvar+2)]), fit2$scale) } }) testthat::test_that("liferegr: stratification", { lung1 <- lung %>% mutate(event = 1*(status == 2)) fit1 <- liferegr(lung1, stratum="sex", time="time", event="event", covariates=c("ph.ecog", "age")) fit2 <- survreg(Surv(time, status) ~ ph.ecog + age + strata(sex), data=lung) testthat::expect_equal(fit1$beta[1:(fit1$nvar+1)], fit2$coefficients) testthat::expect_equal(exp(fit1$parest$beta[(fit1$nvar+2):(fit1$p)]), as.vector(fit2$scale)) }) testthat::test_that("liferegr: robust variance", { diabetic <- diabetic %>% mutate(juvenile = 1*(age < 20)) fit1 <- liferegr(diabetic, time="time", event="status", covariates=c("trt", "juvenile"), id="id", robust=TRUE) fit2 <- survreg(Surv(time, status) ~ trt + juvenile, cluster=id, data=diabetic, robust=TRUE) testthat::expect_equal(fit1$beta[1:(fit1$nvar+1)], fit2$coefficients) testthat::expect_equal(exp(fit1$parest$beta[(fit1$nvar+2)]), fit2$scale) testthat::expect_equal(fit1$vbeta, fit2$var) })