personfit.appropriateness function

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 θ\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 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 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) ## Not run: ############################################################################# # 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) ## End(Not run)