Estimating abilities: MLE and EAP
What this is for
A respondent answers all ten items of a vocabulary test correctly. What is their ability? The likelihood, which has given us every estimate so far, says it is larger than any number you care to name. Abilities come to us only through an estimator, and the estimators disagree most for the respondents a test measures worst, at the top and the bottom. With the item parameters known, this lesson starts from maximum likelihood, shows where it has no answer, brings in a prior to get the expected a posteriori (EAP) estimate, and fits four estimators to the Wordsum vocabulary test, where 12% of respondents have no maximum-likelihood estimate at all.
Goals
By the end of this lesson you should be able to:
- write down the likelihood for one respondent’s \(\theta\) with the item parameters known, find its maximum, and give its standard error;
- explain why a perfect pattern has no maximum-likelihood estimate, and how the alternatives stay finite;
- compute an EAP estimate on a grid of nodes, and explain why it is pulled toward the mean and by how much;
- say what the MLE, WLE, MAP and EAP each assume, and what each assumption means for reporting scores to individuals and for comparing groups;
- show that under the Rasch model every one of these estimates is a function of the sum score, and that under the 2PL it isn’t.
Core ideas
One respondent, one unknown
This lesson is the second step. With the item parameters known, a respondent’s answers are independent Bernoulli trials whose probabilities depend on one unknown, \(\theta\): a logistic regression with the respondent’s items as the observations (Lord, 1980). For the 2PL, \[\ell(\theta) = \sum_{i} \Big[x_i \log P_i(\theta) + (1 - x_i)\log\big(1 - P_i(\theta)\big)\Big], \qquad \frac{\partial \ell}{\partial \theta} = \sum_i a_i\big(x_i - P_i(\theta)\big),\] and the Rasch model sets every \(a_i = 1\).
Here \(\theta\) is that intercept. Under the Rasch model the maximum-likelihood estimate (MLE) solves \(\sum_i P_i(\hat\theta) = r\): the expected number correct equals the observed number. Software solves it by Newton–Raphson, stepping from a guess by the ratio of the derivative to the curvature (Baker & Kim, 2004).
So the standard error of the MLE is \(1/\sqrt{I(\hat\theta)}\), a large-sample approximation that holds up better in the middle of a test than at its ends.
Try it: the likelihood of a response pattern
Three Rasch items (\(b\) = −1, 0, 1.5). Choose which the respondent gets right; the bold curve is that pattern’s likelihood, the pale ones the other seven.
The default pattern, 1-1-0, peaks at 1.02, with a standard error of 1.37: three items locate a respondent only roughly. The other two-right patterns peak at the same place, though lower. Tick all three: the likelihood climbs toward 1 and never turns over.
Perfect patterns have no maximum
Why does the all-correct pattern never peak? Each item’s probability of a correct answer rises with \(\theta\), so their product does too. The score equation asks the expected number correct to equal the number of items, which it approaches but never reaches. The MLE is \(+\infty\), and for an all-wrong pattern \(-\infty\).
It is the coin with ten heads in ten flips: \(\hat p = 1\), whose log odds is infinite. mirt reports \(\pm\)Inf; optimize() on \([-10, 10]\) returns the bound, a number that looks like an estimate (the simulation below shows it). One fix that needs no prior is the weighted likelihood estimate (WLE), which is finite for every pattern under the Rasch model, the 2PL and even the 3PL and 4PL (Magis & Verhelst, 2017); it has its own subsection below.
Bring in a prior: the EAP estimate
The likelihood lesson set aside the Bayesian reading, in which \(\theta\) gets a prior distribution, \(g(\theta)\), and the data turn it into a posterior, \[p(\theta \mid \mathbf{x}) = \frac{L(\theta \mid \mathbf{x})\,g(\theta)}{\int L(t \mid \mathbf{x})\,g(t)\,dt}.\] For ability, the natural prior is the distribution of \(\theta\) in the respondent’s population, which mirt estimates with the items (a normal with mean 0 and an SD fixed at 1 or estimated). The expected a posteriori (EAP) estimate is the posterior mean, and its standard error is the posterior SD (Bock & Mislevy, 1982). The integral needs no closed form: evaluate likelihood × prior at nodes \(t_1, \dots, t_Q\) and average, \[\hat\theta_{\text{EAP}} = \frac{\sum_q t_q\,L(t_q)\,g(t_q)}{\sum_q L(t_q)\,g(t_q)}.\] Nothing iterates and nothing fails: a normal prior times a bounded likelihood always has a mean, even when the likelihood never peaks. The posterior’s peak is the maximum a posteriori (MAP) estimate, also called Bayes modal (Mislevy, 1986).
Try it: prior × likelihood = posterior
The ten Wordsum items analysed below, with their Rasch difficulties. Choose a sum score and the prior’s SD (the fitted value is 1.88); each curve is scaled to a peak of 1.
At a score of 9 the MLE is 2.55, the MAP 1.95 and the EAP 2.08: the prior pulls about half a logit toward 0. At 10 the likelihood never falls, yet the posterior has a peak (2.83) and a mean (3.05). With a prior SD of 1 the EAP for a score of 9 is 1.34; with 4 it is 2.66, just beyond the MLE, as the posterior is skewed toward the open end. At a score of 6 the EAP stays within about 0.1 of the MLE at any prior SD. That pull toward the prior mean is shrinkage, largest where the likelihood is flattest: at the ends of the scale, and on short tests.
Try it: shrinkage by score, and by test length
Estimates for every score on the Wordsum items. “Test length” repeats the ten items (40 items is four copies of each); the horizontal axis is the proportion correct.
The MLE at 90% correct is 2.55 whatever the length, because repeating every item multiplies both sides of the score equation by the same number. The EAP moves toward it as the test grows, from 2.08 with 10 items to 2.42 with 40, as the likelihood sharpens. The WLE, taken up below, sits nearer the MLE and gives a perfect score a finite value (3.59 with 10 items).
Shrinkage carries into anything computed from the estimates. If you’ve done Model fit and out-of-sample prediction, it is why outfit computed from mirt’s default EAP abilities averaged about 0.9 on simulated 20-item data where the model was true.
MAP, EAP and plausible values
The MAP sits close to the EAP; it is found by Newton–Raphson with the prior adding a term to the score equation, and suits software that finds modes more easily than means. If the prior describes the population, the EAP has the smallest mean squared error averaged over that population, since squared error is what a posterior mean minimizes; shrinkage is the other side of that coin.
No individual estimate carries the spread of \(\theta\) itself (EAPs vary too little, MLEs too much), so variances, correlations and regressions built on them are off. Large-scale assessments such as NAEP use plausible values (Mislevy, 1991; Mislevy, Beaton, Kaplan & Sheehan, 1992): several random draws from each respondent’s posterior, under a prior that is a regression of \(\theta\) on background variables. Each set has the spread and group differences of \(\theta\); the analysis is run on each and combined as in multiple imputation. They are a tool for population quantities, not scores to report for individuals (Wu, 2005). What does a score mean? takes them up in full.
The weighted likelihood estimate
What if we want an estimate that borrows nothing from the population but exists for every pattern? Warm (1989) weights the likelihood by a function of \(\theta\) chosen to cancel the leading term of the MLE’s bias, the bias that Lord (1983) derives. This adds \(J(\theta)/2I(\theta)\) to the score equation (the Go deeper callout writes it out). The WLE has the MLE’s large-sample variance, less bias, and a finite value for every pattern (Magis & Verhelst, 2017). It is Firth’s (1993) bias reduction, which penalizes the likelihood by the Jeffreys prior and also gives finite logistic regressions under separation (Heinze & Schemper, 2002); for the Rasch model and 2PL the WLE is the peak of the likelihood times that prior, while under the 3PL the two part (Magis & Raîche, 2012).
How does it compare? Warm’s Monte Carlo studies favoured it over the MLE and Bayes modal estimates on several criteria across a wide range of abilities, and Kim and Nicewander (1993) found the WLE, MAP and EAP all close to unbiased where the test’s items are. That is the evidence: less bias than the MLE at the same variance, and finiteness, not optimality in general. The cost is the EAP’s lower error. The WLE doesn’t shrink, so in the simulation below its RMSE is 0.77 against the EAP’s 0.61, and its SD 1.28 against a true 1. What it offers is independence from a population prior, which matters when respondents come from different populations.
Sufficiency, revisited
Every estimator here uses the responses only through the likelihood, so under the Rasch model every one depends on them only through \(r\): the score equations contain the data only as \(r\), and in the posterior the pattern’s own factor cancels. Ten Wordsum items give eleven possible EAPs, which is how the widgets above could list every estimate.
So respondents with the same sum score but different items right get different estimates, ordered by \(\sum_i a_i x_i\).
Simulate
Which estimator lands closest to the truth? The code below simulates Rasch responses to ten items (\(b\) from −2 to 2) from 5,000 respondents in two groups whose means differ by 1 (overall mean 0, SD 1), estimates every \(\theta\) four ways with the difficulties known and a normal(0, 1) prior, and reports bias and root mean squared error (RMSE) by true \(\theta\), the SD of the estimates and the group difference. It is base R and runs in a second.
With the seed as written, 112 of the 5,000 respondents (2.2%) have no finite MLE, and optimize() on a perfect score returns 10, its upper bound. The MLE and WLE are close to unbiased across the middle; the EAP and MAP are pulled toward 0, by about 0.16 within one SD of the mean, 0.5 one to two SDs out, and 1 beyond. In return the EAP’s RMSE is 0.52 in the middle, against 0.78 to 0.80 for the MLE, and 0.61 overall against 0.79 (without the 112). At the ends the order reverses. The SDs are 1.26 (MLE) and 0.80 (EAP) against a true 1, and the group difference is 0.98 (MLE), 1.03 (WLE) and 0.65 (EAP). With length.out at 20 or 40, the EAP’s group difference rises to 0.80 and 0.89.
Download this code to run it in your own R session.
With real data
Our main example is c19prc_uk_mcbride_2021_wordsum: the Wordsum vocabulary test as answered by 2,058 UK adults in the sixth wave of the COVID-19 Psychological Research Consortium study (Bentall et al., 2022; the study’s design is described by McBride et al., 2021). Wordsum is the ten-item vocabulary test of the US General Social Survey, drawn from Thorndike (1942) and analysed with item response theory by Cor, Haertel, Krosnick and Malhotra (2012): for each target word, choose the closest in meaning from five words, or “don’t know”. Its job here is to be a short test on which many respondents reach the floor or the ceiling. A response is 1 for the right word and 0 otherwise, “don’t know” included. Download the code to run every chunk yourself; it needs mirt (Chalmers, 2012).
Code
library(mirt)
# Each IRW table has a landing page (itemresponsewarehouse.org/tables/<name>/) with a
# CSV download. This link is pinned to one version of the data.
ws_url <- "https://redivis.com/api/v1/tables/datapages.item_response_warehouse_4:v7_0.c19prc_uk_mcbride_2021_wordsum/rows?format=csv"
df <- read.csv(ws_url)
table(df$wave) # one wave (6), so one response per respondent and item
6
20580
Code
# resp is 1 when the respondent chose the listed word closest in meaning to the target
# word, and 0 for any other choice, including "don't know".
wide <- tapply(df$resp, list(df$id, df$item), function(x) x[1])
wide <- as.data.frame(wide[, order(as.numeric(gsub("\\D", "", colnames(wide))))])
c(respondents = nrow(wide), items = ncol(wide), complete = sum(complete.cases(wide)))respondents items complete
2058 10 2058
Code
round(colMeans(wide), 2) # proportion correct, item by item Wordsum_1 Wordsum_2 Wordsum_3 Wordsum_4 Wordsum_5 Wordsum_6 Wordsum_7
0.69 0.78 0.27 0.84 0.67 0.82 0.37
Wordsum_8 Wordsum_9 Wordsum_10
0.30 0.67 0.29
Code
r <- rowSums(wide) # sum score, 0 to 10
table(r)r
0 1 2 3 4 5 6 7 8 9 10
95 83 114 152 176 282 333 253 211 203 156
There is one wave, every respondent answered all ten items, and the items run from 27% to 84% correct.
Code
# The Rasch model. mirt fixes every slope at 1 and the mean ability at 0, and
# estimates the SD of ability; its d is an easiness, so our difficulty is b = -d.
m <- mirt(wide, 1, itemtype = "Rasch", verbose = FALSE)
b <- -coef(m, simplify = TRUE)$items[, "d"]
round(sort(b), 2) Wordsum_4 Wordsum_6 Wordsum_2 Wordsum_1 Wordsum_9 Wordsum_5 Wordsum_7
-2.51 -2.32 -1.98 -1.24 -1.13 -1.10 0.88
Wordsum_8 Wordsum_10 Wordsum_3
1.37 1.39 1.55
Code
c(sd_theta = round(sqrt(coef(m)$GroupPars[, "COV_11"]), 2))sd_theta
1.88
The difficulties fall in two groups, six easy items from −2.51 to −1.10 and four hard ones from 0.88 to 1.55, with nothing between. The SD of ability, 1.88, is the prior’s SD for the EAP and MAP estimates below.
Code
# How many respondents have no finite maximum-likelihood estimate?
ml <- fscores(m, method = "ML", full.scores.SE = TRUE)
data.frame(zero = sum(r == 0), perfect = sum(r == 10), no_mle = sum(r %in% c(0, 10)),
share = round(mean(r %in% c(0, 10)), 3))| zero | perfect | no_mle | share |
|---|---|---|---|
| 95 | 156 | 251 | 0.122 |
Code
table(ml[, "F1"][r %in% c(0, 10)]) # mirt reports them as -Inf and Inf
-Inf Inf
95 156
The 251 respondents with a score of 0 or 10 are 12.2% of the sample, and mirt gives them \(-\infty\) and \(+\infty\). The simulation above, with an ability SD of 1, had 2.2%.
Code
# Four estimators. Under the Rasch model each is a function of the sum score alone,
# so one row per score says everything (the last line checks it).
meth <- c("ML", "WLE", "MAP", "EAP")
est <- lapply(meth, function(k) fscores(m, method = k, full.scores.SE = TRUE))
names(est) <- meth
by_r <- function(col) sapply(est, function(e) tapply(e[, col], r, function(z) z[1]))
tab <- data.frame(score = 0:10, n = as.vector(table(r)), round(by_r("F1"), 2),
SE = round(by_r("SE_F1"), 2), check.names = FALSE)
print(tab, row.names = FALSE) score n ML WLE MAP EAP SE.ML SE.WLE SE.MAP SE.EAP
0 95 -Inf -4.48 -3.49 -3.65 NA 1.48 0.96 0.94
1 83 -3.48 -3.17 -2.72 -2.83 1.11 0.95 0.82 0.86
2 114 -2.53 -2.41 -2.10 -2.16 0.88 0.81 0.76 0.79
3 152 -1.83 -1.79 -1.55 -1.57 0.81 0.77 0.73 0.75
4 176 -1.20 -1.21 -1.02 -1.02 0.79 0.77 0.73 0.74
5 282 -0.57 -0.60 -0.48 -0.47 0.80 0.80 0.74 0.75
6 333 0.09 0.07 0.08 0.10 0.83 0.83 0.76 0.76
7 253 0.79 0.76 0.66 0.69 0.85 0.83 0.77 0.78
8 211 1.56 1.46 1.27 1.33 0.91 0.85 0.80 0.82
9 203 2.55 2.26 1.95 2.07 1.13 0.96 0.86 0.91
10 156 Inf 3.59 2.83 3.03 NA 1.49 1.03 1.05
Code
c(largest_spread_within_a_score = round(max(sapply(est, function(e)
max(tapply(e[, "F1"], r, function(z) diff(range(z))), na.rm = TRUE))), 4))largest_spread_within_a_score
0
Each estimator gives one value per sum score (the largest spread within a score is 0). In the middle they nearly agree: a score of 5 gives −0.57 (MLE), −0.60 (WLE), −0.48 (MAP) and −0.47 (EAP). They part at the ends. A score of 9 gives 2.55, 2.26, 1.95 and 2.07, and a score of 10 gives \(+\infty\), 3.59, 2.83 and 3.03. The MLE’s standard error is 0.79 at a score of 4 and 1.13 at 9; the posterior SDs are smaller everywhere.
Code
# The ML standard error is 1 / sqrt(test information) at the estimate.
fin <- is.finite(ml[, "F1"])
all.equal(unname(ml[fin, "SE_F1"]), 1 / sqrt(testinfo(m, ml[fin, "F1", drop = FALSE])),
tolerance = 1e-4)[1] TRUE
mirt’s MLE standard errors are \(1/\sqrt{I(\hat\theta)}\), the test information evaluated at each estimate (all.equal returns TRUE).
Code
# EAPs are pulled toward the mean: their SD is below the model's SD of ability.
# The posterior variances make up the difference.
eap <- est$EAP
sd_model <- sqrt(coef(m)$GroupPars[, "COV_11"])
round(c(sd_model = sd_model, sd_eap = sd(eap[, "F1"]), sd_wle = sd(est$WLE[, "F1"])), 2)sd_model sd_eap sd_wle
1.88 1.69 1.96
Code
round(c(var_model = sd_model^2, var_eap = var(eap[, "F1"]),
mean_posterior_var = mean(eap[, "SE_F1"]^2),
sum = var(eap[, "F1"]) + mean(eap[, "SE_F1"]^2)), 2) var_model var_eap mean_posterior_var sum
3.54 2.86 0.67 3.53
The EAPs have an SD of 1.69, below the model’s 1.88; the WLEs, at 1.96, are above it. The shortfall isn’t lost: the variance of the EAPs (2.86) plus the average posterior variance (0.67) is 3.53, the model’s variance (3.54) to rounding.
Code
# The 2PL. Now the weighted score sum(a * x) carries the information about theta,
# so respondents with the same sum score can get different estimates.
m2 <- mirt(wide, 1, itemtype = "2PL", verbose = FALSE)
c(BIC_Rasch = round(extract.mirt(m, "BIC")), BIC_2PL = round(extract.mirt(m2, "BIC")))BIC_Rasch BIC_2PL
19887 19398
Code
a <- coef(m2, simplify = TRUE)$items[, "a1"]
round(a, 2) Wordsum_1 Wordsum_2 Wordsum_3 Wordsum_4 Wordsum_5 Wordsum_6 Wordsum_7
1.62 3.75 1.21 5.20 3.64 3.94 1.09
Wordsum_8 Wordsum_9 Wordsum_10
1.21 1.59 2.20
Code
eap2 <- fscores(m2, method = "EAP")[, "F1"]
five <- r == 5
w <- as.matrix(wide) %*% a # weighted score
data.frame(respondents = sum(five),
patterns = nrow(unique(wide[five, ])),
weighted_scores = length(unique(round(w[five], 6))),
EAPs = length(unique(round(eap2[five], 6))),
lowest = round(min(eap2[five]), 2), highest = round(max(eap2[five]), 2),
rank_cor = round(cor(w[five], eap2[five], method = "spearman"), 3))| respondents | patterns | weighted_scores | EAPs | lowest | highest | rank_cor |
|---|---|---|---|---|---|---|
| 282 | 40 | 40 | 40 | -1.05 | -0.04 | 1 |
BIC (Schwarz, 1978) prefers the 2PL to the Rasch model (19,398 against 19,887), and the slopes run from 1.09 to 5.20. The 282 respondents with a score of 5 gave 40 different response patterns, which have 40 different weighted scores and get 40 different EAPs, from −1.05 to −0.04, in exactly the order of their weighted scores (rank correlation 1). Under the Rasch model all 282 shared one EAP, −0.47: a full logit of difference among respondents with the same number right comes from the choice of model.
Which estimate to report
The choice rests on what we’ll assume and on what the numbers are for.
- The MLE and WLE assume nothing about the population: the estimate comes from the respondent’s own responses, which suits comparisons across populations. The price is noise: on Wordsum the MLE’s standard errors run from 0.79 to 1.13, and 12% of respondents have no MLE.
- The EAP and MAP assume the respondent comes from the population the prior describes. If so, they are closer to the truth on average (in the simulation, an RMSE of 0.61 against 0.79). The price is shrinkage toward that population’s mean, largest at the ends and on short tests, which carries into spreads and group differences.
For a score reported to an individual from a test like this one, the EAP with its posterior SD may be sufficient for some purposes, read as pulled toward the mean of the population the prior describes. It always exists, it is the most accurate on average for the people the test was given to, and its standard error grows where the items run out. Averaged to compare groups, EAPs understate the difference: the simulation’s group difference of 1 came back as 0.65. The MLEs and WLEs came closer, but they vary too much for spreads and correlations. Where a prior is unwelcome, say because respondents come from different populations, the WLE keeps the respondents at the floor and the ceiling whom the MLE loses. Group questions can also go into the model itself, or be answered with plausible values. And if the Rasch model fits and everyone took the same items, The Rasch model has already argued for the sum score: every estimator in the table above is a relabelling of it.
Problems
- Three items by hand. For Rasch items with \(b = -1, 0, 1.5\), plot the likelihood of 1-1-0. At what \(\theta\) does 1-1-0 become more likely than 1-0-0, and why is that a difficulty? (PS4#1)
- The Rasch score equation. Show that the Rasch MLE solves \(\sum_i P_i(\theta) = r\). Then use the factorization from the Rasch lesson’s Go deeper callout to show that the EAP depends on the pattern only through \(r\) too.
- Change the prior. Rescore Wordsum by EAP with a prior SD of 1 instead of 1.88 (
fscores(m, method = "EAP", mean = 0, cov = 1)). Which respondents move most? What happens to the SD of the EAPs, and why? - Classroom averages. A school compares classroom means of students’ EAPs from a 15-item test, with one normal prior for everyone. What goes wrong, in which direction, and what would you report instead?
- Does EAP reduce error? Extend the simulation: 1,000 respondents at each true \(\theta\) from −3 to 3 in steps of 0.5. Where does the EAP’s RMSE beat the MLE’s, and where not? Then score normal(0, 1) respondents with a prior of mean 1. What changes? (PS5#2)
- Challenge (open): the floor and the ceiling. A survey analyst wants Wordsum as a predictor of, say, trust in science. What should they do with the 251 respondents at 0 or 10: drop them, use WLEs, EAPs or plausible values, or fit the regression inside the item response model? Does it depend on the question? I don’t think there is a single answer; make the case for yours.
Going further
- Bock, R. D., & Mislevy, R. J. (1982). Adaptive EAP estimation of ability in a microcomputer environment. Applied Psychological Measurement, 6(4), 431–444. https://doi.org/10.1177/014662168200600405. The EAP estimate on a grid of nodes, and its posterior SD as a standard error.
- Warm, T. A. (1989). Weighted likelihood estimation of ability in item response theory. Psychometrika, 54(3), 427–450. https://doi.org/10.1007/bf02294627. The WLE, compared with the MLE and Bayes modal estimates.
- Magis, D., & Verhelst, N. (2017). On the finiteness of the weighted likelihood estimator of ability. Psychometrika, 82(3), 637–647. https://doi.org/10.1007/s11336-016-9518-9. The WLE is finite for every pattern under the 1PL to 4PL and many polytomous models.
- Magis, D., & Raîche, G. (2012). On the relationships between Jeffreys modal and weighted likelihood estimation of ability under logistic IRT models. Psychometrika, 77(1), 163–169. https://doi.org/10.1007/s11336-011-9233-5. Where the WLE and the Jeffreys-prior mode coincide, and where they part.
- Firth, D. (1993). Bias reduction of maximum likelihood estimates. Biometrika, 80(1), 27–38. https://doi.org/10.1093/biomet/80.1.27. The general form of Warm’s correction.
- Heinze, G., & Schemper, M. (2002). A solution to the problem of separation in logistic regression. Statistics in Medicine, 21(16), 2409–2419. https://doi.org/10.1002/sim.1047. Firth’s correction as a fix for separation, the logistic-regression version of perfect patterns.
- Kim, J. K., & Nicewander, W. A. (1993). Ability estimation for conventional tests. Psychometrika, 58(4), 587–599. https://doi.org/10.1007/bf02294829. Five estimators compared for bias, standard error and reliability.
- Lord, F. M. (1983). Unbiased estimators of ability parameters, of their variance, and of their parallel-forms reliability. Psychometrika, 48(2), 233–245. https://doi.org/10.1007/BF02294018. The bias of the MLE, and estimators without it.
- Mislevy, R. J. (1986). Bayes modal estimation in item response models. Psychometrika, 51(2), 177–195. https://doi.org/10.1007/bf02293979. Priors in item response models.
- Mislevy, R. J. (1991). Randomization-based inference about latent variables from complex samples. Psychometrika, 56(2), 177–196. https://doi.org/10.1007/bf02294457. Plausible values as multiple imputation, with NAEP data.
- Mislevy, R. J., Beaton, A. E., Kaplan, B., & Sheehan, K. M. (1992). Estimating population characteristics from sparse matrix samples of item responses. Journal of Educational Measurement, 29(2), 133–161. https://doi.org/10.1111/j.1745-3984.1992.tb00371.x. Plausible values, from the concepts to NAEP.
- Wu, M. (2005). The role of plausible values in large-scale surveys. Studies in Educational Evaluation, 31(2–3), 114–128. https://doi.org/10.1016/j.stueduc.2005.05.005. Plausible values and individual estimates, side by side.
- Baker, F. B., & Kim, S.-H. (2004). Item response theory: Parameter estimation techniques (2nd ed.). Marcel Dekker. https://doi.org/10.1201/9781482276725. Newton–Raphson for abilities, and the rest of the machinery, step by step.
- Lord, F. M. (1980). Applications of item response theory to practical testing problems. Erlbaum. https://doi.org/10.4324/9780203056615. The likelihood for ability with the items known.
- Albert, A., & Anderson, J. A. (1984). On the existence of maximum likelihood estimates in logistic regression models. Biometrika, 71(1), 1–10. https://doi.org/10.1093/biomet/71.1.1. Separation, of which perfect patterns are an instance.
- Andersen, E. B. (1977). Sufficient statistics and latent trait models. Psychometrika, 42(1), 69–81. https://doi.org/10.1007/BF02293746. Why only the Rasch model makes the sum score sufficient.
- Cor, M. K., Haertel, E., Krosnick, J. A., & Malhotra, N. (2012). Improving ability measurement in surveys by following the principles of IRT: The Wordsum vocabulary test in the General Social Survey. Social Science Research, 41(5), 1003–1016. https://doi.org/10.1016/j.ssresearch.2012.05.007. Wordsum analysed with item response theory.
- Thorndike, R. L. (1942). Two screening tests of verbal intelligence. Journal of Applied Psychology, 26(2), 128–135. https://doi.org/10.1037/h0060053. Where the Wordsum items come from.
- McBride, O., Murphy, J., Shevlin, M., Gibson-Miller, J., Hartman, T. K., Hyland, P., et al. (2021). Monitoring the psychological, social, and economic impact of the COVID-19 pandemic in the population: Context, design and conduct of the longitudinal COVID-19 Psychological Research Consortium (C19PRC) Study. International Journal of Methods in Psychiatric Research, 30(1), e1861. https://doi.org/10.1002/mpr.1861. The study that gave Wordsum to these respondents.
- Schwarz, G. (1978). Estimating the dimension of a model. The Annals of Statistics, 6(2), 461–464. https://doi.org/10.1214/aos/1176344136. The BIC.
- Chalmers, R. P. (2012). mirt: A multidimensional item response theory package for the R environment. Journal of Statistical Software, 48(6). https://doi.org/10.18637/jss.v048.i06.
fscores()computes every estimator in this lesson. - Johnson, M. S., & Sinharay, S. (2017). Bayesian estimation. In W. J. van der Linden (Ed.), Handbook of item response theory: Vol. 2. Statistical tools (pp. 237–258). Chapman and Hall/CRC. https://doi.org/10.1201/b19166-13. A handbook chapter on Bayesian estimation for item response models.
Data sources
Data from the Item Response Warehouse (each table name links to its IRW page); references from IRW biblio.
c19prc_uk_mcbride_2021_wordsum: Bentall, Richard and Shevlin, Mark and McBride, Orla and Murphy, Jamie and Hartman, Todd K and Levita, Liat and Gibson-Miller, Jilly and Mason, Liam and Bennett, Kate (2022). The COVID-19 Psychological Research Consortium Study, 2020-2021. [Data Collection]. Colchester, Essex: UK Data Service. 10.5255/UKDA-SN-855552. https://osf.io/v2zur/. Licence: CC BY 4.0.
For instructors
- Source: EDUC 252 class 4 (slides c4, 44–48) and class 5 (slides c5, 64–66), problem sets 3 (#2), 4 (#1) and 5 (#2), and the code in
ben-domingue/252:ps3/1_abilities.R,ps5/eap_versus_mle.R. - Timing: the core ideas and widgets take about 60 minutes; the Wordsum analysis works as a 25-minute lab. Every fit takes a few seconds in local R.
- Changed from 252: the 252 code finds the MLE with
optim()on a bounded interval, which returns the bound for a perfect pattern; the simulation here solves the score equation, counts the perfect patterns, and adds the WLE, the MAP and a group difference to PS5#2’s comparison of MLE and EAP. The real data (Wordsum) are new. - Held back: where the item parameters come from, and the EAP’s nodes and weights as the E step of EM (Estimating item parameters); EAP in adaptive testing (Item banks and adaptive testing); priors on item parameters (Guessing and priors); plausible values in full, and which estimate to put on a reported score scale (What does a score mean?). Out-of-sample prediction with MLE and EAP abilities (PS5#2b) is left as an extension of problem 5.
- Solutions: held back in
solutions/ability-estimation.qmd(not published).