Nothing
cat(crayon::yellow("\ntest of COMPoisson family:"))
## particularly useful to test permuted sparse algos
data("freight")
# estimation of nu in COMPoisson GLM (Sellers & Shmueli 2010):
(fitfit <- fitme(broken ~ transfers, data=freight, family = COMPoisson(),method="ML"))
crit <- diff(range(residVar(fitfit,"fam_parm"),5.781798))
try(testthat::test_that(paste0("criterion was ",signif(crit,4)," from 5.781798"), testthat::expect_true(crit<1e-6))) # decimals depend on optimizer|COMPoisson approxs
(fitfitlog <- fitme(broken ~ transfers, data=freight, family = COMPoisson(link="log"),method="ML"))
crit <- diff(range(residVar(fitfitlog,"fam_parm"),5.733443))
try(testthat::test_that(paste0("criterion was ",signif(crit,4)," from 5.733443"), testthat::expect_true(crit<1e-6))) # decimals depend COMPoisson approxs again
# COMPoissonReg::glm.cmp(broken ~ transfers, data=freight)
## Crude way to the same result:
if (spaMM.getOption("example_maxtime")>0.9) {
objfn <- function(nu) {
#cat(nu," ")
fit <- HLfit(broken ~ transfers, data=freight, family = COMPoisson(nu=nu), method="ML")
logLik(fit)
}
optr <- optim(1,objfn,lower=0.05,upper=10,method="L-BFGS-B",control=list(fnscale=-1))
crit <- diff(range(optr$par,5.781804 ))
try(testthat::test_that(paste0("criterion was ",signif(crit,4)," from 5.781804"), testthat::expect_true(crit<1e-6))) # decimals depend COMPoisson approxs again
}
# GLMM with under-dispersed conditional response
(compmm <- HLfit(broken ~ transfers+(1|id), data=freight, family = COMPoisson(nu=10), method="ML"))
crit <- diff(range(compmm$lambda[[1]],0.4573305))
try( testthat::test_that(paste0("criterion was ",signif(crit,6)," from 0.4573305"), testthat::expect_true(crit<1e-6)) )
# Also test simulate() through test-DHARMa.R
# test of COMPoisson obsInfo; fixing lambda to nonzero value bc fitted zero value makes test weak.
(compmmobs <- fitme(broken ~ transfers+(1|id), data=freight, family = COMPoisson(link="log", nu=1), fixed=list(lambda=0.1), method=c("ML","obs"))) # using obsInfo algos
# that's nu=1 ~poisson so result should be equiv to poisson(log) whether exp or obs Info is used for either family
(pmm <- fitme(broken ~ transfers+(1|id), data=freight, family = poisson(), fixed=list(lambda=0.1), method=c("ML","obs")))
(compmmexp <- fitme(broken ~ transfers+(1|id), data=freight, family = COMPoisson(link="log", nu=1), fixed=list(lambda=0.1), method=c("ML","exp"))) # using obsInfo algos
testthat::test_that(paste0("whether obsInfo COMPoisson(link=log, nu=1) ~ poisson()"),
testthat::expect_true(diff(range(logLik(pmm),logLik(compmmobs),logLik(compmmexp)))<1e-6))
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.