Last chance! 50% off unlimited learning
Sale ends in
This function performs the eigenvector approach to estimate item parameters which is based on a pairwise estimation approach (Garner & Engelhard, 2002). No assumption about person parameters is required for item parameter estimation. Statistical inference is performed by Jackknifing. If a group identifier is provided, tests for differential item functioning are performed.
rasch.evm.pcm(dat, jackunits=20, weights=NULL, pid=NULL,
group=NULL, powB=2, adj_eps=0.3, progress=TRUE )# S3 method for rasch.evm.pcm
summary(object, digits=3, file=NULL, ...)
# S3 method for rasch.evm.pcm
coef(object,...)
# S3 method for rasch.evm.pcm
vcov(object,...)
Data frame with dichotomous or polytomous item responses
A number of Jackknife units (if an integer is provided as the argument value) or a vector in which the Jackknife units are already defined.
Optional vector of sample weights
Optional vector of person identifiers
Optional vector of group identifiers. In this case, item parameters are group wise estimated and tests for differential item functioning are performed.
Power created in
Adjustment parameter for person parameter estimation
(see mle.pcm.group
)
An optional logical indicating whether progress should be displayed
Object of class rasch.evm.pcm
Number of digits after decimals for rounding in summary
.
Optional file name if summary
should be sunk into a file.
Further arguments to be passed
A list with following entries
Data frame with item parameters. The item parameter estimate
is denoted by est
while a Jackknife bias-corrected estimate
is est_jack
. The Jackknife standard error is se
.
Item threshold parameters
Data frame with person parameters obtained (MLE)
Paired comparison matrix
Transformed paired comparison matrix
Vector of estimated coefficients
Covariance matrix of estimated item parameters
Number of jackknife units
Reduced number of jackknife units
Used power of comparison matrix
Maximum number of categories per item
Number of groups
Some descriptives
Statistics for differential item functioning if group
is provided as an argument
Choppin, B. (1985). A fully conditional estimation procedure for Rasch Model parameters. Evaluation in Education, 9, 29-42.
Garner, M., & Engelhard, G. J. (2002). An eigenvector method for estimating item parameters of the dichotomous and polytomous Rasch models. Journal of Applied Measurement, 3, 107-128.
Wang, J., & Engelhard, G. (2014). A pairwise algorithm in R for rater-mediated assessments. Rasch Measurement Transactions, 28(1), 1457-1459.
See the pairwise package for the alternative row averaging approach of Choppin (1985) and Wang and Engelhard (2014) for an alternative R implementation.
# NOT RUN {
#############################################################################
# EXAMPLE 1: Dataset Liking for Science
#############################################################################
data(data.liking.science)
dat <- data.liking.science
# estimate partial credit model using 10 Jackknife units
mod1 <- sirt::rasch.evm.pcm( dat, jackunits=10 )
summary(mod1)
# }
# NOT RUN {
# compare results with TAM
library(TAM)
mod2 <- TAM::tam.mml( dat )
r1 <- mod2$xsi$xsi
r1 <- r1 - mean(r1)
# item parameters are similar
dfr <- data.frame( "b_TAM"=r1, mod1$item[,c( "est","est_jack") ] )
round( dfr, 3 )
## b_TAM est est_jack
## 1 -2.496 -2.599 -2.511
## 2 0.687 0.824 1.030
## 3 -0.871 -0.975 -0.943
## 4 -0.360 -0.320 -0.131
## 5 -0.833 -0.970 -0.856
## 6 1.298 1.617 1.444
## 7 0.476 0.465 0.646
## 8 2.808 3.194 3.439
## 9 1.611 1.460 1.433
## 10 2.396 1.230 1.095
## [...]
# partial credit model in eRm package
miceadds::library_install("eRm")
mod3 <- eRm::PCM(X=dat)
summary(mod3)
eRm::plotINFO(mod3) # plot item and test information
eRm::plotICC(mod3) # plot ICCs
eRm::plotPImap(mod3) # plot person-item maps
#############################################################################
# EXAMPLE 2: Garner and Engelhard (2002) toy example dichotomous data
#############################################################################
dat <- scan()
1 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0
1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0
dat <- matrix( dat, 10, 4, byrow=TRUE)
colnames(dat) <- paste0("I", 1:4 )
# estimate Rasch model with no jackknifing
mod1 <- sirt::rasch.evm.pcm( dat, jackunits=0 )
# paired comparison matrix
mod1$B
## I1_Cat1 I2_Cat1 I3_Cat1 I4_Cat1
## I1_Cat1 0 3 4 5
## I2_Cat1 1 0 3 3
## I3_Cat1 1 2 0 2
## I4_Cat1 1 1 1 0
#############################################################################
# EXAMPLE 3: Garner and Engelhard (2002) toy example polytomous data
#############################################################################
dat <- scan()
2 2 1 1 1 2 1 2 0 0 1 0 0 0 0 0 1 1 2 0 1 2 2 1 1
2 2 0 2 1 2 2 1 1 0 1 0 1 0 0 2 1 2 2 2 2 1 0 0 1
dat <- matrix( dat, 10, 5, byrow=TRUE)
colnames(dat) <- paste0("I", 1:5 )
# estimate partial credit model with no jackknifing
mod1 <- sirt::rasch.evm.pcm( dat, jackunits=0, powB=3 )
# paired comparison matrix
mod1$B
## I1_Cat1 I1_Cat2 I2_Cat1 I2_Cat2 I3_Cat1 I3_Cat2 I4_Cat1 I4_Cat2 I5_Cat1 I5_Cat2
## I1_Cat1 0 0 2 0 1 1 2 1 2 1
## I1_Cat2 0 0 0 3 2 2 2 2 2 3
## I2_Cat1 1 0 0 0 1 1 2 0 2 1
## I2_Cat2 0 1 0 0 1 2 0 3 1 3
## I3_Cat1 1 1 1 1 0 0 1 2 3 1
## I3_Cat2 0 1 0 2 0 0 1 1 1 1
## I4_Cat1 0 1 0 0 0 2 0 0 1 2
## I4_Cat2 1 0 0 2 1 1 0 0 1 1
## I5_Cat1 0 1 0 1 2 1 1 2 0 0
## I5_Cat2 0 0 0 1 0 0 0 0 0 0
#############################################################################
# EXAMPLE 4: Partial credit model for dataset data.mg from CDM package
#############################################################################
library(CDM)
data(data.mg,package="CDM")
dat <- data.mg[, paste0("I",1:11) ]
#*** Model 1: estimate partial credit model
mod1 <- sirt::rasch.evm.pcm( dat )
# item parameters
round( mod1$b, 3 )
## Cat1 Cat2 Cat3
## I1 -1.537 NA NA
## I2 -2.360 NA NA
## I3 -0.574 NA NA
## I4 -0.971 -2.086 NA
## I5 -0.104 0.201 NA
## I6 0.470 0.806 NA
## I7 -1.027 0.756 1.969
## I8 0.897 NA NA
## I9 0.766 NA NA
## I10 0.069 NA NA
## I11 -1.122 1.159 2.689
#*** Model 2: estimate PCM with pairwise package
miceadds::library_install("pairwise")
mod2 <- pairwise::pair(daten=dat)
summary(mod2)
plot(mod2)
# compute standard errors
semod2 <- pairwise::pairSE(daten=dat, nsample=20)
semod2
#############################################################################
# EXAMPLE 5: Differential item functioning for dataset data.mg
#############################################################################
library(CDM)
data(data.mg,package="CDM")
dat <- data.mg[ data.mg$group %in% c(2,3,11), ]
# define items
items <- paste0("I",1:11)
# estimate model
mod1 <- sirt::rasch.evm.pcm( dat[,items], weights=dat$weight, group=dat$group )
summary(mod1)
#############################################################################
# EXAMPLE 6: Differential item functioning for Rasch model
#############################################################################
# simulate some data
set.seed(9776)
N <- 1000 # number of persons
I <- 10 # number of items
# simulate data for first group
b <- seq(-1.5,1.5,len=I)
dat1 <- sirt::sim.raschtype( stats::rnorm(N), b )
# simulate data for second group
b1 <- b
b1[4] <- b1[4] + .5 # introduce DIF for fourth item
dat2 <- sirt::sim.raschtype( stats::rnorm(N,mean=.3), b1 )
dat <- rbind(dat1, dat2 )
group <- rep( 1:2, each=N )
# estimate model
mod1 <- sirt::rasch.evm.pcm( dat, group=group )
summary(mod1)
# }
Run the code above in your browser using DataLab