Solved – theta parameter in R’s LTM package

item-response-theoryr

I am curious whether there is an intuitive way in ltm package in R to display person's estimated latent trait after fitting the data to an IRT model.

After install.packages("ltm"), one can quickly run a two-parameter IRT model with the built-in WIRS data, which is a 6-item test with 1,005 persons:

library(ltm)
data <- WIRS
two_pl <- ltm(data ~ z1)

The method coef(two_pl) displays all the item parameters:

          Dffclt    Dscrmn
Item 1  3.4011395 0.1534064
Item 2 -0.9421221 0.3676923
Item 3  0.8093853 1.7179970
Item 4  1.3689278 1.0101043
Item 5  0.4762685 2.0324137
Item 6  1.6804632 1.3745785

with two_pl$coefficients one can also display (intercept) and z1. I am not familiar with meaning of the former as there is none in the typical formation of 2PL equation, but z1 is the discrimination parameter of items.

       (Intercept)        z1
Item 1  -0.5217566 0.1534064
Item 2   0.3464111 0.3676923
Item 3  -1.3905215 1.7179970
Item 4  -1.3827598 1.0101043
Item 5  -0.9679746 2.0324137
Item 6  -2.3099285 1.3745785

My question: is it possible to find the estimated theta parameters for each person in ltm?

I have checked the documentation, while they have both item.fit and person.fit, there is no indication that one can pull out the data of person's latent level trait. In the WIRS example, it should be a vector/list with 1,005 elements, but I am still not able to find anything like it after fitting the model.

Best Answer

  1. Theta estimation according to the expected response pattern:

    Theta <- factor.scores(two_pl)
    
  2. Theta estimation according to the real data response pattern:

    Theta <- factor.scores(two_pl, method = "EAP", resp.patterns = data)
    
Related Question