I'm trying to understand the model in this paper where they treat the item response theory model as a form of logistic regression.

In the model the probability of getting an item (question) correct is given by $$ P = \frac{1}{1+e^{-Z}} $$


$$ Z = \theta X = \sum_k \theta_k X_k. $$

$\theta$ describes the students' abilities, and $X$ describes the difficulty of the items.

What I don't understand at the moment is how to interpret the idea of regression, when there doesn't seem to be any data associated with the independent variables. There's only the binary outcome of correctly or incorrectly answering a question. The authors associate an interpretation to the variables $\theta$ and $X$, but how is that guaranteed to be the outcome of the regression since the expression is symmetric? If there happened to be the same number of students as items could we be sure of the interpretation of our results?

  • $\begingroup$ I'm a bit confused. There is one "question" and many "items"? What are items? It looks like regular logistic regression to me $\endgroup$ – bdeonovic Aug 14 '15 at 15:59
  • 1
    $\begingroup$ @bdeonovic, this is Item Response Theory (IRT), it's from psychometrics, not biostatistics. It has to do with how tests such as the SAT are created. Each question on the test is an "item". The items load onto latent variables as in SEM. So do the students (test takers). $\endgroup$ – gung Aug 14 '15 at 16:12
  • $\begingroup$ I see. How'd you pick up on the fact that I was a biostatistician? :) $\endgroup$ – bdeonovic Aug 14 '15 at 16:21

It's not really clear what is going on in this paper as the authors seem to have breezed over some important information. From what it appears, they seem to want to estimate all the parameters in IRT models through a single call to R's optim function, but unless further constrains are supplied to the optimization process this simply will not work (a similar approach could be used for linear factor analysis, and will suffer the same problem).

In the typical approach to using logistic regression in IRT, the latent trait values ($\theta$) are realized by simply using the (potentially rescaled) total/sum score as a proxy for each participants ability, $\theta_i$. Admittedly this is a bit of a hack, but for bias detection methods in unidimensional tests where a grouping variable is included it has seen some success.

Here the authors are trying at a joint maximum-likelihood approach but do not seem to be imposing any additional constraints on the distribution of the ability parameters. Hence, the optimizer really won't really know where to go and essentially just returns the starting values (i.e., the mean of the abilities could arbitrarily increase to explain successful item endorsement, or alternatively the difficulty of the items could decrease to indicate that the items were just really easy. Both are valid because the model is not sufficiently identified).

Here's some R code to try and reproduce what the authors are doing. Note that the cost function only seems to change the value of the objective function.

dat <- key2binary(SAT12,
               key = c(1,4,5,2,3,1,2,1,3,1,2,4,2,1,5,3,4,4,1,4,3,3,4,1,3,5,1,3,1,5,4,5))

ProbFun <- function(X, theta, tol = 1e-10){
    Z <- X %*% t(theta)
    ret <- t(1 / (1 + exp(-Z)))
    ret <- ifelse(ret < tol, tol, ret)
    ret <- ifelse(ret > 1 - tol, 1 - tol, ret)

L <- function(p, dat, lambda = 0){
    X <- matrix(p[1:(ncol(dat))], ncol(dat))
    theta <- cbind(1, matrix(p[-c(1:ncol(dat))], nrow(dat)))
    if(ncol(thetas) > ncol(X)) X <- cbind(X, 1)
    PP <- ProbFun(X, theta)
    -sum(log(PP) * dat + log(1 - PP) * (1 - dat)) + sum(lambda * p^2)

ability <- scale(rowSums(dat))
intercepts <- qlogis(colMeans(dat))
p <- c(intercepts, ability)

optim(p, L, dat=dat, lambda=0)
optim(p, L, dat=dat, lambda=.1)
optim(p, L, dat=dat, lambda=.5)
optim(p, L, dat=dat, lambda=1)

# marginal ML run
mod <- mirt(dat, 1, 'Rasch')
coef(mod, simplify=TRUE)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.