IRT-M is a semi-supervised approach based on Bayesian Item Response Theory
    that produces theoretically identified underlying dimensions from input data
    and a constraints matrix. The methodology is fully described in 'Morucci et al. (2024),
    "Measurement That Matches Theory: Theory-Driven Identification in Item Response Theory Models"'. 
    Details are available at <https://www.cambridge.org/core/journals/american-political-science-review/article/measurement-that-matches-theory-theorydriven-identification-in-item-response-theory-models/395DA1DFE3DCD7B866DC053D7554A30B>.

A collection of functions useful in learning and practicing IRT,
    which can be combined into larger programs. Provides basic CTT analysis,
    a simple common interface to the estimation of item
    parameters in IRT models for binary responses with three different programs
    (ICL, BILOG-MG, and ltm), ability estimation (MLE, BME, EAP, WLE, plausible 
    values), item and person fit statistics, scaling methods (MM, MS, Stocking-Lord,
    and the complete Hebaera method), and a rich array of parametric and 
    non-parametric (kernel) plots. Estimates and plots Haberman's interaction model
    when all items are dichotomously scored.

Implementation of analytical and sampling-based power analyses for
    the Wald, likelihood ratio (LR), score, and gradient tests. Can be applied
    to item response theory (IRT) models that are fitted using marginal maximum
    likelihood estimation. The methods are described in our paper
    (Zimmer et al. (2022) <doi:10.1007/s11336-022-09883-5>).

Fit unidimensional item response theory (IRT) models to test
    data, which includes both dichotomous and polytomous items, calibrate 
    pretest item parameters, estimate examinees' abilities, and examine 
    the IRT model-data fit on item-level in different ways as well as provide 
    useful functions related to IRT analyses such as IRT model-data fit 
    evaluation and differential item functioning analysis. 
    The bring.flexmirt() and write.flexmirt() functions were written by modifying 
    the read.flexmirt() function (Pritikin & Falk (2022) <doi:10.1177/0146621620929431>).
    The bring.bilog() and bring.parscale() functions were written by modifying the read.bilog() 
    and read.parscale() functions, respectively (Weeks (2010) <doi:10.18637/jss.v035.i12>).
    The bisection() function was written by modifying the bisection() function 
    (Howard (2017, ISBN:9780367657918)). The code of the inverse test characteristic curve 
    scoring in the est_score() function was written by modifying the irt.eq.tse() function 
    (Gonzalez (2014) <doi:10.18637/jss.v059.i07>). In est_score() function, the code of weighted 
    likelihood estimation method was written by referring to the Pi(), Ji(), and Ii() functions
    of the catR package (Magis & Barrada (2017) <doi:10.18637/jss.v076.c01>).