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, ...)
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 |
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: |
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 |
ctrl | More controls:
|
x | an object of class |
... | just some points. |
object | An object of class |
nrowmax | When printing the matrix of estimates - how many rows should be shown? Default = 15. |
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.
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!
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.
Manuel Reif
################# 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!#> 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#> 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#> 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#> 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#> 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