Compute person parameters for the 1,2,3,4-PL model and for the GPCM. Choose between ML, WL, MAP, EAP and robust estimation. Use this function if 4-PL items and GPCM items are mixed for each person.

PPall(
  respm,
  thres,
  slopes,
  lowerA,
  upperA,
  theta_start = NULL,
  mu = NULL,
  sigma2 = NULL,
  type = "wle",
  model2est,
  maxsteps = 100,
  exac = 0.001,
  H = 1,
  ctrl = list()
)

# S3 method for ppeo
print(x, ...)

# S3 method for ppeo
summary(object, nrowmax = 15, ...)

Arguments

respm

An integer matrix, which contains the examinees responses. A persons x items matrix is expected.

thres

A numeric matrix which contains the threshold parameter for each item. If the first row of the matrix is not set to zero (only zeroes in the first row) - then a row-vector with zeroes is added by default.

slopes

A numeric vector, which contains the slope parameters for each item - one parameter per item is expected.

lowerA

A numeric vector, which contains the lower asymptote parameters (kind of guessing parameter) for each item. In the case of polytomous items, the value must be 0.

upperA

numeric vector, which contains the upper asymptote parameters for each item. In the case of polytomous items, the value must be 1.

theta_start

A vector which contains a starting value for each person. If NULL is submitted, the starting values are set automatically. If a scalar is submitted, this start value is used for each person.

mu

A numeric vector of location parameters for each person in case of MAP estimation. If nothing is submitted this is set to 0 for each person for MAP estimation.

sigma2

A numeric vector of variance parameters for each person in case of MAP or EAP estimation. If nothing is submitted this is set to 1 for each person for MAP estimation.

type

Which maximization should be applied? There are five valid entries possible: "mle", "wle", "map", "eap" and "robust". To choose between the methods, or just to get a deeper understanding the papers mentioned below are quite helpful. The default is "wle" which is a good choice in many cases.

model2est

A character vector with length equal to the number of submitted items. It defines itemwise the response model under which the item parameter was estimated. There are 2 valid inputs up to now: "GPCM" and "4PL".

maxsteps

The maximum number of steps the NR algorithm will take. Default = 100.

exac

How accurate are the estimates supposed to be? Default is 0.001.

H

In case type = "robust" a Huber ability estimate is performed, and H modulates how fast the downweighting takes place (for more Details read Schuster & Yuan 2011).

ctrl

More controls:

  • killdupli: Should duplicated response pattern be removed for estimation (estimation is faster)? This is especially resonable in case of a large number of examinees and a small number of items. Use this option with caution (for map and eap), because persons with different mu and sigma2 will have different ability estimates despite they responded identically. Default value is FALSE.

  • skipcheck: Default = FALSE. If TRUE data matrix and arguments are not checked - this saves time e.g. when you use this function for simulations.

x

an object of class gpcm4pl which is the result of using the PPall() function

...

just some points.

object

An object of class gpcm4pl which is the result of using the PPall() function

nrowmax

When printing the matrix of estimates - how many rows should be shown? Default = 15.

Value

The function returns a list with the estimation results and pretty much everything which has been submitted to fit the model. The estimation results can be found in OBJ$resPP. The core result is a number_of_persons x 2 matrix, which contains the ability estimate and the SE for each submitted person.

Details

For a test with both: dichotomous and polytomous items which have been scaled under 1/2/3/4-PL model or the GPCM, use this function to estimate the person ability parameters. You have to define the appropriate model for each item.

Please note, that robust estimation with (Huber ability estimate) polytomous items is still experimental!

References

Baker, Frank B., and Kim, Seock-Ho (2004). Item Response Theory - Parameter Estimation Techniques. CRC-Press.

Barton, M. A., & Lord, F. M. (1981). An Upper Asymptote for the Three-Parameter Logistic Item-Response Model.

Magis, D. (2013). A note on the item information function of the four-parameter logistic model. Applied Psychological Measurement, 37(4), 304-315.

Muraki, Eiji (1992). A Generalized Partial Credit Model: Application of an EM Algorithm. Applied Psychological Measurement, 16, 159-176.

Muraki, Eiji (1993). Information Functions of the Generalized Partial Credit Model. Applied Psychological Measurement, 17, 351-363.

Samejima, Fumiko (1993). The bias function of the maximum likelihood estimate of ability for the dichotomous response level. Psychometrika, 58, 195-209.

Samejima, Fumiko (1993). An approximation of the bias function of the maximum likelihood estimate of a latent variable for the general case where the item responses are discrete. Psychometrika, 58, 119-138.

Schuster, C., & Yuan, K. H. (2011). Robust estimation of latent ability in item response models. Journal of Educational and Behavioral Statistics, 36(6), 720-735.

Wang, S. and Wang, T. (2001). Precision of Warm's Weighted Likelihood Estimates for a Polytomous Model in Computerized Adaptive Testing. Applied Psychological Measurement, 25, 317-331.

Warm, Thomas A. (1989). Weighted Likelihood Estimation Of Ability In Item Response Theory. Psychometrika, 54, 427-450.

Yen, Y.-C., Ho, R.-G., Liao, W.-W., Chen, L.-J., & Kuo, C.-C. (2012). An empirical evaluation of the slip correction in the four parameter logistic models with computerized adaptive testing. Applied Psychological Measurement, 36, 75-87.

See also

Author

Manuel Reif

Examples

################# GPCM and 4PL mixed ######################################### # some threshold parameters THRES <- matrix(c(-2,-1.23,1.11,3.48,1 ,2,-1,-0.2,0.5,1.3,-0.8,1.5),nrow=2) # slopes sl <- c(0.5,1,1.5,1.1,1,0.98) THRESx <- THRES THRESx[2,1:3] <- NA # for the 4PL item the estimated parameters are submitted, # for the GPCM items the lower asymptote = 0 # and the upper asymptote = 1. la <- c(0.02,0.1,0,0,0,0) ua <- c(0.97,0.91,1,1,1,1) awmatrix <- matrix(c(1,0,1,0,1,1,1,0,0,1 ,2,0,0,0,0,0,0,0,0,1 ,1,2,2,1,1,1,1,0,0,1),byrow=TRUE,nrow=5) # create model2est # this function tries to help finding the appropriate # model by inspecting the THRESx. model2est <- findmodel(THRESx) # MLE respmixed_mle <- PPall(respm = awmatrix,thres = THRESx, slopes = sl,lowerA = la, upperA=ua,type = "mle", model2est=model2est)
#> Estimating: mixed 4PL, GPCM ... #> type = mle #> Estimation finished!
# WLE respmixed_wle <- PPall(respm = awmatrix,thres = THRESx, slopes = sl,lowerA = la, upperA=ua,type = "wle", model2est=model2est)
#> Estimating: mixed 4PL, GPCM ... #> type = wle #> Estimation finished!
# MAP estimation respmixed_map <- PPall(respm = awmatrix,thres = THRESx, slopes = sl,lowerA = la, upperA=ua, type = "map", model2est=model2est)
#> Warning: all mu's are set to 0!
#> Warning: all sigma2's are set to 1!
#> Estimating: mixed 4PL, GPCM ... #> type = map #> Estimation finished!
# EAP estimation respmixed_eap <- PPall(respm = awmatrix,thres = THRESx, slopes = sl,lowerA = la, upperA=ua, type = "eap", model2est=model2est)
#> Estimating: mixed 4PL, GPCM ... #> type = eap #> Estimation finished!
# Robust estimation respmixed_rob <- PPall(respm = awmatrix,thres = THRESx, slopes = sl,lowerA = la, upperA=ua, type = "robust", model2est=model2est)
#> Estimating: mixed 4PL, GPCM ... #> type = robust
#> Warning: Robust estimation for GPCM is still very experimental!
#> Estimation finished!
# summary to summarize the results summary(respmixed_mle)
#> PP Version: 0.6.3.11 #> #> Call: PPall(respm = awmatrix, thres = THRESx, slopes = sl, lowerA = la, upperA = ua, type = "mle", model2est = model2est) #> - job started @ Mon May 24 13:27:54 2021 #> #> Estimation type: mle #> #> Number of iterations: 4 #> ------------------------------------- #> estimate SE #> [1,] 0.1298 0.7195 #> [2,] -0.0653 0.7333 #> [3,] -Inf NA #> [4,] 2.1216 0.9344 #> [5,] -0.0155 0.7295
summary(respmixed_wle)
#> PP Version: 0.6.3.11 #> #> Call: PPall(respm = awmatrix, thres = THRESx, slopes = sl, lowerA = la, upperA = ua, type = "wle", model2est = model2est) #> - job started @ Mon May 24 13:27:54 2021 #> #> Estimation type: wle #> #> Number of iterations: 7 #> ------------------------------------- #> estimate SE #> [1,] 0.1684 0.7171 #> [2,] -0.0146 0.7294 #> [3,] -3.1369 1.8953 #> [4,] 1.8696 0.8552 #> [5,] 0.0359 0.7257
summary(respmixed_map)
#> PP Version: 0.6.3.11 #> #> Call: PPall(respm = awmatrix, thres = THRESx, slopes = sl, lowerA = la, upperA = ua, type = "map", model2est = model2est) #> - job started @ Mon May 24 13:27:54 2021 #> #> Estimation type: map #> #> Number of iterations: 3 #> ------------------------------------- #> estimate SE #> [1,] 0.0862 0.7223 #> [2,] -0.0429 0.7316 #> [3,] -1.4487 0.9789 #> [4,] 1.2758 0.7372 #> [5,] -0.0099 0.7291
summary(respmixed_eap)
#> PP Version: 0.6.3.11 #> #> Call: PPall(respm = awmatrix, thres = THRESx, slopes = sl, lowerA = la, upperA = ua, type = "eap", model2est = model2est) #> - job started @ Mon May 24 13:27:54 2021 #> #> Estimation type: eap #> #> Number of iterations: 0 #> ------------------------------------- #> estimate SE #> [1,] 0.0682 0.5905 #> [2,] -0.0653 0.5950 #> [3,] -1.5237 0.7046 #> [4,] 1.3112 0.6142 #> [5,] -0.0417 0.6119
summary(respmixed_rob)
#> PP Version: 0.6.3.11 #> #> Call: PPall(respm = awmatrix, thres = THRESx, slopes = sl, lowerA = la, upperA = ua, type = "robust", model2est = model2est) #> - job started @ Mon May 24 13:27:54 2021 #> #> Estimation type: robust #> #> Number of iterations: 8 #> ------------------------------------- #> estimate SE #> [1,] -0.1231 0.7382 #> [2,] -0.0060 0.7288 #> [3,] -Inf NA #> [4,] 2.3417 1.0189 #> [5,] -0.5460 0.7835