Fits a three-parameter logistic IRT model using CmdStan.
The model is:
P(correct) = c_k + (1 - c_k) * logistic(a_k * (alpha_j + delta - beta_k))
Usage
threepl_fit(
data,
prior_delta = c(0, 1),
prior_alpha_sd = 1.5,
prior_beta = c(0, 1.5),
prior_beta_mean = NULL,
prior_beta_sd = NULL,
prior_a = c(0, 0.5),
prior_a_meanlog = NULL,
prior_a_sdlog = NULL,
prior_c = c(2, 8),
prior_c_alpha = NULL,
prior_c_beta = NULL,
chains = 4,
parallel_chains = 4,
iter_warmup = 1000,
iter_sampling = 1000,
seed = NULL,
...
)Arguments
- data
A matrix or data frame of binary (0/1) responses. Rows = students, Columns = questions. NA is allowed.
- prior_delta
Prior for mean ability:
c(mean, sd). Defaultc(0, 1).- prior_alpha_sd
Prior SD for student ability deviations. Default 1.5.
- prior_beta
Prior for item difficulties when all items share the same prior:
c(mean, sd). Defaultc(0, 1.5). Ignored ifprior_beta_meanorprior_beta_sdis provided.- prior_beta_mean
Numeric vector of length K. Per-item prior means for difficulty. Overrides
prior_beta.- prior_beta_sd
Numeric vector of length K. Per-item prior SDs for difficulty. Overrides
prior_beta.- prior_a
Prior for discrimination when all items share the same prior (lognormal):
c(meanlog, sdlog). Defaultc(0, 0.5). Ignored ifprior_a_meanlogorprior_a_sdlogis provided.- prior_a_meanlog
Numeric vector of length K. Per-item prior meanlog for discrimination. Overrides
prior_a.- prior_a_sdlog
Numeric vector of length K. Per-item prior sdlog for discrimination. Overrides
prior_a.- prior_c
Prior for guessing when all items share the same prior (beta distribution):
c(alpha, beta). Defaultc(2, 8). Ignored ifprior_c_alphaorprior_c_betais provided.- prior_c_alpha
Numeric vector of length K. Per-item alpha parameter for the Beta guessing prior. Overrides
prior_c.- prior_c_beta
Numeric vector of length K. Per-item beta parameter for the Beta guessing prior. Overrides
prior_c.- chains
Number of MCMC chains. Default 4.
- parallel_chains
Chains to run in parallel. Default 4.
- iter_warmup
Warmup iterations per chain. Default 1000.
- iter_sampling
Sampling iterations per chain. Default 1000.
- seed
Random seed for reproducibility.
- ...
Extra arguments passed to cmdstanr's sample() method.
Examples
if (FALSE) { # \dontrun{
sim <- rasch_simulate(J = 500, K = 10, seed = 42)
# Default priors
fit3 <- threepl_fit(sim$data, seed = 123)
# Per-item: items 1-5 are 4-option MC, items 6-10 are 5-option MC
K <- 10
c_alpha <- c(rep(5, 5), rep(5, 5))
c_beta <- c(rep(15, 5), rep(20, 5)) # mean 0.25 vs 0.20
fit3 <- threepl_fit(sim$data,
prior_c_alpha = c_alpha,
prior_c_beta = c_beta,
seed = 123
)
} # }