NEWS
clis 0.3.6 (2026-09-29)
tests/testthat/test-screening.R: the helper that plants outliers drew
responses from rBEZI() without clamping them strictly below one, so
gamlss rejected the response with "response variable out of range" and
two screening tests failed. The clamp applied to the simulation scripts in
0.2.3 is now applied here too.
- New
data-raw/ directory with the scripts that regenerate every table and
figure of the accompanying paper, and a runbook in data-raw/README.md.
clis 0.3.5
bic_penalty() now stops with an explanatory message when the fit contains
a gamlss::pb()-style smooth. Such terms keep their basis coefficients
outside the model coefficient vector, so no penalty block can be recovered
and model.matrix() returns only the linear part of the term. The previous
behaviour was to return a zero penalty, which silently turned penalised
screening into unpenalised screening on a design that omitted the basis.
Penalised screening is supported when the basis is supplied explicitly as
design columns and the penalty matrix is passed to bic_info().
clis 0.3.4
- Bug fix: the observed information for the inflation block omitted the term
in the second derivative of the inverse link. That term vanishes in
expectation, which justifies dropping it from the Fisher weight but not
from the observed one.
bic_info(use_fisher = FALSE) now agrees with a
numerical Hessian of the log-likelihood; use_fisher = TRUE, the default,
was already correct.
- Bug fix: the three covariate perturbation schemes omitted the direct term
by which the perturbed design column enters the score for its own
coefficient.
delta_disccovar(), delta_meancovar() and
delta_preccovar() now agree with numerical mixed partial derivatives.
- Bug fix: the delta block of
delta_preccovar() had the wrong sign.
- The covariate schemes now stop with an informative message when the
selected column is constant, which happens with the default
p = 1 for a
design whose first column is the intercept and previously returned a
matrix of zeros without warning.
clis 0.3.3
- Bug fix: the benchmark for the aggregate contribution
m[r] returned by
cnc_scores() was computed as the square root of twice the mean of the
selected eigenvalues, which is on a different scale from m[r] itself. The
threshold was therefore far too large and the rule never flagged an
observation. It is now sqrt(2) times the mean of m[r] across
observations, as intended.
clis 0.3.2
- Documentation: regenerated
man/ from the roxygen sources. All 20 exported
functions now have help pages; clis_screen() documentation includes the
calib_idx and penalised arguments, which had been missing.
- Packaging: removed the empty
data/ directory and the unused LazyData
field; the bundled vaccination data is loaded from inst/extdata via
load_vaccination(). The README example was corrected accordingly.
- Removed the unused
zoib dependency from Suggests and updated the vignette
to refer to the reading-accuracy and lung-function applications.
clis 0.3.1
- Fix: added
bic_quantile_residuals(), a correct randomized quantile
residual for BEZI/BEOI. The generic residuals() mishandled the
inflation atom for one-inflated (BEOI) fits, making every residual share
the same sign; plot_residuals() and envelope_bic() now use the
corrected version.
clis 0.3.0
- Scalability:
clis_screen() with the default B_Et score now uses a
linear-time algorithm that never forms the n x n curvature matrix. On a
67,000-observation fit the influence scores compute in under a second,
where the dense n x n construction needs ~33 GB and fails. New exported
cnc_scores_linear() exposes this path directly, and
cnc_block_decomp() was rewritten to be linear-time as well.
- The
m_r aggregate score still uses the dense eigendecomposition and is
now guarded by options(clis.max_dense_n=) (default 5000) to avoid an
accidental out-of-memory build on large samples.
clis 0.2.3
- Fix:
print.clis and summary.clis are now registered as S3 methods, so
print(res) and summary(res) dispatch correctly.
clis_screen() gains a calib_idx argument to supply an explicit,
trusted calibration set. The conformal guarantee requires the calibration
set to be (nearly) free of influential points; a random split can let
outliers leak into calibration and suppress power, so when a clean subset
is known it should be supplied via calib_idx.
- Simulation scripts revised: the response is clamped strictly below one
(the zero-inflated beta admits [0, 1) only, and draws at exactly one made
gamlss reject the response), influential points are planted so that the
response contradicts the covariate (genuine influence rather than
accommodated leverage), and screening uses a large clean calibration set.
- All of the above validated by running the package under R 4.3.3 with
gamlss on the real AlcoholUse data and on simulated data.
clis 0.2.2
- Fix: influence computations no longer require the model to be fitted with
x = TRUE. The design matrices are now recovered via the gamlss
model.matrix method (with a manual fallback), so bic_info(),
clis_screen(), and the plots work on a standard gamlss fit. This was
the cause of silent per-replication failures in the simulation scripts.
- The simulation scripts now surface the first real error when an entire
cell fails, instead of returning a non-numeric result downstream.
clis 0.2.1
- New
data-raw/sim-fdr-power.R reproduces the linear-model false
discovery rate table and the detection-power curves.
- New
data-raw/sim-classical.R reproduces the classical sensitivity
analysis and its figure.
- New
data-raw/README.md gives a runbook for reproducing every table and
figure in the paper.
- Worked examples now use the real
AlcoholUse data from the zoib
package, matching the paper's application.
clis 0.2.0
- Semiparametric extension: penalised additive submodels.
bic_info() gains a penalty argument for the penalised information
J + S, and reports effective degrees of freedom and their block split.
- New
bic_penalty() assembles the block-diagonal penalty matrix from the
smooth terms of a fitted additive gamlss model.
clis_screen() gains a penalised argument; the false discovery rate
guarantee carries over to penalised fits.
- New reproducibility script
data-raw/sim-semiparametric.R for the
semiparametric simulation (FDR control, curve recovery, and effective
degrees of freedom under REML and GCV smoothing).
- New
plot_influence() reproduces the classical local-influence index
plot (curvature vs. observation index with cutoff and labels), in the
style of the beta-regression diagnostics literature.
- New
data-raw/application.R reproduces the paper's application on the
real AlcoholUse data (from the zoib package): fit, classical index
plot, conformal screening, and the semiparametric refit.
clis 0.1.0
- Initial release.
clis_screen(): conformal local influence screening with finite-sample
false discovery rate control for zero-or-one inflated beta regression.
- Conformal normal curvature scores via
cnc_matrix() and cnc_scores().
- Block decomposition of influence into inflation vs. mean/precision
components via
cnc_block_decomp().
- Four perturbation schemes: case-weights, discrete-covariate,
mean-covariate, and precision-covariate.
- Diagnostic plots:
plot_clis(), plot_cnc_panels(), plot_residuals(),
envelope_bic().
- Bundled
vaccination dataset (national DTP3 coverage, 2022).