Learn R Programming

sirt (version 0.31-20)

dif.logistic.regression: Differential Item Functioning using Logistic Regression Analysis

Description

This function estimates differential item functioning using a logistic regression analysis (Zumbo, 1999).

Usage

dif.logistic.regression(dat, group, score)

Arguments

dat
Data frame with dichotomous item responses
group
Group identifier
score
Ability estimate, e.g. the WLE.

Value

  • A data frame with following variables:
  • itemItem name
  • NSample size per item
  • RValue of group variable for reference group
  • FValue of group variable for focal group
  • nRSample size per item in reference group
  • nFSample size per item in focal group
  • pItem $p$ value
  • pRItem $p$ value in reference group
  • pFItem $p$ value in focal group
  • pdiff.adjAdjusted $p$ value difference
  • uniformDIFUniform DIF estimate
  • se.uniformDIFStandard error of uniform DIF
  • t.uniformDIFThe $t$ value for uniform DIF
  • sig.uniformDIFSignificance label for uniform DIF
  • nonuniformDIFNonuniform DIF estimate
  • se.nonuniformDIFStandard error of nonuniform DIF
  • t.nonuniformDIFThe $t$ value for nonuniform DIF
  • sig.nonuniformDIFSignificance label for nonuniform DIF

References

Zumbo, B. D. (1999). A Handbook on the Theory and Methods of Differential Item Functioning (DIF): Logistic Regression Modeling as a Unitary Framework for Binary and Likert-type (Ordinal) Item Scores. Ottawa ON: Directorate of Human Resources Research and Evaluation, Department of National Defense.

See Also

For assessing DIF variance see dif.variance and dif.strata.variance See the difR package for a large collection of DIF detection methods.

Examples

Run this code
#####################################
# EXAMPLE 1: Mathematics data

data( data.math )
dat <- data.math$data
items <- grep( "M" , colnames(dat))

# estimate item parameters and WLEs
mod <- rasch.mml2( dat[,items] )
wle <- wle.rasch( dat[,items] , b=mod$item$b )$theta

# assess DIF by logistic regression
mod1 <- dif.logistic.regression( dat=dat[,items] ,
         score=wle , group=dat$female )

# calculate DIF variance
dif1 <- dif.variance( dif=mod1$uniformDIF , se.dif = mod1$se.uniformDIF )
dif1$unweighted.DIFSD
## > dif1$unweighted.DIFSD
## [1] 0.1963958

# calculate stratified DIF variance
# stratification based on domains
dif2 <- dif.strata.variance( dif=mod1$uniformDIF , se.dif = mod1$se.uniformDIF ,
        itemcluster = data.math$item$domain )
## $unweighted.DIFSD
## [1] 0.1455916

Run the code above in your browser using DataLab