| fit.FCMIRT | R Documentation |
Fits a forced-choice variant of the multidimensional item response theory model to comparative ranking data. In forced-choice (FC) formats, respondents compare items within blocks rather than rating each item in isolation. The FCMIRT model couples an item-level MIRT endorsement model with a block-level ranking mechanism to recover latent trait estimates from comparative responses.
fit.FCMIRT(
data,
model = "2PL",
Q.matrix = NULL,
block.items = NULL,
D = NULL,
fc.type = NULL,
method = c("iStEM", "stan"),
control.model = NULL,
control.method = NULL
)
data |
An |
model |
MIRT model type: |
Q.matrix |
An optional |
block.items |
A list of length |
D |
Integer; number of latent dimensions. If |
fc.type |
Character vector (length 1 or |
method |
Estimation method: |
control.model |
A named list of model-level hyperparameters. Supported entries:
|
control.method |
A named list of method-specific tuning parameters. Common entries (used by both Stan and iStEM):
Stan-specific entries:
iStEM-specific entries:
|
An object of class "FCMIRT" containing:
nparNumber of free parameters.
method"stan" or "iStEM".
thetaList with est, se, Rhat
(N \times D); person trait estimates.
parList with est, se, Rhat,
free (I \times (D+3)); item parameters
a1..aD, b, c, d.
CorrList with est, se, Rhat
(D \times D).
block.items, patterns, patterns.total,
responseBlock structure and response data.
logLikMarginal log-likelihood (class "logLik").
Item-level endorsement.
Each statement i = 1, \dots, I is governed by a MIRT model
(1PL through 4PL). For a person with trait \boldsymbol{\theta}_j,
the probability of endorsing statement i in isolation is:
P_i(\boldsymbol{\theta}_j) =
c_i + (d_i - c_i) \times
\frac{1}{1 + \exp\bigl[-\bigl(\sum_{d=1}^{D} a_{id}\,\theta_{jd} - b_i\bigr)\bigr]}.
Block-level ranking.
Let block b = 1, \dots, B consist of items
\{i_1, i_2, \dots, i_{K_b}\} and define the implemented
statement utility as the logit of the item-level endorsement probability,
u_i(\boldsymbol{\theta}_j) =
\log\left[
\frac{P_i(\boldsymbol{\theta}_j)}
{1-P_i(\boldsymbol{\theta}_j)}
\right].
The probability that an examinee
produces the ranking i_{(1)} \succ i_{(2)} \succ \dots \succ i_{(K_b)}
(read as "i_{(1)} is preferred over i_{(2)} over ...") is:
P\bigl(i_{(1)} \succ \dots \succ i_{(K_b)} \mid \boldsymbol{\theta}_j\bigr) =
\prod_{m=1}^{K_b-1}
\frac{
\exp\{u_{i_{(m)}}(\boldsymbol{\theta}_j)\}
}{
\sum_{r=m}^{K_b} \exp\{u_{i_{(r)}}(\boldsymbol{\theta}_j)\}
}.
The Stan code evaluates the same choice kernel as
\log P_i + \sum_{h \ne i}\log(1-P_h) within each remaining set,
which is algebraically equivalent to a softmax over
\mathrm{logit}(P_i).
Partial rankings (MOLE / PICK). For MOLE (most-least) data, only the best and worst items in each block are identified; for PICK data, only the best item. The probability of a partial ranking is obtained by marginalizing (summing) the full-ranking probabilities over all completions consistent with the partial constraint; the C++ probability helper returns probabilities normalized over the observed RANK/MOLE/PICK patterns for each block.
Identification constraint (2PLM-RANK). Block intercepts
b_i are constrained to sum to zero within each block:
\sum_{i \in \text{block } b} b_i = 0, \qquad b = 1, \dots, B,
so that only K_b - 1 difficulties are freely estimated per block.
method = "stan"):Full Bayesian inference via HMC. The forced-choice likelihood is
evaluated over the ranking pattern probabilities. By default,
a.sigma is set to 1.0 (wider prior) to avoid spurious
shrinkage of within-block slopes toward equality.
method = "iStEM"):Improved Stochastic EM with finite-grid block Gibbs person-sampling and item optimization (L-BFGS-B). Block-level identification constraints are enforced during each item-parameter update.
Brown, A., & Maydeu-Olivares, A. (2011). Item response modeling of forced-choice questionnaires. Educational and Psychological Measurement, 71(3), 460–502. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1177/0013164410375112")}
Luce, R. D. (1959). Individual choice behavior: A theoretical analysis. Wiley.
Plackett, R. L. (1975). The analysis of permutations. Journal of the Royal Statistical Society: Series C, 24(2), 193–202.
sim.data.FCMIRT, get.fit.index.FCMIRT,
logLik.FCMIRT, fit.MIRT
# Simulate forced-choice data
sim <- sim.data.FCMIRT(N.person = 20, N.block = 3, I.block = 2,
D = 2, model = "m2pl", fc.type = "RANK")
# Fit via iStEM
fit <- fit.FCMIRT(sim$data, model = "m2pl",
Q.matrix = sim$Q.matrix,
block.items = sim$block.items,
D = 2, fc.type = "RANK",
method = "iStEM",
control.method = list(
vis = FALSE, seed = 123,
M = 2, B = 2, burnin.maxitr = 2,
maxitr = 3, eps1 = 10, eps2 = 10,
estimate.se = FALSE))
# Examine trait recovery
cor(fit$theta$est, sim$theta)
# Fit indices (nominal binary expansion)
gof <- get.fit.index(fit)
summary(gof)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.