I am working with a polytomous dataset with a 5-level LiKert scaled response (1=strongly disagree to 5=strongly agree), and I'm trying to follow the logic of example 2 for the conf.detect() function. I am interested in running the polyDETECT analysis tests. However, I'm not following how the scores were calculated?
score <- stats::qnorm( ( rowMeans( dat )+.5 ) / ( 30 + 1 ) )
I'm not familiar with this equation. Why is 0.5 added to the row means? And why is this product then divided by 30+1. I'm guessing the 30 comes from the 30 columns of the dat dataset?
Please add some additional details for this example in the sirt::conf.detect() help pages and/or a reference on this equation for calculating scores using stats::qnorm() and how to adjust this equation for other datasets.
Thank you for your time and clarification!
====================================
Full example code:
## Not run:
#############################################################################
# EXAMPLE 2: Big 5 data set (polytomous data)
#############################################################################
# attach Big5 Dataset
data(data.big5)
# select 6 items of each dimension
dat <- data.big5
dat <- dat[, 1:30]
# estimate person score by simply using a transformed sum score
score <- stats::qnorm( ( rowMeans( dat )+.5 ) / ( 30 + 1 ) )
# extract item cluster (Big 5 dimensions)
itemcluster <- substring( colnames(dat), 1, 1 )
# DETECT Item cluster
detect1 <- sirt::conf.detect( data=dat, score=score, itemcluster=itemcluster )
## unweighted weighted
## DETECT 1.256 1.256
## ASSI 0.384 0.384
## RATIO 0.597 0.597
# Exploratory DETECT
detect5 <- sirt::expl.detect( data=dat, score=score,
nclusters=9, N.est=nrow(dat) )
## DETECT (unweighted)
## Optimal Cluster Size is 6 (Maximum of DETECT Index)
## N.Cluster N.items N.est N.val size.cluster DETECT.est ASSI.est RATIO.est
## 1 2 30 500 0 6-24 1.073 0.246 0.510
## 2 3 30 500 0 6-10-14 1.578 0.457 0.750
## 3 4 30 500 0 6-10-11-3 1.532 0.444 0.729
## 4 5 30 500 0 6-8-11-2-3 1.591 0.462 0.757
## 5 6 30 500 0 6-8-6-2-5-3 1.610 0.499 0.766
## 6 7 30 500 0 6-3-6-2-5-5-3 1.557 0.476 0.740
## 7 8 30 500 0 6-3-3-2-3-5-5-3 1.540 0.462 0.732
## 8 9 30 500 0 6-3-3-2-3-5-3-3-2 1.522 0.444 0.724
# Plot Cluster solution
pl <- graphics::plot( detect5$clusterfit, main="Cluster solution" )
stats::rect.hclust(detect5$clusterfit, k=6, border="red")
I am working with a polytomous dataset with a 5-level LiKert scaled response (1=strongly disagree to 5=strongly agree), and I'm trying to follow the logic of example 2 for the
conf.detect()function. I am interested in running the polyDETECT analysis tests. However, I'm not following how the scores were calculated?I'm not familiar with this equation. Why is 0.5 added to the row means? And why is this product then divided by 30+1. I'm guessing the 30 comes from the 30 columns of the
datdataset?Please add some additional details for this example in the
sirt::conf.detect()help pages and/or a reference on this equation for calculating scores usingstats::qnorm()and how to adjust this equation for other datasets.Thank you for your time and clarification!
====================================
Full example code: