mle.pcm.group {sirt} | R Documentation |
Maximum Likelihood Estimation of Person or Group Parameters in the Generalized Partial Credit Model
Description
This function estimates person or group parameters in the partial credit model (see Details).
Usage
mle.pcm.group(dat, b, a=rep(1, ncol(dat)), group=NULL,
pid=NULL, adj_eps=0.3, conv=1e-04, maxiter=30)
Arguments
dat |
A numeric |
b |
Matrix with item thresholds |
a |
Vector of item slopes |
group |
Vector of group identifiers |
pid |
Vector of person identifiers |
adj_eps |
Numeric value which is used in |
conv |
Convergence criterion |
maxiter |
Maximum number of iterations |
Details
It is assumed that the generalized partial credit model holds.
In case one estimates a person parameter \theta_p
,
the log-likelihood is maximized and the following
estimating equation results: (see Penfield & Bergeron, 2005):
0=( \log L )'=\sum_i a_i \cdot [ \tilde{x}_{pi} -
E(X_{pi} | \theta_p ) ]
where E(X_{pi} | \theta_p )
denotes the expected item response
conditionally on \theta_p
.
With the method of \varepsilon
-adjustment (Bertoli-Barsotti & Punzo, 2012;
Bertoli-Barsotti, Lando & Punzo, 2014),
the observed item responses x_{pi}
are transformed such that
no perfect scores arise and bias is reduced. If S_p
is the sum score of person p
and M_p
the maximum
score of this person, then the transformed sum scores \tilde{S}_p
are
\tilde{S}_p=\varepsilon + \frac{M_p - 2 \varepsilon}{M_p} S_p
However, the adjustment is directly conducted on item responses to also handle the case of the generalized partial credit model with item slope parameters different from 1.
In case one estimates a group parameter \theta_g
,
the following estimating equation is used:
0=(\log L )'=\sum_p \sum_i a_i \cdot [ \tilde{x}_{pgi} -
E(X_{pgi} | \theta_g ) ]
where persons p
are nested within a group g
.
The \varepsilon
-adjustment is then performed at the
group level, not at the individual level.
Value
A list with following entries:
person |
Data frame with person or group parameters |
data_adjeps |
Modified dataset according to the
|
References
Bertoli-Barsotti, L., & Punzo, A. (2012). Comparison of two bias reduction techniques for the Rasch model. Electronic Journal of Applied Statistical Analysis, 5, 360-366.
Bertoli-Barsotti, L., Lando, T., & Punzo, A. (2014). Estimating a Rasch Model via fuzzy empirical probability functions. In D. Vicari, A. Okada, G. Ragozini & C. Weihs (Eds.). Analysis and Modeling of Complex Data in Behavioral and Social Sciences, Springer.
Penfield, R. D., & Bergeron, J. M. (2005). Applying a weighted maximum likelihood latent trait estimator to the generalized partial credit model. Applied Psychological Measurement, 29, 218-233.
Examples
## Not run:
#############################################################################
# EXAMPLE 1: Estimation of a group parameter for only one item per group
#############################################################################
data(data.si01)
dat <- data.si01
# item parameter estimation (partial credit model) in TAM
library(TAM)
mod <- TAM::tam.mml( dat[,2:3], irtmodel="PCM")
# extract item difficulties
b <- matrix( mod$xsi$xsi, nrow=2, byrow=TRUE )
# groupwise estimation
res1 <- sirt::mle.pcm.group( dat[,2:3], b=b, group=dat$idgroup )
# individual estimation
res2 <- sirt::mle.pcm.group( dat[,2:3], b=b )
#############################################################################
# EXAMPLE 2: Data Reading data.read
#############################################################################
data(data.read)
# estimate Rasch model
mod <- sirt::rasch.mml2( data.read )
score <- rowSums( data.read )
data.read <- data.read[ order(score), ]
score <- score[ order(score) ]
# compare different epsilon-adjustments
res30 <- sirt::mle.pcm.group( data.read, b=matrix( mod$item$b, 12, 1 ),
adj_eps=.3 )$person
res10 <- sirt::mle.pcm.group( data.read, b=matrix( mod$item$b, 12, 1 ),
adj_eps=.1 )$person
res05 <- sirt::mle.pcm.group( data.read, b=matrix( mod$item$b, 12, 1 ),
adj_eps=.05 )$person
# plot different scorings
plot( score, res05$theta, type="l", xlab="Raw score", ylab=expression(theta[epsilon]),
main="Scoring with different epsilon-adjustments")
lines( score, res10$theta, col=2, lty=2 )
lines( score, res30$theta, col=4, lty=3 )
## End(Not run)