difNLR: Performs DIF detection using Non-Linear Regression method.

Description Usage Arguments Details Value Author(s) References See Also Examples

View source: R/difNLR.R

Description

Performs DIF detection procedure based on Non-Linear Regression model (generalized logistic regression) and either likelihood-ratio or F test of submodel.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
difNLR(Data, group, focal.name, model, constraints, type = "both",
match = "zscore", anchor = NULL, purify = FALSE, nrIter = 10, test = "LR",
alpha = 0.05, p.adjust.method = "none", start)

## S3 method for class 'difNLR'
print(x, ...)

## S3 method for class 'difNLR'
plot(x, plot.type = "cc", item = "all",
  col = c("dodgerblue2", "goldenrod2"), shape = 21, size = 0.8,
  linetype = c(2, 1), title, ...)

## S3 method for class 'difNLR'
fitted(object, item = "all", ...)

## S3 method for class 'difNLR'
predict(object, item = "all", score, group, ...)

## S3 method for class 'difNLR'
coef(object, ...)

## S3 method for class 'difNLR'
logLik(object, ...)

## S3 method for class 'difNLR'
AIC(object, ...)

## S3 method for class 'difNLR'
BIC(object, ...)

Arguments

Data

numeric: either the scored data matrix only, or the scored data matrix plus the vector of group. See Details.

group

numeric or character: either the binary vector of group membership or the column indicator (in Data) of group membership. See Details.

focal.name

numeric or character: indicates the level of group which corresponds to focal group

model

character: generalized logistic regression model to be fitted. See Details.

constraints

character: which parameters should be the same for both groups. See Details.

type

character: type of DIF to be tested. Possible values are "both" (default), "udif", "nudif", "all", or combination of parameters 'a', 'b', 'c' and 'd'. See Details.

match

specifies matching criterion. Can be either "zscore" (default, standardized total score), "score" (total test score), or vector of the same length as number of observations in "Data". See Details.

anchor

Either NULL (default) or a vector of item names or item identifiers specifying which items are currently considered as anchor (DIF free) items. Argument is ignored if match is not "zscore" or "score". See Details.

purify

logical: should the item purification be applied? (default is FALSE). See Details.

nrIter

numeric: the maximal number of iterations in the item purification (default is 10).

test

character: test to be performed for DIF detection (either "LR" (default), or "F"). See Details.

alpha

numeric: significance level (default is 0.05).

p.adjust.method

character: method for multiple comparison correction. See Details.

start

numeric: matrix with n rows (where n is the number of items) and 8 columns containing initial item parameters estimates. See Details.

x

an object of 'difNLR' class

...

other generic parameters for print(), plot(), fitted(), predict() or coef() functions.

plot.type

character: type of plot to be plotted (either "cc" for characteristic curve (default), or "stat" for test statistics). See Details.

item

either character ("all"), or numeric vector, or single number corresponding to column indicators. See Details.

col

character: single value, or vector of two values representing colors for plot.

shape

integer: shape parameter for plot.

size

numeric: single number, or vector of two numbers representing line width in plot.

linetype

numeric: single number, or vector of two numbers representing line type in plot for reference and focal group.

title

string: title of plot.

object

an object of 'difNLR' class

score

numeric: standardized total score of subject.

Details

DIF detection procedure based on Non-Linear Regression is the extension of Logistic Regression procedure (Swaminathan and Rogers, 1990).

The Data is a matrix whose rows represents scored examinee answers ("1" correct, "0" incorrect) and columns correspond to the items. In addition, Data can hold the vector of group membership. If so, group is a column indicator of Data. Otherwise, group must be either a vector of the same length as nrow(Data).

The unconstrained form of 4PL generalized logistic regression model for probability of correct answer (i.e., y = 1) is P(y = 1) = (c + cDif*g) + (d + dDif*g - c - cDif*g)/(1 + exp(-(a + aDif*g)*(x - b - bDif*g))), where x is standardized total score (also called Z-score) and g is group membership. Parameters a, b, c and d are discrimination, difficulty, guessing and inattention. Parameters aDif, bDif, cDif and dDif then represetn differences between two groups in discrimination, difficulty, guessing and inattention.

This 4PL model can be further constrained by model and constraints arguments. The arguments model and constraints can be also combined.

The model argument offers several predefined models. The options are as follows: Rasch for 1PL model with discrimination parameter fixed on value 1 for both groups, 1PL for 1PL model with discrimination parameter fixed for both groups, 2PL for logistic regression model, 3PLcg for 3PL model with fixed guessing for both groups, 3PLdg for 3PL model with fixed inattention for both groups, 3PLc (alternatively also 3PL) for 3PL regression model with guessing parameter, 3PLd for 3PL model with inattention parameter, 4PLcgdg for 4PL model with fixed guessing and inattention parameter for both groups, 4PLcgd (alternatively also 4PLd) for 4PL model with fixed guessing for both groups, 4PLcdg (alternatively also 4PLc) for 4PL model with fixed inattention for both groups, or 4PL for 4PL model.

The model can be specified in more detail with constraints argument which specifies what arguments should be fixed for both groups. For example, choice "ad" means that discrimination (a) and inattention (d) are fixed for both groups and other parameters (b and c) are not.

The type corresponds to type of DIF to be tested. Possible values are "both" to detect any DIF caused by difference in difficulty or discrimination (i.e., uniform and/or non-uniform), "udif" to detect only uniform DIF (i.e., difference in difficulty b), "nudif" to detect only non-uniform DIF (i.e., difference in discrimination a), or "all" to detect DIF caused by difference caused by any parameter that can differed between groups. The type of DIF can be also specified in more detail by using combination of parameters a, b, c and d. For example, with an option "c" for 4PL model only the difference in parameter c is tested.

Argument match represents the matching criterion. It can be either the standardized test score (default, "zscore"), total test score ("score"), or any other continuous or discrete variable of the same length as number of observations in Data. Matching criterion is used in NLR() function as a covariate in non-linear regression model.

A set of anchor items (DIF free) can be specified through the anchor argument. It need to be a vector of either item names (as specified in column names of Data) or item identifiers (integers specifying the column number). In case anchor items are provided, only these items are used to compute matching criterion match. If the match argument is not either "zscore" or "score", anchor argument is ignored. When anchor items are provided, purification is not applied.

The p.adjust.method is a character for p.adjust() function from the stats package. Possible values are "holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none".

The start is a matrix with a number of rows equal to number of items and with 8 columns. First 4 columns represent parameters (a, b, c, d) of generalized logistic regression model for reference group. Last 4 columns represent differences of parameters (aDif, bDif, cDif, dDif) of generalized logistic regression model between reference and focal group. If not specified, starting values are calculated with startNLR() function.

The output of the difNLR is displayed by the print.difNLR() function.

Two types of plots are available. The first one is obtained by setting plot.type = "cc" (default). The characteristic curve for item specified in item option is plotted. For default option "all" of item, characteristic curves of all converged items are plotted. The drawn curves represent best model. The second plot is obtained by setting plot.type = "stat". The test statistics (either LR-test, or F-test, depends on argument test) are displayed on the Y axis, for each coverged item. The detection threshold is displayed by a horizontal line and items detected as DIF are printed with the red color. Only parameters size and title are used.

Fitted values are extracted by the fitted.difNLR() function for item(s) specified in item argument.

Predicted values are produced by the predict.difNLR() function for item(s) specified in item argument. score represents standardized total score of new subject and group argument represents group membership of new subject.

Missing values are allowed but discarded for item estimation. They must be coded as NA for both, data and group parameters.

In case that model considers difference in guessing or inattention parameter, the different parameterization is used and parameters with standard errors are recalculated by delta method. However, covariance matrices stick with alternative parameterization.

Value

A list of class 'difNLR' with the following arguments:

Sval

the values of likelihood ratio test statistics.

nlrPAR

the estimates of final model.

nlrSE

the standard errors of estimates of final model.

parM0

the estimates of null model.

seM0

the standard errors of estimates of null model.

covM0

the covariance matrices of estimates of null model.

parM1

the estimates of alternative model.

seM1

the standard errors of estimates of alternative model.

covM1

the covariance matrices of estimates of alternative model.

alpha

numeric: significance level.

DIFitems

either the column indicators of the items which were detected as DIF, or "No DIF item detected".

match

matching criterion.

model

fitted model.

type

character: type of DIF that was tested. If parameters were specified, the value is "other".

types

character: the parameters (specified by user, type has value "other") which were tested for difference.

p.adjust.method

character: method for multiple comparison correction which was applied.

pval

the p-values by likelihood ratio test.

adj.pval

the adjusted p-values by likelihood ratio test using p.adjust.method.

df

the degress of freedom of likelihood ratio test.

test

used test.

purification

purify value.

nrPur

number of iterations in item purification process. Returned only if purify is TRUE.

difPur

a binary matrix with one row per iteration of item purification and one column per item. "1" in i-th row and j-th column means that j-th item was identified as DIF in i-1-th iteration. Returned only if purify is TRUE.

conv.puri

logical indicating whether item purification process converged before the maximal number nrIter of iterations. Returned only if purify is TRUE.

group

the vector of group membership.

Data

the data matrix.

conv.fail

numeric: number of convergence issues.

conv.fail.which

the indicators of the items which did not converge.

llM0

log-likelihood of null model.

llM1

log-likelihood of alternative model.

AICM0

AIC of null model.

AICM1

AIC of alternative model.

BICM0

BIC of null model.

BICM1

BIC of alternative model.

Author(s)

Adela Drabinova
Institute of Computer Science, The Czech Academy of Sciences
Faculty of Mathematics and Physics, Charles University
[email protected]

Patricia Martinkova
Institute of Computer Science, The Czech Academy of Sciences
[email protected]

Karel Zvara
Faculty of Mathematics and Physics, Charles University

References

Drabinova, A. & Martinkova P. (2017). Detection of Differential Item Functioning with NonLinear Regression: Non-IRT Approach Accounting for Guessing. Journal of Educational Measurement. Accepted.

Drabinova, A. & Martinkova P. (2016). Detection of Differenctial Item Functioning Based on Non-Linear Regression, Technical Report, V-1229, http://hdl.handle.net/11104/0259498.

Swaminathan, H. & Rogers, H. J. (1990). Detecting Differential Item Functioning Using Logistic Regression Procedures. Journal of Educational Measurement, 27, 361-370.

See Also

p.adjust

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
## Not run: 
# loading data based on GMAT
data(GMAT)

Data  <- GMAT[, 1:20]
group <- GMAT[, "group"]

# Testing both DIF effects using likelihood-ratio test and
# 3PL model with fixed guessing for groups
(x <- difNLR(Data, group, focal.name = 1, model = "3PLcg"))

# Testing both DIF effects using F test and
# 3PL model with fixed guessing for groups
difNLR(Data, group, focal.name = 1, model = "3PLcg", test = "F")

# Testing both DIF effects using LR test,
# 3PL model with fixed guessing for groups
# and Benjamini-Hochberg correction
difNLR(Data, group, focal.name = 1, model = "3PLcg", p.adjust.method = "BH")

# Testing both DIF effects using LR test,
# 3PL model with fixed guessing for groups
# and item purification
difNLR(Data, group, focal.name = 1, model = "3PLcg", purify = T)

# Testing both DIF effects using 3PL model with fixed guessing for groups
# and total score as matching criterion
difNLR(Data, group, focal.name = 1, model = "3PLcg", match = "score")

# Testing uniform DIF effects using 4PL model with the same
# guessing and inattention
difNLR(Data, group, focal.name = 1, model = "4PLcgdg", type = "udif")

# Testing non-uniform DIF effects using 2PL model
difNLR(Data, group, focal.name = 1, model = "2PL", type = "nudif")

# Testing difference in parameter b using 4PL model with fixed
# a and c parameters
difNLR(Data, group, focal.name = 1, model = "4PL", constraints = "ac", type = "b")

# Graphical devices
plot(x)
plot(x, item = x$DIFitems)
plot(x, plot.type = "stat")

# Fitted values
fitted(x)
fitted(x, item = 1)
# Predicted values
predict(x)
predict(x, item = 1)

# Predicted values for new subjects
predict(x, item = 1, score = 0, group = 1)
predict(x, item = 1, score = 0, group = 0)

# AIC, BIC, logLik
AIC(x)
BIC(x)
logLik(x)

## End(Not run)

difNLR documentation built on Aug. 29, 2017, 5:03 p.m.