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.