Starts a computerized adaptive test (CAT) over the chosen scales of an item bank,
one scale at a time, in the order given. Each scale is tested with the engine of its
IRT model (any of irt_models): each next item is the most informative
one left at the current estimate (maximum Fisher information); after each answer the
ability is estimated again by EAP, with the normal prior of the scale, over a grid
of \(\pm 6\) prior standard deviations. A scale stops when the
standard error, divided by the prior standard deviation, is at most
se_threshold, or when its items run out; the test then moves to the next scale.
Usage
cat_start(bank, scales = unique(bank$scale), se_threshold = 0.45)Arguments
- bank
An item bank read with
read_questionnaire.- scales
The scales to test, in order.
- se_threshold
Standardized standard error at which a scale stops.
Value
A CAT session: a list to pass to cat_answer,
cat_item and cat_results. Its stage is
"testing" until the last scale stops, then "done"; progress
has one row per scale and log one row per answer.
Details
Abilities and standard errors are reported standardized per scale (divided by the
prior standard deviation), so the same threshold is the same target in every scale:
a threshold se aims at a reliability of about \(1 - se^2\).
See also
Other CAT session:
cat_answer(),
cat_item(),
cat_results(),
plot_cat_trajectory()
Examples
q <- read_questionnaire(example_questionnaires()[3]) # IPIP-50, graded response model
s <- cat_start(q, scales = "Extraversion", se_threshold = 0.45)
while (s$stage == "testing") s <- cat_answer(s, 4) # always "Moderately accurate"
cat_results(s)
#> scale theta se percentile answered total status
#> 1 Extraversion 0.4534394 0.4414101 67.48838 2 10 completed
s$log
#> step scale question answer score theta se
#> 1 1 Extraversion I talk to a lot of different people at parties. 4 3 0.5009819 0.5880331
#> 2 2 Extraversion I start conversations. 4 3 0.4534394 0.4414101