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
).
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 personfit.appropriateness summary(object, digits=3, ...) # S3 method for personfit.appropriateness plot(x, cexpch=.65, ...)
data | Data frame of dichotomous item responses |
---|---|
probs | Probabilities evaluated at skill space (abilities \(\theta\)) |
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 |
digits | Number of digits for rounding |
x | Object of class |
cexpch | 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) }