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

Description

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

Usage

1
2
3
4
5
6
DIFtree(Y, X, model = c("Rasch", "Logistic"), 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 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" or "Logistic".

type

Type of DIF to be modelled; one out of "udif", "dif" and "nudif". For "Rasch" model 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" model.

...

Further arguments passed to or from other methods

x

Object of class "DIFtree"

Details

The methods require 0/1 coded answers on binary items. Items with DIF are gradually identified by recursive partitioning.

For "Rasch" model one yields a model with linear predictors

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

where theta_p correspond to the ability and x_p correspond to the covariate vector of person p.

For "Logistic" model one yields a model with linear predictors

  • Uniform DIF, type="udif"

    eta_{pi}=S_p beta_i+tr_i(x_p),

    where S_p corresponds to the test score and x_p corresponds to the covariate vector of person p.

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

    eta_{pi}=tr_i(x_p)+tr_i(S_p,x_p),

    where S_p corresponds to the test score and x_p corresponds 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.

Value

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 T_j of selected variable of 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

Author(s)

Moritz Berger <moritz.berger@stat.uni-muenchen.de>
http://www.statistik.lmu.de/~mberger/

References

Berger, Moritz and Tutz, Gerhard (2015): Detection of Uniform and Non-Uniform Differential Item Functioning by Item Focussed Trees, Cornell University Library, arXiv:1511.07178

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 (2015): Item Focused Trees for the Identification of Items in Differential Item Functioning, Psychometrika, published online, DOI: 10.1007/s11336-015-9488-3

See Also

plot.DIFtree, predict.DIFtree, summary.DIFtree

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
data(data_sim)
 
Y <- data_sim[,1]
X <- data_sim[,-1]
 
## Not run: 
 
mod <- DIFtree(Y=Y,X=X,model="Logistic",type="udif",alpha=0.05,nperm=1000,trace=TRUE)
 
print(mod)

## End(Not run)