Q3.Rd
This function estimates the \(Q_3\) statistic according to Yen (1984). The statistic \(Q_3\) is calculated for every item pair \((i,j)\) which is the correlation between item residuals after fitting the Rasch model.
Q3(dat, theta, b, progress=TRUE)
dat | An \(N \times I\) data frame of dichotomous item responses |
---|---|
theta | Vector of length \(N\) of person parameter estimates (e.g. obtained from
|
b | Vector of length \(I\) (e.g. obtained from |
progress | Should iteration progress be displayed? |
A list with following entries
An \(I \times I\) matrix of \(Q_3\) statistics
Just the q3.matrix
in long matrix format where every row
corresponds to an item pair
An \(N \times I\) matrix of expected probabilities by the Rasch model
An \(N \times I\) matrix of residuals obtained after fitting the Rasch model
Vector with descriptive statistics of \(Q_3\)
Yen, W. M. (1984). Effects of local item dependence on the fit and equating performance of the three-parameter logistic model. Applied Psychological Measurement, 8, 125-145.
For the estimation of the average \(Q_3\) statistic within testlets see
Q3.testlet
.
For modeling testlet effects see mcmc.3pno.testlet
.
For handling local dependencies in IRT models see
rasch.copula2
, rasch.pml3
or
rasch.pairwise.itemcluster
.
############################################################################# # EXAMPLE 1: data.read. The 12 items are arranged in 4 testlets ############################################################################# data(data.read) # estimate the Rasch model mod <- sirt::rasch.mml2( data.read) # estmate WLEs mod.wle <- sirt::wle.rasch( dat=data.read, b=mod$item$b ) # calculate Yen's Q3 statistic mod.q3 <- sirt::Q3( dat=data.read, theta=mod.wle$theta, b=mod$item$b ) ## Yen's Q3 Statistic based on an estimated theta score ## *** 12 Items | 66 item pairs ## *** Q3 Descriptives ## M SD Min 10% 25% 50% 75% 90% Max ## -0.085 0.110 -0.261 -0.194 -0.152 -0.107 -0.051 0.041 0.412 # plot Q3 statistics I <- ncol(data.read) image( 1:I, 1:I, mod.q3$q3.matrix, col=gray( 1 - (0:32)/32), xlab="Item", ylab="Item") abline(v=c(5,9)) # borders for testlets abline(h=c(5,9)) if (FALSE) { # obtain Q3 statistic from modelfit.sirt function which is based on the # posterior distribution of theta and not on observed values fitmod <- sirt::modelfit.sirt( mod ) # extract Q3 statistic q3stat <- fitmod$itempairs$Q3 ## > summary(q3stat) ## Min. 1st Qu. Median Mean 3rd Qu. Max. ## -0.21760 -0.11590 -0.07280 -0.05545 -0.01220 0.44710 ## > sd(q3stat) ## [1] 0.1101451 }