Appropriateness Statistic for Person Fit Assessment
Appropriateness Statistic for Person Fit Assessment
This function computes the person fit appropriateness statistics (Levine & Drasgow, 1988) as proposed for cognitive diagnostic models by Liu, Douglas and Henson (2009). The appropriateness statistic assesses spuriously high scorers (attr.type=1) and spuriously low scorers (attr.type=0).
personfit.appropriateness(data, probs, skillclassprobs, h=0.001, eps=1e-10, maxiter=30, conv=1e-05, max.increment=0.1, progress=TRUE)## S3 method for class 'personfit.appropriateness'summary(object, digits=3,...)## S3 method for class 'personfit.appropriateness'plot(x, cexpch=.65,...)
Arguments
data: Data frame of dichotomous item responses
probs: Probabilities evaluated at skill space (abilities θ)
skillclassprobs: Probabilities of skill classes
h: Numerical differentiation parameter
eps: Constant which is added to probabilities avoiding zero probability
maxiter: Maximum number of iterations
conv: Convergence criterion
max.increment: Maximum increment in iteration
progress: Optional logical indicating whether iteration progress should be displayed.
object: Object of class personfit.appropriateness
digits: Number of digits for rounding
x: Object of class personfit.appropriateness
cexpch: Point size in plot
...: Further arguments to be passed
Returns
List with following entries - summary: Summaries of person fit statistic
personfit.appr.type1: Statistic for spuriously high scorers (appr.type=1) evaluated for every person.
personfit.appr.type0: Statistic for spuriously low scorers (appr.type=0) evaluated for every person.
References
Levine, M. V., & Drasgow, F. (1988). Optimal appropriateness measurement. Psychometrika, 53, 161-176.
Liu, Y., Douglas, J. A., & Henson, R. A. (2009). Testing person fit in cognitive diagnosis. Applied Psychological Measurement, 33(8), 579-598.
Examples
############################################################################## EXAMPLE 1: DINA model data.ecpe#############################################################################data(data.ecpe, package="CDM")# fit DINA modelmod1 <- CDM::din( CDM::data.ecpe$data[,-1], q.matrix=CDM::data.ecpe$q.matrix )summary(mod1)# person fit appropriateness statisticdata <- mod1$data
probs <- mod1$pjk
skillclassprobs <- mod1$attribute.patt[,1]res <- CDM::personfit.appropriateness( data, probs, skillclassprobs, maxiter=8)# only few iterationssummary(res)plot(res)## Not run:############################################################################## EXAMPLE 2: Person fit 2PL model#############################################################################data(data.read, package="sirt")dat <- data.read
I <- ncol(dat)# fit 2PL modelmod1 <- sirt::rasch.mml2( dat, est.a=1:I)# person fit statisticdata <- mod1$dat
probs0 <- t(mod1$pjk)probs <- array(0, dim=c( I,2, dim(probs0)[2]))probs[,2,]<- probs0
probs[,1,]<-1- probs0
skillclassprobs <- mod1$trait.distr$pi.k
res <- CDM::personfit.appropriateness( data, probs, skillclassprobs )summary(res)plot(res)## End(Not run)