difLord {difR} | R Documentation |
Performs DIF detection using Lord's chi-square method.
difLord(Data, group, focal.name, model, c=NULL, engine="ltm", irtParam=NULL, same.scale=TRUE, alpha=0.05, purify=FALSE, nrIter=10) ## S3 method for class 'Lord': print(x, ...) ## S3 method for class 'Lord': plot(x, pch=8, number=TRUE, col="red", ...)
Data |
numeric: either the data matrix only, or the data matrix plus the vector of group membership. See Details. |
group |
numeric or character: either the vector of group membership or the column indicator (within data ) of group membership. See Details. |
focal.name |
numeric or character indicating the level of group which corresponds to the focal group. |
model |
character: the IRT model to be fitted (either "1PL" , "2PL" or "3PL" ). |
c |
optional numeric value or vector giving the values of the constrained pseudo-guessing parameters. See Details. |
engine |
character: the engine for estimating the 1PL model, either "ltm" (default) or "lme4" . |
irtParam |
matrix with 2J rows (where J is the number of items) and at most 9 columns containing item parameters estimates. See Details. |
same.scale |
logical: are the item parameters of the irtParam matrix on the same scale? (default is "TRUE"). See Details. |
alpha |
numeric: significance level (default is 0.05). |
purify |
logical: should the method be used iteratively to purify the set of anchor items? (default is FALSE). |
nrIter |
numeric: the maximal number of iterations in the item purification process. Default is 10. |
x |
the result from a Lord class object. |
pch, col |
type of usual pch and col graphical options. |
number |
logical: should the item number identification be printed (default is TRUE ). |
... |
other generic parameters for the plot or the print functions. |
Lord's chi-square method (Lord, 1980) allows for detecting uniform or non-uniform differential item functioning
by setting an appropriate item response model. The input can be of two kinds: either by displaying the full data,
the group membership and the model, or by giving the item parameter estimates (through the option irtParam
).
Both can be supplied, but in this case only the parameters in irtParam
are used for computing Lord's
chi-square statistic.
The Data
is a matrix whose rows correspond to the subjects and columns to the items. Missing values are not allowed.
In addition, Data
can hold the vector of group membership. If so, group
indicates the column of Data
which
corresponds to the group membership, either by specifying its name or by giving the column number. Otherwise, group
must
be a vector of same length as nrow(Data)
.
The vector of group membership must hold only two different values, either as numeric or character. The focal group is defined by
the value of the argument focal.name
.
If the model is not the 1PL model, or if engine
is equal to "ltm"
, the selected IRT model is fitted using marginal maximum likelihood
by means of the functions from the ltm
package (Rizopoulos, 2006). Otherwise, the 1PL model is fitted as a generalized
linear mixed model, by means of the glmer
function of the lme4
package (Bates and Maechler, 2009).
The 3PL model can be fitted either unconstrained (by setting c
to NULL
) or by fixing the pseudo-guessing values. In the latter
case, the argument c
holds either a numeric vector of same length of the number of items, with one value per item pseudo-guessing parameter,
or a single value which is duplicated for all the items. If c
is different from NULL
then the 3PL model is always fitted (whatever the value of model
).
The irtParam
matrix has a number of rows equal to twice the number of items in the data set. The first J rows refer to
the item parameter estimates in the reference group, while the last J ones correspond to the same items in the focal group.
The number of columns depends on the selected IRT model: 2 for the 1PL model, 5 for the 2PL model, 6 for the constrained 3PL model
and 9 for the unconstrained 3PL model. The columns of irtParam
have to follow the same structure as the output of
itemParEst
command (the latter can actually be used to create the irtParam
matrix).
In addition to the matrix of parameter estimates, one has to specify whether items in the focal group were rescaled to those of the
reference group. If not, rescaling is performed by equal means anchoring (Cook and Eignor, 1991). Argument same.scale
is used for
this choice (default option is TRUE
and assumes therefore that the parameters are already placed on the same scale).
The threshold (or cut-score) for classifying items as DIF is computed as the quantile of the chi-square distribution with lower-tail
probability of one minus alpha
and p degrees of freedom (p=1 for the 1PL model, p=2 for the 2PL model or the 3PL model
with constrained pseudo-guessing parameters, and p=3 for the unconstrained 3PL model).
Item purification can be performed by setting purify
to TRUE
. In this case, the purification occurs in the equal means anchoring process. Items
detected as DIF are iteratively removed from the set of items used for equal means anchoring, and the procedure is repeated until either the same items
are identified twice as functioning differently, or when nrIter
iterations have been performed. In the latter case a warning message is printed.
See Candell and Drasgow (1988) for further details.
A list of class "Lord" with the following arguments:
LordChi |
the values of the Lord's chi-square statistics. |
alpha |
the value of alpha argument. |
thr |
the threshold (cut-score) for DIF detection. |
DIFitems |
either the column indicators of the items which were detected as DIF items, or "No DIF item detected". |
purification |
the value of purify option. |
nrPur |
the number of iterations in the item purification process. Returned only if purify is TRUE . |
difPur |
a binary matrix with one row per iteration in the item purification process and one column per item. Zeros and ones in the i-th
row refer to items which were classified respectively as non-DIF and DIF items at the (i-1)-th step. The first row corresponds to the initial
classification of the items. Returned only if purify is TRUE . |
convergence |
logical indicating whether the iterative item purification process stopped before the maximal number nrIter of allowed iterations.
Returned only if purify is TRUE . |
model |
the value of model argument. |
c |
The value of the c argument. |
engine |
The value of the engine argument. |
itemParInit |
the matrix of initial parameter estimates,with the same format as irtParam either provided by the user (through irtParam ) or estimated from the data
(and displayed without rescaling). |
itemParFinal |
the matrix of final parameter estimates, with the same format as irtParam , obtained after item purification. Returned
only if purify is TRUE . |
estPar |
a logical value indicating whether the item parameters were estimated (TRUE ) or provided by the user (FALSE ). |
names |
the names of the items. |
Sebastien Beland
Centre sur les Applications des Modeles de Reponses aux Items (CAMRI)
Universite du Quebec a Montreal
sebastien.beland.1@hotmail.com
David Magis
Research Group of Quantitative Psychology and Individual Differences
Katholieke Universiteit Leuven
David.Magis@psy.kuleuven.be, http://ppw.kuleuven.be/okp/home/
Gilles Raiche
Centre sur les Applications des Modeles de Reponses aux Items (CAMRI)
Universite du Quebec a Montreal
raiche.gilles@uqam.ca, http://www.er.uqam.ca/nobel/r17165/
Bates, D. and Maechler, M. (2009). lme4: Linear mixed-effects models using S4 classes. R package version 0.999375-31. http://CRAN.R-project.org/package=lme4
Candell, G.L. and Drasgow, F. (1988). An iterative procedure for linking metrics and assessing item bias in item response theory. Applied Psychological Measurement, 12, 253-260.
Cook, L. L. and Eignor, D. R. (1991). An NCME instructional module on IRT equating methods. Educational Measurement: Issues and Practice, 10, 37-45.
Lord, F. (1980). Applications of item response theory to practical testing problems. Hillsdale, NJ: Lawrence Erlbaum Associates.
Rizopoulos, D. (2006). ltm: An R package for latent variable modelling and item response theory analyses. Journal of Statistical Software, 17, 1-25. URL: http://www.jstatsoft.org/v17/i05/
# Loading of the verbal data data(verbal) attach(verbal) # Excluding the "Anger" variable verbal<-verbal[colnames(verbal)!="Anger"] # Three equivalent settings of the data matrix and the group membership # (1PL model, "ltm" engine) (remove #) difLord(verbal, group=25, focal.name=1, model="1PL") # difLord(verbal, group="Gender", focal.name=1, model="1PL") # difLord(verbal[,1:24], group=verbal[,25], focal.name=1, model="1PL") # 1PL model, "lme4" engine (remove #) # difLord(verbal, group=25, focal.name=1, model="1PL", engine="lme4") # 2PL model (remove #) # difLord(verbal, group="Gender", focal.name=1, model="2PL") # 3PL model with all pseudo-guessing parameters constrained to 0.05 # (remove #) # difLord(verbal, group="Gender", focal.name=1, model="3PL", c=0.05) # Same models, with item purification (remove #) difLord(verbal, group=25, focal.name=1, model="1PL", purify=TRUE) # difLord(verbal, group="Gender", focal.name=1, model="2PL", purify=TRUE) # difLord(verbal, group="Gender", focal.name=1, model="3PL", c=0.05, # purify=TRUE) # Splitting the data into reference and focal groups nF<-sum(Gender) nR<-nrow(verbal)-nF data.ref<-verbal[,1:24][order(Gender),][1:nR,] data.focal<-verbal[,1:24][order(Gender),][(nR+1):(nR+nF),] ## Pre-estimation of the item parameters (1PL model, "ltm" engine) item.1PL<-rbind(itemParEst(data.ref, model="1PL"), itemParEst(data.focal, model="1PL")) difLord(irtParam=item.1PL, same.scale=FALSE) ## Pre-estimation of the item parameters (1PL model, "lme4" engine) # (remove #) # item.1PL<-rbind(itemParEst(data.ref, model="1PL", engine="lme4"), # itemParEst(data.focal, model="1PL", engine="lme4")) # difLord(irtParam=item.1PL, same.scale=FALSE) ## Pre-estimation of the item parameters (2PL model) (remove #) # item.2PL<-rbind(itemParEst(data.ref, model="2PL"), # itemParEst(data.focal, model="2PL")) # difLord(irtParam=item.2PL, same.scale=FALSE) ## Pre-estimation of the item parameters (constrained 3PL model) # (remove #) # item.3PL<-rbind(itemParEst(data.ref, model="3PL", c=0.05), # itemParEst(data.focal, model="3PL", c=0.05)) # difLord(irtParam=item.3PL, same.scale=FALSE)