personfit.appropriateness.Rd
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
).
Data frame of dichotomous item responses
Probabilities evaluated at skill space (abilities \(\theta\))
Probabilities of skill classes
Numerical differentiation parameter
Constant which is added to probabilities avoiding zero probability
Maximum number of iterations
Convergence criterion
Maximum increment in iteration
Optional logical indicating whether iteration progress should be displayed.
Object of class personfit.appropriateness
Number of digits for rounding
Object of class personfit.appropriateness
Point size in plot
Further arguments to be passed
List with following entries
Summaries of person fit statistic
Statistic for spuriously high scorers
(appr.type=1
) evaluated for every person.
Statistic for spuriously low scorers
(appr.type=0
) evaluated for every person.
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.
#############################################################################
# EXAMPLE 1: DINA model data.ecpe
#############################################################################
data(data.ecpe, package="CDM")
# fit DINA model
mod1 <- CDM::din( CDM::data.ecpe$data[,-1], q.matrix=CDM::data.ecpe$q.matrix )
summary(mod1)
# person fit appropriateness statistic
data <- mod1$data
probs <- mod1$pjk
skillclassprobs <- mod1$attribute.patt[,1]
res <- CDM::personfit.appropriateness( data, probs, skillclassprobs, maxiter=8)
# only few iterations
summary(res)
plot(res)
if (FALSE) {
#############################################################################
# EXAMPLE 2: Person fit 2PL model
#############################################################################
data(data.read, package="sirt")
dat <- data.read
I <- ncol(dat)
# fit 2PL model
mod1 <- sirt::rasch.mml2( dat, est.a=1:I)
# person fit statistic
data <- 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)
}