irtQ 1.1.0
Major Improvements
- Improved the speed and reduced memory usage of item parameter estimation and standard error computation in
est_irt(),est_item(), andest_mg(). - Improved the computational speed of
est_score()by up to 52% for dichotomous items (N = 10,000) and up to 27% for mixed-format tests, through a series of optimizations. - Improved the computational speed of
sx2_fit()substantially by replacing the O(J²) Lord-Wingersky recursion with a forward-backward pass (up to 11× faster for mixed-format tests with J = 55 items) and vectorizing internal helper functionsexpFreq(),obsFreq(), and the PRM category-collapsing routine.
New Features
- Added a unit test suite using the testthat 3rd edition (
testthat >= 3.0.0). Tests cover core functions includingdrm(),prm(),est_irt(),est_score(),est_mg(),rdif(),crdif(), andcatsib(), with the relevant tests across dichotomous, polytomous, and mixed-format item scenarios (355 tests total). - Added a new function,
ripd(), which implements the Residual-based Item Parameter Drift (RIPD) detection framework. The function computes three RIPD statistics— , , and —for each item. captures uniform item parameter drift (IPD) via differences in mean raw residuals between groups, captures nonuniform IPD via differences in mean squared residuals, and is a combined chi-square-based statistic sensitive to both types of drift. An optional purification procedure is also supported.
New Articles
- Launched the irtQ documentation website at https://hwangQ.github.io/irtQ/, built with pkgdown. The site includes a full function reference index and the following vignettes covering the complete irtQ workflow:
- Getting Started with irtQ: an end-to-end overview of the package workflow.
-
Item Parameter Estimation: detailed guidance on
est_irt(),est_item(), andest_mg(). -
Ability Estimation: scoring methods available in
est_score(). -
Model-Data Fit Evaluation: using
irtfit()andsx2_fit()to assess model fit. -
DIF Detection: applying
rdif(),grdif(), andcatsib()to detect item bias. -
Classification Accuracy and Consistency: computing indices via
cac_lee()andcac_rud(). -
Utility Functions: usage of
info(),traceline(),lwrc(),simdat(), and related helpers. -
Evaluating MST Panels with
reval_mst(): measurement precision and bias evaluation for multistage adaptive tests.
Bug Fixes
- Fixed a minor bug in
sx2_fit()that caused incorrect cell collapsing between two adjacent score categories for polytomous items when computing the S- item fit statistic. - Fixed minor bugs in
est_score()andinfo(). - Resolved an issue in
catsib()where the function failed when all responses were missing (NA) in either the reference or focal group. - Updated
cac_rud()to include thexargument, allowing users to pass item metadata data frames directly. - Revised default
controlparameters inest_irt(),est_item(), andest_mg(), and updated the documentation accordingly. - Fixed a minor bug in
est_score()function in terms of Newton-Raphson method. - Fixed multiple stability issues in
catsib():- The final bin exclusion step in
catsib_item()used a hardcoded threshold of 3 instead of the user-suppliedmin.binsizeargument, causing inconsistent bin filtering behavior. - The reliability estimate
rho2incatsib_one()was not clamped to , so whenerrvar > sigma2(e.g., very few items or purification cascade), a negativerho2reversed the regression correction direction, inflating the Type I error rate. - When
errvar >= sigma2during purification,rho2collapsed to 0, causing all corrected scores to converge to the group mean. With group mean differences (impact), this produced empty bin data frames and an invalid purification result. A minimum floor of 0.05 is now enforced forrho2to preserve score spread.
- The final bin exclusion step in
- Fixed a critical bug in
covirt()where the guessing parameter (par[,3]) was incorrectly passed as the difficulty parameter (par[,2]) to theintegrand()function for DRM items. This caused the gradient computation to receivec = b, which zeroed out the and gradient components and produced a singular Fisher information matrix. Additionally,NAvalues inpar.3for 1PLM and 2PLM items are now substituted with 0 prior to gradient evaluation to preventNApropagation.
irtQ 1.0.0
CRAN release: 2025-07-17
The documentation for the
irtQpackage has been revised to reflect updates to function behavior, fix typos, and provide more relevant and detailed information for existing functions.A new function,
crdif(), has been added. This function computes three statistics from the residual-based DIF detection framework using categorical residuals (RDIF-CR). It allows for the detection of global DIF, particularly in polytomously scored items.A new function,
shape_df_fipc(), has been introduced. This function merges fixed-item metadata with automatically generated metadata for new items and produces a single data frame ordered by test position. It is designed to support fixed item parameter calibration (FIPC) via theest_irt()function.The
plot()method has been enhanced to support the display of all item characteristic curves for a given item in a single panel.The
pcd2()function has been updated to include a purification procedure.The
rdif()andcatsib()functions now include anitem.skipargument. This allows users to specify a numeric vector of item indices to exclude from the DIF analysis.
irtQ 0.2.1
CRAN release: 2024-08-25
Enhanced functionality of the
bind.fill()function by adding a new argumentfill. The value in the argument is used to fill in missing data when aligning datasets.Fixed a bug within the
est_irt()function that was previously unable to implement the fixed item parameter calibration (FIPC) when only freely estimating a single item given that all other items are fixed.Added a new function,
reval_mst(), which evaluates the measurement precision and bias in Multistage-adaptive Test (MST) panels using a recursion-based evaluation method introduced by Lim et al. (2020).Added a new function,
pcd2(), which computes the Pseudo-count statistics (Cappaert et al., 2018; Stone, 2000) to detect item parameter drift.
irtQ 0.2.0
CRAN release: 2023-07-06
Introduced Warm’s (1989) Weighted Likelihood (WL) estimation method to the
est_score()function. This WL scoring method can now be utilized by settingmethod = "WL".Enhanced the speed of ability parameter estimation in the
est_score()function when using the ML, MLF, or MAP methods for themethodargument. The updated version performs approximately three times faster than its predecessor.Addressed a bug within the
est_score()function that was previously unable to accurately compute scores when only a single item data was provided. This issue was occurring with the EAP.SUM and INV.TCC estimation methods.-
Added two new functions for computing classification accuracy and consistency:
cac_rud()andcac_lee().-
cac_rud: This function implements Rudner’s (2001, 2005) method for computing classification accuracy and consistency. It takes cut scores, ability estimates, standard errors, and optional weights as inputs and returns a list containing a confusion matrix, marginal and conditional classification accuracy and consistency indices, the probability of being assigned to each level category, and the cut scores used in the analysis. -
cac_lee: This function implements Lee’s (2010) method for computing classification accuracy and consistency. It takes a data frame containing item metadata, cut scores, optional ability estimates, optional weights, a scaling factor, and a logical value indicating the cut score metric as inputs. It returns a list similar tocac_rud.
-
Added a new function,
llike_score(), which computes the loglikelihood of ability parameters given the item parameters and response data.Enhanced functionality of the
rdif()andgrdif()functions: Both now support the graded response model (GRM) and generalized partial credit model (GPCM).Fixed an issue in the
grdif()function that inaccurately calculated the GRDIF statistics when group membership was specified in a non-standard way. Specifically, the problem arose when 0 wasn’t used as the reference group and consecutive numbers (e.g., 1, 2, 3) weren’t used to represent focal groups in thegroupargument.
irtQ 0.1.1
CRAN release: 2023-05-08
Resolved the misalignment issue of standard errors in the output of the
est_irt()function whenfix.a.1pl = TRUEis specified and the items are calibrated using the 1PLM.Added a new function,
grdif(), to perform differential item functioning (DIF) analysis across multiple groups. This function calculates three generalized IRT residual DIF (GRDIF) statistics. For more information about the function and its usage, please refer to the accompanying documentation.Fixed several typos in the manual documentation
irtQ 0.1.0
CRAN release: 2023-01-10
Initial release on CRAN
The
irtQpackage is a successor of theirtplaypackage which was retracted from R CRAN due to the intellectual property (IP) violation. All issues of the IP violation have been clearly resolved in theirtQpackage.Most of the functions the
irtQpackage are identical in appearance and functionality to those ofirtplaypackage except a few functions (e.g.,shape_df(),est_score()). However, the computing speed of several functions (e.g.,est_irt(),est_score(),lwrc()) in theirtQpackage are faster than the previous ones in theirtplaypackage. Read the documentation carefully prior to using the functions.
