## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE, comment = "#>",
  fig.width = 7, fig.height = 4, dpi = 96
)
run_models <- requireNamespace("gamlss", quietly = TRUE) &&
               requireNamespace("gamlss.dist", quietly = TRUE)

## ----data---------------------------------------------------------------------
library(clis)
vaccination <- load_vaccination()
str(vaccination)
mean(vaccination$dtp3 == 1)   # fraction at the upper boundary

## ----fit, eval = run_models---------------------------------------------------
library(gamlss)
fit <- gamlss(
  dtp3 ~ ln_gdp + urb,
  sigma.formula = ~ ln_gdp + ln_pop,
  nu.formula    = ~ hdi,
  family  = gamlss.dist::BEOI,
  data    = vaccination,
  control = gamlss.control(trace = FALSE)
)

## ----screen, eval = run_models------------------------------------------------
res <- clis_screen(fit, alpha = 0.1, seed = 1)
res

## ----plot-clis, eval = run_models---------------------------------------------
plot_clis(res)

## ----summary, eval = run_models-----------------------------------------------
summary(res)

## ----cnc-panels, eval = run_models--------------------------------------------
info  <- bic_info(fit)
delta <- delta_caseweights(fit)
cnc   <- cnc_matrix(delta$Delta, info$info_inv)
sc    <- cnc_scores(cnc)
dec   <- cnc_block_decomp(delta, info)
plot_cnc_panels(cnc, sc, dec)

## ----prec, eval = run_models--------------------------------------------------
res_prec <- clis_screen(fit, scheme = "preccovar", p = 2, alpha = 0.1, seed = 1)
res_prec

## ----workflow, eval = run_models----------------------------------------------
# (2) classical index plot -- the familiar picture, no error control
plot_influence(fit, labels = vaccination$iso3c)

# (3) error-controlled screen at FDR 10%
res <- clis_screen(fit, alpha = 0.10, seed = 1)

# (5) stability across seeds: keep declarations that persist
decl <- lapply(1:10, function(s)
  clis_screen(fit, alpha = 0.10, seed = s)$influential_global)
stable <- Reduce(intersect, decl)
vaccination$iso3c[stable]

## ----semipar, eval = FALSE----------------------------------------------------
# fit_s <- gamlss(
#   dtp3 ~ pb(ln_gdp) + urb,
#   sigma.formula = ~ pb(ln_gdp) + ln_pop,
#   nu.formula    = ~ pb(hdi),
#   family  = gamlss.dist::BEOI,
#   data    = vaccination,
#   control = gamlss.control(trace = FALSE)
# )
# res_s <- clis_screen(fit_s, alpha = 0.1, penalised = TRUE, seed = 1)
# res_s

