View source: R/rasch.evm.pcm.R
rasch.evm.pcm | R Documentation |
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 class 'rasch.evm.pcm'
summary(object, digits=3, file=NULL, ...)
## S3 method for class 'rasch.evm.pcm'
coef(object,...)
## S3 method for class 'rasch.evm.pcm'
vcov(object,...)
dat |
Data frame with dichotomous or polytomous item responses |
jackunits |
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. |
weights |
Optional vector of sample weights |
pid |
Optional vector of person identifiers |
group |
Optional vector of group identifiers. In this case, item parameters are group wise estimated and tests for differential item functioning are performed. |
powB |
Power created in |
adj_eps |
Adjustment parameter for person parameter estimation
(see |
progress |
An optional logical indicating whether progress should be displayed |
object |
Object of class |
digits |
Number of digits after decimals for rounding in |
file |
Optional file name if |
... |
Further arguments to be passed |
A list with following entries
item |
Data frame with item parameters. The item parameter estimate
is denoted by |
b |
Item threshold parameters |
person |
Data frame with person parameters obtained (MLE) |
B |
Paired comparison matrix |
D |
Transformed paired comparison matrix |
coef |
Vector of estimated coefficients |
vcov |
Covariance matrix of estimated item parameters |
JJ |
Number of jackknife units |
JJadj |
Reduced number of jackknife units |
powB |
Used power of comparison matrix |
maxK |
Maximum number of categories per item |
G |
Number of groups |
desc |
Some descriptives |
difstats |
Statistics for differential item functioning if |
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.
#############################################################################
# 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)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.