mirtverse is a friendly workflow and reporting layer for the mirt package. mirt estimates item response theory (IRT) models; mirtverse helps you choose a model, understand the results, make publication-ready figures, and share everything, with or without writing R code.
mirt, developed and maintained by Dr. R. Philip Chalmers, is one of the most comprehensive open-source packages for item response theory. It was introduced in the Journal of Statistical Software (Chalmers, 2012) and has been developed continuously since, with version 1.48 released on CRAN in October 2026. It is widely used in research on educational and psychological measurement.
mirt can:
mixedmirt()), and latent class and
diagnostic classification models (mdirt()).mirtverse leaves all of this untouched and adds the workflow, interpretation and reporting tools around it.
| Feature | Functions |
|---|---|
| Point-and-click workbench with R code export | launch_workbench() |
| Analysis scripts written from a plain-language request |
mv_ask(), mv_ask_setup(), run_script()
|
| Model selection assistant | select_model() |
| Differential item functioning in one call |
dif(), gg_dif()
|
| Plain-language interpretation |
interpret(), interpret_prompt()
|
| Tidy outputs |
tidy(), glance(), augment(), item_table()
|
| ggplot2 graphics, including Wright maps |
gg_trace(), gg_info(), gg_wright(), gg_itemfit(), gg_q3(), gg_scores(), gg_empirical(), autoplot()
|
| Item health cards |
item_card(), item_cards()
|
| One-call HTML report | mv_report() |
| Response-time modelling and rapid-guessing detection |
fit_rt(), sim_rt()
|
Install a prebuilt version from r-universe (no Rtools or GitHub token needed):
install.packages("mirtverse", repos = c("https://okanbulut.r-universe.dev", "https://cloud.r-project.org"))
Or install the development version from GitHub:
# install.packages("remotes")
remotes::install_github("okanbulut/mirtverse")
library(mirtverse)
data <- expand.table(LSAT7)
sel <- select_model(data) # compares Rasch, 2PL and 3PL and recommends one
mod <- sel$best # an ordinary mirt model
interpret(mod) # what the results mean, in plain language
tidy(mod) # parameters as a data frame
item_table(mod) # item statistics, fit and flags in one table
gg_wright(mod) # person-item map
item_card(mod, "Item.2") # one-page item review
mv_report(sel, file = "report.html") # everything in one HTML file
Prefer clicking? Run launch_workbench(). Prefer describing the analysis in
words? mv_ask("fit a 2PL, check DIF by gender and make a report", data = mydata)
writes the whole script for you.
mirtverse depends on mirt and never changes how models are estimated. Every
function accepts a model created with mirt::mirt(), so you can move between the
two packages at any point. Please cite mirt (Chalmers, 2012) whenever you use
mirtverse.
Chalmers, R. P. (2012). mirt: A multidimensional item response theory package for the R environment. Journal of Statistical Software, 48(6), 1-29. https://doi.org/10.18637/jss.v048.i06
If you use mirtverse, please cite it together with mirt. Run citation("mirtverse") in R, or use:
Bulut, O. (2026). mirtverse: A friendly workflow and reporting layer for 'mirt' (Version 0.1.0) [R package]. Zenodo. https://doi.org/10.5281/zenodo.23719385