PP_gpcm: Estimate Person Parameters for the GPCM

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/PP_gpcm.R

Description

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.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
PP_gpcm(
  respm,
  thres,
  slopes,
  theta_start = NULL,
  mu = NULL,
  sigma2 = NULL,
  type = "wle",
  maxsteps = 100,
  exac = 0.001,
  H = 1,
  ctrl = list()
)

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.

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 "wle" which is a good choice in many cases.

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.

Details

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 α_i, \hatβ_{iv}, θ_j) = \frac{exp(∑_{v=0}^{(k-1)}\hat α_{i}(θ_j - \hat β_{iv}))}{\,∑_{c=0}^{m_i - 1}exp(∑_{v=0}^{c}\hat α_{i}(θ_j - \hat β_{iv})))}

In our case θ 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 α_{i} = 1, \forall i.

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.

Author(s)

Manuel Reif

References

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.

See Also

PPass, PPall, PP_4pl, JKpp, PV

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
################# 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")
# WLE
resgpcmwle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "wle")
# MAP estimation
resgpcmmap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "map")
# EAP estimation
resgpcmeap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "eap")
# robust estimation
resgpcmrob <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = sl,type = "robust")

## PCM model ##### 

# MLE
respcmlmle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)),type = "mle")
# WLE
respcmwle <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)),type = "wle")
# MAP estimation
respcmmap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)),
                     type = "map")
# EAP estimation
respcmeap <- PP_gpcm(respm = awmatrix,thres = THRES, slopes = rep(1,ncol(THRES)),
                     type = "eap")

#### 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")
# WLE estimation
respcmwle1 <- PP_gpcm(respm = awmatrix1,thres = THRES1, slopes = sl,type = "wle")
# MAP estimation
respcmmap1 <- PP_gpcm(respm = awmatrix1,thres = THRES1, slopes = sl,type = "map")
# EAP estimation
respcmeap1 <- PP_gpcm(respm = awmatrix1, thres = THRES1, slopes = sl,type = "eap")

Example output

PP package calling ...
Follow this project on github: https://github.com/manuelreif/PP.git
Estimating: GPCM ... 
type = mle 
Estimation finished!
Estimating: GPCM ... 
type = wle 
Estimation finished!
Estimating: GPCM ... 
type = map 
Estimation finished!
Warning messages:
1: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = sl, type = "map") :
  all mu's are set to 0! 

2: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = sl, type = "map") :
  all sigma2's are set to 1! 

Estimating: GPCM ... 
type = eap 
Estimation finished!
Warning messages:
1: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = sl, type = "eap") :
  all mu's are set to 0! 

2: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = sl, type = "eap") :
  all sigma2's are set to 1! 

Estimating: GPCM ... 
type = robust 
Estimation finished!
Warning message:
In PP_gpcm(respm = awmatrix, thres = THRES, slopes = sl, type = "robust") :
  Robust estimation for GPCM is still very experimental! 

Estimating: GPCM ... 
type = mle 
Estimation finished!
Estimating: GPCM ... 
type = wle 
Estimation finished!
Estimating: GPCM ... 
type = map 
Estimation finished!
Warning messages:
1: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = rep(1, ncol(THRES)),  :
  all mu's are set to 0! 

2: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = rep(1, ncol(THRES)),  :
  all sigma2's are set to 1! 

Estimating: GPCM ... 
type = eap 
Estimation finished!
Warning messages:
1: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = rep(1, ncol(THRES)),  :
  all mu's are set to 0! 

2: In PP_gpcm(respm = awmatrix, thres = THRES, slopes = rep(1, ncol(THRES)),  :
  all sigma2's are set to 1! 

Estimating: GPCM ... 
type = mle 
Estimation finished!
Estimating: GPCM ... 
type = wle 
Estimation finished!
Estimating: GPCM ... 
type = map 
Estimation finished!
Warning messages:
1: In PP_gpcm(respm = awmatrix1, thres = THRES1, slopes = sl, type = "map") :
  all mu's are set to 0! 

2: In PP_gpcm(respm = awmatrix1, thres = THRES1, slopes = sl, type = "map") :
  all sigma2's are set to 1! 

Estimating: GPCM ... 
type = eap 
Estimation finished!
Warning messages:
1: In PP_gpcm(respm = awmatrix1, thres = THRES1, slopes = sl, type = "eap") :
  all mu's are set to 0! 

2: In PP_gpcm(respm = awmatrix1, thres = THRES1, slopes = sl, type = "eap") :
  all sigma2's are set to 1! 

PP documentation built on May 27, 2021, 5:07 p.m.