The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

GMLTM

Generalized Multicomponent Latent Trait Model for Diagnosis

CRAN status License: GPL-3

The GMLTM package provides Bayesian estimation of Item Response Theory models that decompose item difficulty into cognitive operations or rules. It implements the Linear Logistic Test Model (LLTM; Fischer, 1973), the Multicomponent Latent Trait Model for Diagnosis (MLTM-D; Embretson & Yang, 2013), and the Generalized Multicomponent Latent Trait Model for Diagnosis (GMLTM-D; Ramírez et al., 2024). All models are estimated via Hamiltonian Monte Carlo using Stan through the rstan interface.

Installation

install.packages("GMLTM")

From GitHub (development version)

# Install devtools if needed
install.packages("devtools")

# Install from GitHub
devtools::install_github("Eduar-Ramirez/GMLTM-D", force = TRUE)

Requirements

The package requires rstan as the Stan backend. Install it from CRAN before using GMLTM:

install.packages("rstan")

# Recommended configuration
rstan::rstan_options(auto_write = TRUE)
options(mc.cores = parallel::detectCores())

Basic Usage

library(GMLTM)

# Load example data
data(analogy)

# Define Q-matrix (items x cognitive rules)
Q <- matrix(...)  # your Q-matrix here

# Define component structure
components <- list(
  transformation = c(1, 2, 3),
  relational     = c(4, 5)
)

# Fit GMLTM-D model
fit <- GMLTM(analogy, Q, components,
             iters = 2000, iter_warmup = 1000,
             chains = 2, cores = 2)

# Extract EAP estimates
fit$EAP$eta      # rule difficulty
fit$EAP$beta     # item difficulty
fit$EAP$alpha    # discrimination
fit$EAP$guessing # guessing parameters

# Marginal reliability
reliability(fit)

# Model fit
compute_model_validation(fit)

Custom Prior Distributions

A key feature of GMLTM is support for user-defined prior distributions via the priors argument. This enables prior sensitivity analysis — refitting models with different priors to verify that conclusions are robust.

# Conservative priors (default) — Beta(3,20) for guessing (mean ~0.13)
fit_conservative <- GMLTM(analogy, Q, components,
  iters = 2000, iter_warmup = 1000, chains = 2,
  priors = list(
    theta = list(mu = 0, sigma = 1),
    eta   = list(mu = 0, sigma = 1),
    alpha = list(mu = 0, sigma = 1),
    c     = list(shape1 = 3, shape2 = 20)
  ))

# Moderate priors — Beta(2,5) for guessing (mean ~0.29)
fit_moderate <- GMLTM(analogy, Q, components,
  iters = 2000, iter_warmup = 1000, chains = 2,
  priors = list(
    theta = list(mu = 0, sigma = 2),
    eta   = list(mu = 0, sigma = 2),
    c     = list(shape1 = 2, shape2 = 5)
  ))

# Diffuse priors — Beta(1,1) uniform for guessing
fit_diffuse <- GMLTM(analogy, Q, components,
  iters = 2000, iter_warmup = 1000, chains = 2,
  priors = list(
    theta = list(mu = 0, sigma = 5),
    eta   = list(mu = 0, sigma = 5),
    c     = list(shape1 = 1, shape2 = 1)
  ))

# Compare models using LOO-CV
loo::loo_compare(
  loo::loo(as.matrix(fit_conservative$fit, pars = "log_lik")),
  loo::loo(as.matrix(fit_moderate$fit,    pars = "log_lik")),
  loo::loo(as.matrix(fit_diffuse$fit,     pars = "log_lik"))
)

Prior parameters by model

Parameter Distribution Default Models
theta (ability) Normal(mu, sigma) N(0, 1) LLTM, MLTM, GMLTM
eta (rule difficulty) Normal(mu, sigma) N(0, 1) LLTM, MLTM, GMLTM
alpha (discrimination) Half-Normal(sigma) HN(1) MLTM, GMLTM
c (guessing) Beta(shape1, shape2) Beta(3, 20) GMLTM only

Main Functions

Function Description
GMLTM() Fit the GMLTM-D model
MLTM() Fit the MLTM-D model
LLTM() Fit the LLTM model
reliability() Marginal reliability estimation
ppchecks() Posterior predictive checks (histogram)
marginal_Pchecks() Marginal proportion checks with credible intervals
compute_model_validation() LOO-CV and WAIC model fit indices
plot_ICC_grouped() Item characteristic curves (grouped, 3×3 layout)
plot_ICC_individual() Item characteristic curves (individual)
conditional_reliability_tif() Conditional reliability via Test Information Function
generate_Q_with_interactions() Extend Q-matrix with rule interactions

References

Fischer, G. H. (1973). The linear logistic test model as an instrument in educational research. Acta Psychologica, 37(6), 359–374.

Embretson, S. E., & Yang, X. (2013). A multicomponent latent trait model for diagnosis. Psychometrika, 78, 14–36.

Ramírez, E. S., Jiménez, M., Franco, V. R., & Alvarado, J. M. (2024). Delving into the complexity of analogical reasoning: A detailed exploration with the Generalized Multicomponent Latent Trait Model for Diagnosis. Journal of Intelligence, 12, 67. https://doi.org/10.3390/jintelligence12070067

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.