difRaju {difR} | R Documentation |
Raju's area DIF method
Description
Performs DIF detection using Raju's area method.
Usage
difRaju(Data, group, focal.name, model, c = NULL, engine = "ltm", discr = 1,
irtParam = NULL, same.scale = TRUE, anchor = NULL, alpha = 0.05,
signed = FALSE, purify = FALSE, nrIter = 10, p.adjust.method = NULL,
save.output = FALSE, output = c("out","default"))
## S3 method for class 'Raj'
print(x, ...)
## S3 method for class 'Raj'
plot(x, pch = 8, number = TRUE, col = "red", save.plot = FALSE,
save.options = c("plot","default","pdf"), ...)
Arguments
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 |
focal.name |
numeric or character indicating the level of |
model |
character: the IRT model to be fitted (either |
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 |
discr |
either |
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 |
anchor |
either |
alpha |
numeric: significance level (default is 0.05). |
signed |
logical: should the Raju's statistics be computed using the signed ( |
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). |
p.adjust.method |
either |
save.output |
logical: should the output be saved into a text file? (Default is |
output |
character: a vector of two components. The first component is the name of the output file, the second component is either the file path or |
x |
the result from a |
pch , col |
type of usual |
number |
logical: should the item number identification be printed (default is |
save.plot |
logical: should the plot be saved into a separate file? (default is |
save.options |
character: a vector of three components. The first component is the name of the output file, the second component is either the file path or |
... |
other generic parameters for the |
Details
Raju's area method (Raju, 1988, 1990) 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 (with the option irtParam
).
Both can be supplied, but in this case only the parameters in irtParam
are used for computing Raju's statistic.
By default, the Raju's Z statistics are obtained by using the unsigned areas between the ICCs. However, these
statistics can also be computed using the signed areas, by setting the argument signed
to TRUE
(default
value is FALSE
). See RajuZ
for further details.
The Data
is a matrix whose rows correspond to the subjects and columns to the items. 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)
.
Missing values are allowed for item responses (not for group membership) but must be coded as NA
values. They are discarded for item parameter estimation.
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).
With the "1PL"
model and the "ltm"
engine, the common discrimination parameter is set equal to 1 by default. It is possible to fix another value
through the argumentdiscr
. Alternatively, this common discrimination parameter can be estimated (though not returned) by fixing discr
to
NULL
.
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 standard normal distribution with lower-tail
probability of 1-alpha
/2.
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.
Adjustment for multiple comparisons is possible with the argument p.adjust.method
. The latter must be an acronym of one of the available adjustment methods of the p.adjust
function. According to Kim and Oshima (2013), Holm and Benjamini-Hochberg adjustments (set respectively by "Holm"
and "BH"
) perform best for DIF purposes. See p.adjust
function for further details. Note that item purification is performed on original statistics and p-values; in case of adjustment for multiple comparisons this is performed after item purification.
A pre-specified set of anchor items can be provided through the anchor
argument. It must be a vector of either item names (which must match exactly the column names of Data
argument) or integer values (specifying the column numbers for item identification). In case anchor items are provided, they are used to rescale the item parameters on a common metric. None of the anchor items are tested for DIF: the output separates anchor items and tested items and DIF results are returned only for the latter. Note also that item purification is not activated when anchor items are provided (even if purify
is set to TRUE
). By default it is NULL
so that no anchor item is specified. If item parameters are provided thorugh the irtParam
argument and if they are on the same scale (i.e. if same.scale
is TRUE
), then anchor items are not used (even if they are specified).
Under the 1PL model, the displayed output also proposes an effect size measure, which is -2.35 times the difference between item difficulties of the reference group
and the focal group (Penfield and Camilli, 2007, p. 138). This effect size is similar Mantel-Haenszel's \Delta_{MH}
effect size, and the ETS delta scale is used
to classify the effect sizes (Holland and Thayer, 1985).
The output of the difRaju
, as displayed by the print.Raj
function, can be stored in a text file provided that save.output
is set to TRUE
(the default value FALSE
does not execute the storage). In this case, the name of the text file must be given as a character string into the first component
of the output
argument (default name is "out"
), and the path for saving the text file can be given through the second component of output
. The
default value is "default"
, meaning that the file will be saved in the current working directory. Any other path can be specified as a character string: see the
Examples section for an illustration.
The plot.Raj
function displays the DIF statistics in a plot, with each item on the X axis. The type of point and the color are fixed by the usual pch
and
col
arguments. Option number
permits to display the item numbers instead. Also, the plot can be stored in a figure file, either in PDF or JPEG format.
Fixing save.plot
to TRUE
allows this process. The figure is defined through the components of save.options
. The first two components perform similarly
as those of the output
argument. The third component is the figure format, with allowed values "pdf"
(default) for PDF file and "jpeg"
for JPEG file.
Value
A list of class "Raj" with the following arguments:
RajuZ |
the values of the Raju's statistics. |
p.value |
the p-values for the Raju's statistics. |
alpha |
the value of |
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". |
signed |
the value of the |
p.adjust.method |
the value of the |
adjusted.p |
either |
purification |
the value of |
nrPur |
the number of iterations in the item purification process. Returned only if |
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 |
convergence |
logical indicating whether the iterative item purification process stopped before the maximal number |
model |
the value of |
c |
The value of the |
engine |
The value of the |
discr |
the value of the |
itemParInit |
the matrix of initial parameter estimates,with the same format as |
itemParFinal |
the matrix of final parameter estimates, with the same format as |
estPar |
a logical value indicating whether the item parameters were estimated ( |
names |
the names of the items. |
anchor.names |
the value of the |
save.output |
the value of the |
output |
the value of the |
Author(s)
Sebastien Beland
Collectif pour le Developpement et les Applications en Mesure et Evaluation (Cdame)
Universite du Quebec a Montreal
sebastien.beland.1@hotmail.com, http://www.cdame.uqam.ca/
David Magis
Department of Psychology, University of Liege
Research Group of Quantitative Psychology and Individual Differences, KU Leuven
David.Magis@uliege.be, http://ppw.kuleuven.be/okp/home/
Gilles Raiche
Collectif pour le Developpement et les Applications en Mesure et Evaluation (Cdame)
Universite du Quebec a Montreal
raiche.gilles@uqam.ca, http://www.cdame.uqam.ca/
References
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. doi: 10.1177/014662168801200304
Cook, L. L. and Eignor, D. R. (1991). An NCME instructional module on IRT equating methods. Educational Measurement: Issues and Practice, 10, 37-45.
Holland, P. W. and Thayer, D. T. (1985). An alternative definition of the ETS delta scale of item difficulty. Research Report RR-85-43. Princeton, NJ: Educational Testing Service.
Kim, J., and Oshima, T. C. (2013). Effect of multiple testing adjustment in differential item functioning detection. Educational and Psychological Measurement, 73, 458–470. doi: 10.1177/0013164412467033
Magis, D., Beland, S., Tuerlinckx, F. and De Boeck, P. (2010). A general framework and an R package for the detection of dichotomous differential item functioning. Behavior Research Methods, 42, 847-862. doi: 10.3758/BRM.42.3.847
Penfield, R. D., and Camilli, G. (2007). Differential item functioning and item bias. In C. R. Rao and S. Sinharray (Eds.), Handbook of Statistics 26: Psychometrics (pp. 125-167). Amsterdam, The Netherlands: Elsevier.
Raju, N.S. (1988). The area between two item characteristic curves. Psychometrika, 53, 495-502. doi: 10.1007/BF02294403
Raju, N. S. (1990). Determining the significance of estimated signed and unsigned areas between two item response functions. Applied Psychological Measurement, 14, 197-207. doi: 10.1177/014662169001400208
Rizopoulos, D. (2006). ltm: An R package for latent variable modelling and item response theory analyses. Journal of Statistical Software, 17, 1-25. doi: 10.18637/jss.v017.i05
See Also
Examples
## Not run:
# 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)
difRaju(verbal, group = 25, focal.name = 1, model = "1PL")
difRaju(verbal, group = "Gender", focal.name = 1, model = "1PL")
difRaju(verbal[,1:24], group = verbal[,25], focal.name = 1, model = "1PL")
# Multiple comparisons adjustment using Benjamini-Hochberg method
difRaju(verbal, group = 25, focal.name = 1, model = "1PL", p.adjust.method = "BH")
# With signed areas
difRaju(verbal, group = 25, focal.name = 1, model = "1PL", signed = TRUE)
# With items 1 to 5 set as anchor items
difRaju(verbal, group = 25, focal.name = 1, model = "1PL", anchor = 1:5)
# (1PL model, "lme4" engine)
difRaju(verbal, group = "Gender", focal.name = 1, model = "1PL",
engine = "lme4")
# 2PL model, signed and unsigned areas
difRaju(verbal, group = "Gender", focal.name = 1, model = "2PL")
difRaju(verbal, group = "Gender", focal.name = 1, model = "2PL", signed = TRUE)
# 3PL model with all pseudo-guessing parameters constrained to 0.05
# Signed and unsigned areas
difRaju(verbal, group = "Gender", focal.name = 1, model = "3PL", c = 0.05)
difRaju(verbal, group = "Gender", focal.name = 1, model = "3PL", c = 0.05,
signed = TRUE)
# Same models, with item purification
difRaju(verbal, group = "Gender", focal.name = 1, model = "1PL", purify = TRUE)
difRaju(verbal, group = "Gender", focal.name = 1, model = "2PL", purify = TRUE)
difRaju(verbal, group = "Gender", focal.name = 1, model = "3PL", c = 0.05,
purify = TRUE)
# With signed areas
difRaju(verbal, group = "Gender", focal.name = 1, model = "1PL", purify = TRUE,
signed = TRUE)
difRaju(verbal, group = "Gender", focal.name = 1, model = "2PL", purify = TRUE,
signed = TRUE)
difRaju(verbal, group = "Gender", focal.name = 1, model = "3PL", c = 0.05,
purify = TRUE, signed = 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"))
difRaju(irtParam = item.1PL,same.scale = FALSE)
## Pre-estimation of the item parameters (1PL model, "lme4" engine)
item.1PL<-rbind(itemParEst(data.ref, model = "1PL", engine = "lme4"),
itemParEst(data.focal, model = "1PL", engine = "lme4"))
difRaju(irtParam = item.1PL, same.scale = FALSE)
## Pre-estimation of the item parameters (2PL model)
item.2PL<-rbind(itemParEst(data.ref, model = "2PL"),
itemParEst(data.focal, model = "2PL"))
difRaju(irtParam = item.2PL, same.scale = FALSE)
## Pre-estimation of the item parameters (constrained 3PL model)
item.3PL<-rbind(itemParEst(data.ref, model = "3PL", c = 0.05),
itemParEst(data.focal, model = "3PL", c = 0.05))
difRaju(irtParam = item.3PL, same.scale = FALSE)
# Saving the output into the "RAJUresults.txt" file (and default path)
r <- difRaju(verbal, group = 25, focal.name = 1, model = "1PL",
save.output = TRUE, output = c("RAJUresults","default"))
# Graphical devices
plot(r)
# Plotting results and saving it in a PDF figure
plot(r, save.plot = TRUE, save.options = c("plot", "default", "pdf"))
# Changing the path, JPEG figure
path <- "c:/Program Files/"
plot(r, save.plot = TRUE, save.options = c("plot", path, "jpeg"))
## End(Not run)