itemfit.sx2 {CDM} R Documentation

## S-X2 Item Fit Statistic for Dichotomous Data

### Description

Computes the S-X2 item fit statistic (Orlando & Thissen; 2000, 2003) for dichotomous data. Note that completely observed data is necessary for applying this function.

### Usage

itemfit.sx2(object, Eik_min=1, progress=TRUE)

## S3 method for class 'itemfit.sx2'
summary(object, ...)

## S3 method for class 'itemfit.sx2'


### Arguments

 object Object of class din, gdina, gdm, sirt::rasch.mml, sirt::smirt or TAM::tam.mml x Object of class din, gdina, gdm, sirt::rasch.mml, sirt::smirt or TAM::tam.mml Eik_min The minimum expected cell size for merging score groups. progress An optional logical indicating whether progress should be displayed. ask An optional logical indicating whether every item should be separately displayed. ... Further arguments to be passed

### Details

The S-X2 item fit statistic compares observed and expected proportions O_{jk} and E_{jk} for item j and each score group k and forms a chi-square distributed statistic

S-X_j^2=\sum_{k=1}^{J-1} N_k \frac{ ( O_{jk} - E_{jk} )^2 } { E_{jk} ( 1 - E_{jk} ) } 

The degrees of freedom are J-1-P_j where P_j denotes the number of estimated item parameters.

### Value

A list with following entries

 itemfit.stat Data frame containing item fit statistics itemtable Data frame with expected and observed proportions for each score group and each item. Beside the ordinary p value, an adjusted p value obtained by correction due to multiple testing is provided (p.holm, see stats::p.adjust.

### Note

This function does not work properly for multiple groups.

### Author(s)

Alexander Robitzsch

### References

Li, Y., & Rupp, A. A. (2011). Performance of the S-X2 statistic for full-information bifactor models. Educational and Psychological Measurement, 71, 986-1005.

Orlando, M., & Thissen, D. (2000). Likelihood-based item-fit indices for dichotomous item response theory models. Applied Psychological Measurement, 24, 50-64.

Orlando, M., & Thissen, D. (2003). Further investigation of the performance of S-X2: An item fit index for use with dichotomous item response theory models. Applied Psychological Measurement, 27, 289-298.

Zhang, B., & Stone, C. A. (2008). Evaluating item fit for multidimensional item response models. Educational and Psychological Measurement, 68, 181-196.

### Examples

## Not run:
#############################################################################
# EXAMPLE 1: Items with unequal item slopes
#############################################################################

# simulate data
set.seed(9871)
I <- 11
b <- seq( -1.5, 1.5, length=I)
a <- rep(1,I)
a[4] <- .4
N <- 1000
library(sirt)
dat <- sirt::sim.raschtype( theta=stats::rnorm(N), b=b, fixed.a=a)

#*** 1PL model estimated with gdm
mod1 <- CDM::gdm( dat, theta.k=seq(-6,6,len=21), irtmodel="1PL" )
summary(mod1)
# estimate item fit statistic
fitmod1 <- CDM::itemfit.sx2(mod1)
summary(fitmod1)
##       item itemindex   S-X2 df     p S-X2_df RMSEA Nscgr Npars p.holm
##   1  I0001         1  4.173  9 0.900   0.464 0.000    10     1  1.000
##   2  I0002         2 12.365  9 0.193   1.374 0.019    10     1  1.000
##   3  I0003         3  6.158  9 0.724   0.684 0.000    10     1  1.000
##   4  I0004         4 37.759  9 0.000   4.195 0.057    10     1  0.000
##   5  I0005         5 12.307  9 0.197   1.367 0.019    10     1  1.000
##   6  I0006         6 19.358  9 0.022   2.151 0.034    10     1  0.223
##   7  I0007         7 14.610  9 0.102   1.623 0.025    10     1  0.818
##   8  I0008         8 15.568  9 0.076   1.730 0.027    10     1  0.688
##   9  I0009         9  8.471  9 0.487   0.941 0.000    10     1  1.000
##   10 I0010        10  8.330  9 0.501   0.926 0.000    10     1  1.000
##   11 I0011        11 12.351  9 0.194   1.372 0.019    10     1  1.000
##
##   -- Average Item Fit Statistics --
##   S-X2=13.768 | S-X2_df=1.53
# -> 4th item does not fit to the 1PL model

# plot item fit
plot(fitmod1)

#*** 2PL model estimated with gdm
mod2 <- CDM::gdm( dat, theta.k=seq(-6,6,len=21), irtmodel="2PL", maxiter=100 )
summary(mod2)
# estimate item fit statistic
fitmod2 <- CDM::itemfit.sx2(mod2)
summary(fitmod2)
##       item itemindex   S-X2 df     p S-X2_df RMSEA Nscgr Npars p.holm
##   1  I0001         1  4.083  8 0.850   0.510 0.000    10     2  1.000
##   2  I0002         2 13.580  8 0.093   1.697 0.026    10     2  0.747
##   3  I0003         3  6.236  8 0.621   0.780 0.000    10     2  1.000
##   4  I0004         4  6.049  8 0.642   0.756 0.000    10     2  1.000
##   5  I0005         5 12.792  8 0.119   1.599 0.024    10     2  0.834
##   6  I0006         6 14.397  8 0.072   1.800 0.028    10     2  0.648
##   7  I0007         7 15.046  8 0.058   1.881 0.030    10     2  0.639
##   [...]
##
##   -- Average Item Fit Statistics --
##   S-X2=10.22 | S-X2_df=1.277

#*** 1PL model estimation in smirt (sirt package)
Qmatrix <- matrix(1, nrow=I, ncol=1 )
mod1a <- sirt::smirt( dat, Qmatrix=Qmatrix )
summary(mod1a)
# item fit statistic
fitmod1a <- CDM::itemfit.sx2(mod1a)
summary(fitmod1a)

#*** 2PL model estimation in smirt (sirt package)
mod2a <- sirt::smirt( dat, Qmatrix=Qmatrix, est.a="2PL")
summary(mod2a)
# item fit statistic
fitmod2a <- CDM::itemfit.sx2(mod2a)
summary(fitmod2a)

#*** 1PL model estimated with rasch.mml2 (in sirt)
mod1b <- sirt::rasch.mml2(dat)
summary(mod1b)
# estimate item fit statistic
fitmod1b <- CDM::itemfit.sx2(mod1b)
summary(fitmod1b)

#*** 1PL estimated in TAM
library(TAM)
mod1c <- TAM::tam.mml( resp=dat )
summary(mod1c)
# item fit
summary( CDM::itemfit.sx2( mod1c) )
# conversion to mirt object
library(sirt)
library(mirt)
cmod1c <- sirt::tam2mirt( mod1c )
# item fit in mirt
mirt::itemfit( cmod1c$mirt ) #*** 2PL estimated in TAM mod2c <- TAM::tam.mml.2pl( resp=dat ) summary(mod2c) # item fit summary( CDM::itemfit.sx2( mod2c) ) # conversion to mirt object and item fit in mirt cmod2c <- sirt::tam2mirt( mod2c ) mirt::itemfit( cmod2c$mirt )

# estimation in mirt
mod1d <- mirt::mirt( dat, 1, itemtype="Rasch" )
mirt::itemfit( mod1d )    # compute item fit

#############################################################################
# EXAMPLE 2: Item fit statistics sim.dina dataset
#############################################################################

data(sim.dina, package="CDM")
data(sim.qmatrix, package="CDM")

#*** Model 1: DINA model (correctly specified model)
mod1 <- CDM::din( data=sim.dina, q.matrix=sim.qmatrix )
summary(mod1)
# item fit statistic
summary( CDM::itemfit.sx2( mod1 ) )
##   -- Average Item Fit Statistics --
##   S-X2=7.397 | S-X2_df=1.233

#*** Model 2: Mixed DINA/DINO model
#***  1th item is misspecified according to DINO rule
I <- ncol(CDM::sim.dina)
rule <- rep("DINA", I )
rule[1] <- "DINO"
mod2 <- CDM::din( data=CDM::sim.dina, q.matrix=CDM::sim.qmatrix, rule=rule)
summary(mod2)
# item fit statistic
summary( CDM::itemfit.sx2( mod2 ) )
##   -- Average Item Fit Statistics --
##   S-X2=9.925 | S-X2_df=1.654

#*** Model 3: Additive GDINA model
mod3 <- CDM::gdina( data=CDM::sim.dina, q.matrix=CDM::sim.qmatrix, rule="ACDM")
summary(mod3)
# item fit statistic
summary( CDM::itemfit.sx2( mod3 ) )
##   -- Average Item Fit Statistics --
##   S-X2=8.416 | S-X2_df=1.678

## End(Not run)


[Package CDM version 8.2-6 Index]