Compute person parameters for the GPCM and choose between five common estimation techniques: ML, WL, MAP, EAP and a robust estimation. All item parameters are treated as fixed.
PP_gpcm( respm, thres, slopes, theta_start = NULL, mu = NULL, sigma2 = NULL, type = "wle", maxsteps = 100, exac = 0.001, H = 1, ctrl = list() )
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. |
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 or EAP 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 |
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
|
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.
Please note, that robust
estimation with (Huber ability estimate) polytomous items is still experimental!
The probability choosing the k-th category is as follows:
$$P(x_{ij} = k | \hat \alpha_i, \hat\beta_{iv}, \theta_j) = \frac{exp(\sum_{v=0}^{(k-1)}\hat \alpha_{i}(\theta_j - \hat \beta_{iv}))}{\,\sum_{c=0}^{m_i - 1}exp(\sum_{v=0}^{c}\hat \alpha_{i}(\theta_j - \hat \beta_{iv})))}$$
In our case \(\theta\) is to be estimated. The item parameters are assumed as fixed (usually these are estimates of a former scaling procedure).
The model simplifies to the Partial Credit Model by setting \(\alpha_{i} = 1, \forall i\).
Baker, Frank B., and Kim, Seock-Ho (2004). Item Response Theory - Parameter Estimation Techniques. CRC-Press.
Masters, G. N. (1982). A Rasch model for partial credit scoring. Psychometrika, 47(2), 149-174.
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.
Manuel Reif
################# GPCM ########################################################################### # 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) awmatrix <- matrix(c(1,0,2,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) ## GPCM model ##### # MLE resgpcmlmle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "mle")#> Estimating: GPCM ... #> type = mle #> Estimation finished!# WLE resgpcmwle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "wle")#> Estimating: GPCM ... #> type = wle #> Estimation finished!# MAP estimation resgpcmmap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "map")#> Warning: all mu's are set to 0!#> Warning: all sigma2's are set to 1!#> Estimating: GPCM ... #> type = map #> Estimation finished!# EAP estimation resgpcmeap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "eap")#> Warning: all mu's are set to 0!#> Warning: all sigma2's are set to 1!#> Estimating: GPCM ... #> type = eap #> Estimation finished!# robust estimation resgpcmrob <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "robust")#> Estimating: GPCM ... #> type = robust#> Warning: Robust estimation for GPCM is still very experimental!#> Estimation finished!## PCM model ##### # MLE respcmlmle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)),type = "mle")#> Estimating: GPCM ... #> type = mle #> Estimation finished!# WLE respcmwle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)),type = "wle")#> Estimating: GPCM ... #> type = wle #> Estimation finished!# MAP estimation respcmmap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)), type = "map")#> Warning: all mu's are set to 0!#> Warning: all sigma2's are set to 1!#> Estimating: GPCM ... #> type = map #> Estimation finished!# EAP estimation respcmeap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)), type = "eap")#> Warning: all mu's are set to 0!#> Warning: all sigma2's are set to 1!#> Estimating: GPCM ... #> type = eap #> Estimation finished!#### with different number of categories ## 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) THRES1 <- rbind(THRES,c(NA,NA,NA,NA,1.7,1)) awmatrix1 <- matrix(c(1,0,2,0,1,3,1,0,0,1,3,1,0,0 ,0,0,0,0,0,1,1,2,2,1,1,1,1,0,0,1), byrow=TRUE, nrow=5) # MLE estimation respcmlmle1 <- PP_gpcm(respm = awmatrix1,thres = THRES1, slopes = sl,type = "mle")#> Estimating: GPCM ... #> type = mle #> Estimation finished!# WLE estimation respcmwle1 <- PP_gpcm(respm = awmatrix1,thres = THRES1, slopes = sl,type = "wle")#> Estimating: GPCM ... #> type = wle #> Estimation finished!# MAP estimation respcmmap1 <- PP_gpcm(respm = awmatrix1,thres = THRES1, slopes = sl,type = "map")#> Warning: all mu's are set to 0!#> Warning: all sigma2's are set to 1!#> Estimating: GPCM ... #> type = map #> Estimation finished!# EAP estimation respcmeap1 <- PP_gpcm(respm = awmatrix1, thres = THRES1, slopes = sl,type = "eap")#> Warning: all mu's are set to 0!#> Warning: all sigma2's are set to 1!#> Estimating: GPCM ... #> type = eap #> Estimation finished!