Learn R Programming

sirt (version 1.14-0)

rasch.evm.pcm: Estimation of the Partial Credit Model using the Eigenvector Method

Description

This function performs the eigenvector approach to estimate item parameters which is based on a pairwise estimation approach (Gardner & 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.

Usage

rasch.evm.pcm(dat, jackunits = 20, weights = NULL, pid = NULL , group=NULL , powB = 2, adj_eps = 0.3, progress = TRUE )
"summary"(object,...)
"coef"(object,...)
"vcov"(object,...)

Arguments

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 $B$ matrix which is the basis of parameter estimation
adj_eps
Adjustment parameter for person parameter estimation (see mle.pcm.group)
progress
An optional logical indicating whether progress should be displayed
object
Object of class rasch.evm.pcm
...
Further arguments to be passed

Value

A list with following entries

References

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 Also

See the pairwise package for the alternative row averaging approach of Choppin (1985) and Wang and Engelhard (2014) for an alternative R implementation.

Examples

Run this code
#############################################################################
# EXAMPLE 1: Dataset Liking for Science
#############################################################################

data(data.liking.science)
dat <- data.liking.science

# estimate partial credit model using 10 Jackknife units
mod1 <- 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 <- 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 <- 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 <- 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 <- 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 <- sim.raschtype( stats::rnorm(N) , b )
# # simulate data for second group
# b1 <- b
# b1[4] <- b1[4] + .5 # introduce DIF for fourth item
# dat2 <- sim.raschtype( stats::rnorm(N,mean=.3) , b1 )
# dat <- rbind(dat1 , dat2 )
# group <- rep( 1:2 , each=N )
# # estimate model
# mod1 <- rasch.evm.pcm( dat , group= group )
# summary(mod1)
# ## End(Not run)

Run the code above in your browser using DataLab