Estimation of the \(Q_3\) Statistic (Yen, 1984)
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.
Arguments
- dat
An \(N \times I\) data frame of dichotomous item responses
- theta
Vector of length \(N\) of person parameter estimates (e.g. obtained from
wle.rasch
)- b
Vector of length \(I\) (e.g. obtained from
rasch.mml2
)- progress
Should iteration progress be displayed?
Value
A list with following entries
- q3.matrix
An \(I \times I\) matrix of \(Q_3\) statistics
- q3.long
Just the
q3.matrix
in long matrix format where every row corresponds to an item pair- expected
An \(N \times I\) matrix of expected probabilities by the Rasch model
- residual
An \(N \times I\) matrix of residuals obtained after fitting the Rasch model
- Q3.stat
Vector with descriptive statistics of \(Q_3\)
References
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.
See also
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
.
Examples
#############################################################################
# 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
}