Anchor methods for the detection of uniform DIF in the Rasch model

The anchortest function provides a Wald test (see, e.g., Glas, Verhelst, 1995) for the detection of uniform differential item functioning (DIF) in the Rasch model between two pre-specified groups. A variety of anchor methods is available to build a common scale necessary for the comparison of the item parameters in the Rasch model.

anchortest(object, …)
# S3 method for default
anchortest(object, object2,
  class = c("constant", "forward", "all-other", "fixed"), select = NULL,
  test = TRUE, adjust = "none", length = NULL, range = c(0.1, 0.8), …)
# S3 method for formula
anchortest(formula, data = NULL, subset = NULL,
  na.action = NULL, weights = NULL, model = raschmodel, …)
object, object2

Fitted model objects of class ``raschmodel'' estimated via conditional maximum likelihood using raschmodel.

further arguments passed over to an internal call of anchor.default in the formula method. In the default method, these additional arguments are currently not being used.


character. Available anchor classes are the constant anchor class implying a constant anchor length defined by length, the iterative forward anchor class that iteratively includes items in the anchor and the all-other anchor class, for an overview see Kopf et al. (2015a). Additionally, the class can be fixed, then select needs to be the numeric index of the fixed selected anchor items.


character or numeric. Several anchor selection strategies are available: "MTT", "MPT", "MT", "MP", "NST", "AO", "AOP". For details see anchor. Alternatively, for class = "fixed", select needs to be the numeric index of the fixed selected anchor items. Defaults are set such that class = "constant" is combined with selection = "MPT" while class = "forward" is combined with selection = "MTT". And if select is numeric, then class = "fixed" is used.


logical. Should the Wald test be returned for the intended anchor method as final DIF test?


character. Should the final DIF test be adjusted for multiple testing? For the type of adjustment, see summary.glht and p.adjust.


integer. It pre-defines a maximum anchor length. Per default, the forward anchor grows up to the proportion of currently presumed DIF-free items specified in range and the constant anchor class selects four anchor items, unless an explicit limiting number is defined in length by the user.


numeric vector of length 2. The first element is the percentage of first anchor candidates to be excluded for consideration when the forward anchor class is used and the second element determines a percentage of currently presumed DIF-free items up to which the anchor from the forward anchor class is allowed to grow.


formula of type y ~ x where y specifies a matrix of dichotomous item responses and x the grouping variable, e.g., gender, for which DIF should be tested for.


a data frame containing the variables of the specified formula.


logical expression indicating elements or rows to keep: missing values are taken as false.


a function which indicates what should happen when the data contain missing values (NAs).


an optional vector of weights (interpreted as case weights).


an IRT model fitting function with a suitable itempar method, by default raschmodel.


To conduct the Wald test (see, e.g., Glas, Verhelst, 1995) for uniform DIF in the Rasch model, the user needs to specify an anchor method. The anchor methods can be divided in an anchor class that determines characteristics of the anchor method and an anchor selection that determines the ranking order of candidate anchor items.

Explicit anchor selection strategies are used in the constant anchor class and in the iterative forward anchor class, for a detailed description see anchor. Since \(k-1\) parameters are free in the estimation, only \(k-1\) estimated standard errors result. Thus, the first anchor item obtains no DIF test result and we report \(k-1\) test results. This decision is applied only to those methods that rely on an explicit anchor selection strategy.

In the constant anchor class, the anchor length is pre-defined by the user within the argument length. The default is four anchor items. The iterative forward class starts with a single anchor item and includes items in the anchor as long as the anchor length is shorter than a certain percentage of the number of items that do not display statistically significant DIF. The default proportion is set to 0.8 in the argument range. Alternatively, the user is allowed to set a maximum number of anchor items using the argument length. Both anchor classes require an explicit anchor selection strategy as opposed to the all-other anchor class.

The all-other anchor class is here not considered as explicit anchor selection and, thus, only included in the anchortest function. For the all-other anchor class, the strategy is set to "none", since all items except for the item currently studied for DIF are used as anchor. Thus, no explicit anchor selection strategy is required and we report \(k\) test results. Note that the all-other anchor class requires strong prior knowledge that DIF is balanced.

See Kopf et al. (2015ab) for a detailed introduction. For convenience a trivial "fixed" anchor class is provided where the selected anchor is given directly (e.g., as chosen by a practitioner or by some other anchor selection method).


An object of class anchor, i.e. a list including


the anchor items for DIF analysis.


a ranking order of candidate anchor items.


the criterion values obtained by the respective anchor selection.


the anchored item parameters using the anchor items.


the anchored covariance matrices using the anchor items.


the final Wald test for uniform DIF detection if intended.


Glas CAW, Verhelst ND (1995). “Testing the Rasch Model.” In Fischer GH, Molenaar IW (eds.), Rasch Models: Foundations, Recent Developments, and Applications, chapter 5. Springer-Verlag, New York.

Kopf J, Zeileis A, Strobl C (2015a). A Framework for Anchor Methods and an Iterative Forward Approach for DIF Detection. Applied Psychological Measurement, 39(2), 83--103. 10.1177/0146621614544195

Kopf J, Zeileis A, Strobl C (2015b). Anchor Selection Strategies for DIF Analysis: Review, Assessment, and New Approaches. Educational and Psychological Measurement, 75(1), 22--56. 10.1177/0013164414529792

Wang WC (2004). Effects of Anchor Item Methods on the Detection of Differential Item Functioning within the Family of Rasch Models. Journal of Experimental Education, 72(3), 221--261.

Woods C (2009). Empirical Selection of Anchors for Tests of Differential Item Functioning. Applied Psychological Measurement, 33(1), 42--57.

See Also


  • anchortest
  • anchortest.default
  • anchortest.formula
  • print.anchortest
  • print.summary.anchortest
  • summary.anchortest
if(requireNamespace("multcomp")) {

o <- options(digits = 4)

## Verbal aggression data
data("VerbalAggression", package = "psychotools")

## Rasch model for the self-to-blame situations; gender DIF test
raschmodels <- with(VerbalAggression, lapply(levels(gender), function(i) 
  raschmodel(resp2[gender == i, 1:12])))

## four anchor items from constant anchor class using MPT-selection
const1 <- anchortest(object = raschmodels[[1]], object2 = raschmodels[[2]],
  class = "constant", select = "MPT", length = 4)

## iterative forward anchor class using MTT-selection
forw1 <- anchortest(object = raschmodels[[1]], object2 = raschmodels[[2]], 
  class = "forward", select = "MTT", test = TRUE,
  adjust = "none", range = c(0.05,1))

## the same using the formula interface
forw2 <- anchortest(resp2[, 1:12] ~ gender, data = VerbalAggression,
  class = "forward", select = "MTT", test = TRUE,
  adjust = "none", range = c(0.05, 1))

## compare both results
all.equal(forw1, forw2, check.attributes = FALSE)

## DIF test with fixed given anchor (arbitrarily selected to be items 1 and 2)
anchortest(object = raschmodels[[1]], object2 = raschmodels[[2]], select = 1:2)

options(digits = o$digits)
# }
Documentation reproduced from package psychotools, version 0.5-1, License: GPL-2 | GPL-3

Community examples

Looks like there are no examples yet.