DIFtree function

Item focussed Trees for the Identification of Items in Differential Item Functioning

Item focussed Trees for the Identification of Items in Differential Item Functioning

A function to estimate item focussed trees for simultaneous selection of items and variables that induce DIF (Differential Item Functioning) in dichotomous or polytomous items. DIF detection can be based on the Rasch Model (dichotomous case), the Logistic Regression Approach (dichotomous case) or the Partial Credit Model (polytomous case). The basic method of item focussed recursive partitioning in Rasch Models is described in Tutz and Berger (2015).

DIFtree(Y, X, model = c("Rasch", "Logistic", "PCM"), type = c("udif", "dif", "nudif"), alpha = 0.05, nperm = 1000, trace = FALSE, penalize = FALSE, ...) ## S3 method for class 'DIFtree' print(x, ...)

Arguments

  • Y: Matrix or Data.frame of binary 0/1 or categorical response (rows correspond to persons, columns correspond to items)
  • X: Data.frame of (not scaled) covariates (rows correspond to persons, columns correspond to covariates)
  • model: Type of model to be fitted; can be "Rasch", "Logistic" or "PCM".
  • type: Type of DIF to be modelled; one out of "udif", "dif" and "nudif". For "Rasch" and "PCM" only uniform DIF can be modelled and therefore type will be ignored.
  • alpha: Global significance level for the permutation tests
  • nperm: Number of permutations used for the permutation tests
  • trace: If true, information about the estimation progress is printed
  • penalize: If true, a small ridge penalty is added to ensure existence of model parameters; only for "Rasch".
  • ...: Further arguments passed to or from other methods
  • x: Object of class "DIFtree"

Returns

Object of class "DIFtree". An object of class "DIFtree" is a list containing the following components:

  • splits: Matrix with detailed information about all executed splits during the estimation process

  • coefficients: List of estimated coefficients for items with and without DIF. Structure of coefficients depends on model and type.

  • pvalues: P-values of each permutation test during the estimation process

  • devs: Maximal value statistics TjT_j of the selected variables in each iteration during the estimation process

  • crit: Critical values of each permutation test during the estimation process

  • Y: Response matrix used in the estimation process

  • X: Model matrix used in the estimation process

  • persons: Number of persons

  • items: Number of items

Details

The methods require 0/1 coded answers on binary items ("Rasch" and "Logistic") or categorical answers on polytomous items ("PCM"). Items with DIF are gradually identified by recursive partitioning.

For "Rasch" one yields a model with linear predictors

etapi=thetaptri(xp), eta_{pi}=theta_p-tr_i(x_p),

where thetaptheta_p correspond to the ability and xpx_p correspond to the covariate vector of person p.

For "Logistic" one yields a model with linear predictors

  • Uniform DIF, type="udif"

etapi=Spbetai+tri(xp), eta_{pi}=S_p beta_i+tr_i(x_p),

where SpS_p corresponds to the test score and xpx_p corresponds to the covariate vector of person p.

  • DIF and Non-Uniform DIF, type="dif", "nudif"

etapi=tri(xp)+tri(Sp,xp), eta_{pi}=tr_i(x_p)+tr_i(S_p,x_p),

where SpS_p corresponds to the test score and xpx_p corresponds to the covariate vector of person p.

For "PCM" one yields a model with linear predictors

etapir=thetaptrir(xp), eta_{pir}=theta_p-tr_{ir}(x_p),

where thetaptheta_p correspond to the ability and xpx_p correspond to the covariate vector of person p.

Significance of each split is verified by permutation tests. The result of the permutation tests can strongly depend on the number of permutations nperm. In the case of pure terminal nodes estimates of the model do not exist. If penalize=TRUE

a small ridge penalty is added during estimation to ensure existence of all parameters.

Examples

data(data_sim_Rasch) data(data_sim_PCM) Y1 <- data_sim_Rasch[,1] X1 <- data_sim_Rasch[,-1] Y2 <- data_sim_PCM[,1] X2 <- data_sim_PCM[,-1] ## Not run: mod1 <- DIFtree(Y=Y1,X=X1,model="Logistic",type="udif",alpha=0.05,nperm=1000,trace=TRUE) print(mod1) mod2 <- DIFtree(Y=Y2,X=X2,model="PCM",alpha=0.05,nperm=100,trace=TRUE) print(mod2) ## End(Not run)

References

Berger, Moritz and Tutz, Gerhard (2016): Detection of Uniform and Non-Uniform Differential Item Functioning by Item Focussed Trees, Journal of Educational and Behavioral Statistics 41(6), 559-592.

Bollmann, Stella, Berger, Moritz & Tutz, Gerhard (2018): Item-Focussed Trees for the Detection of Differential Item Functioning in Partial Credit Models, Educational and Psychological Measurement 78(5), 781-804.

Swaminathan, Hariharan and Rogers, H Jane (1990): Detecting differential item functioning using logistic regression procedures, Journal of Educational Measurements 27(4), 361-370.

Tutz, Gerhard and Berger, Moritz (2016): Item focussed Trees for the Identification of Items in Differential Item Functioning, Psychometrika 81(3), 727-750.

See Also

plot.DIFtree, predict.DIFtree, summary.DIFtree

Author(s)

Moritz Berger moritz.berger@imbie.uni-bonn.de

http://www.imbie.uni-bonn.de/personen/dr-moritz-berger/

  • Maintainer: Moritz Berger
  • License: GPL-2
  • Last published: 2020-06-05

Useful links