scoring_bias_test() no longer takes a fun argument. In 0.1.0 the
argument was validated and then never used: no scaling was applied to the
shifts despite what the documentation claimed. Code that passed fun
will now error rather than silently ignore it.
scoring_bias_test() returns unrounded values. Previously every column
was rounded to 4 decimal places in the returned object, which lost
precision for any downstream use, including multiplicity adjustment.
Rounding now happens in print() only. Code that compared returned
values to rounded constants may need updating.
summary() on an aidif object now returns an object of class
summary.aidif instead of NULL, and printing is handled by
print.summary.aidif(). Code relying on summary() printing as a side
effect continues to work at the console; code that assigned the result
and expected NULL does not.
scoring_bias_test() and fit_aidif() gain a design argument.
design = "paired" accepts cross-condition covariance information via
cross_cov for the case where the same responses are scored under both
conditions. design = "independent" remains the default and is
conservative when applied to paired data, since the omitted
cross-condition covariance is typically positive.
scoring_bias_test() and fit_aidif() gain a metric argument.
metric = "linked" estimates the item-common metric offset that raw DASB
cannot identify, using the same bi-square M-estimator the package already
applies to within-condition robust scaling, and reports DASB relative to
it. metric = "common" reproduces 0.1.0 behaviour and assumes linking
was established upstream.
adjust argument for multiplicity control across items within a DASB
analysis, using any stats::p.adjust method. The adjustment family is
the items in the call; it does not span the human-DIF and AI-DIF tests.
as_aidif() converts a fitted multiple-group mirt model directly into
the mle list structure aiDIF expects, replacing the manual parameter and
covariance extraction 0.1.0 required. mirt remains in Suggests.
scoring_bias_test() returns confidence intervals (lower, upper)
alongside the point estimates.
summary.aidif() read object$fun, which fit_aidif() never set. The
resulting sprintf() call returned character(0), so the line reporting
the item count, scaling function, and alpha was silently omitted from
every summary. Fixed.
Two-sided p-values were computed as 2 * (1 - pnorm(abs(z))), which
underflows to exactly 0 for |z| above roughly 8.3. Now computed as
2 * pnorm(-abs(z)).
Input validation never checked that the est data frames contained the
a1 and d1 columns that scoring_bias_test() indexes by name, that
intercept columns were consecutively numbered, that the slope column came
first, or that covariance matrices matched the parameter count.
Malformed input passed validation and failed later with an opaque
subscript error. All of these are now checked at the boundary.
check_compatible_mles() compared item counts but not item names, so
two calibrations with the same number of items in different orders were
accepted and produced a meaningless contrast. Item names and order are
now compared.
Flag counts in print.aidif() no longer return NA when any p-value is
missing.
data-raw/make_aidif_eg.R removed. It generated a data/aidif.eg.rda
file the package no longer ships, and it rewrote DESCRIPTION as a side
effect of being sourced.
README now documents installation from CRAN.
The package vignette has been rewritten as a full workflow, including an
end-to-end example that calibrates in mirt and passes the result to
fit_aidif() via as_aidif().
The robust scaling method is now cited to Halpin (2024, Psychometrika) rather than to a package manual.