personpar {psychotools} | R Documentation |
Extract Person Parameters of Item Response Models
Description
A class and generic function for representing and estimating the person parameters of a given item response model.
Usage
personpar(object, ...)
## S3 method for class 'raschmodel'
personpar(object, personwise = FALSE, ref = NULL,
vcov = TRUE, interval = NULL, tol = 1e-8, ...)
## S3 method for class 'rsmodel'
personpar(object, personwise = FALSE, ref = NULL,
vcov = TRUE, interval = NULL, tol = 1e-8, ...)
## S3 method for class 'pcmodel'
personpar(object, personwise = FALSE, ref = NULL,
vcov = TRUE, interval = NULL, tol = 1e-8, ...)
## S3 method for class 'nplmodel'
personpar(object, personwise = FALSE, vcov = TRUE,
interval = NULL, tol = 1e-6, method = "EAP", ...)
## S3 method for class 'gpcmodel'
personpar(object, personwise = FALSE, vcov = TRUE,
interval = NULL, tol = 1e-6, method = "EAP", ...)
Arguments
object |
a fitted model object for which person parameters should be returned/estimated. |
personwise |
logical. Should the distributional parameters of the latent person ability distribution be computed (default) or the person-wise (individual) person parameters? See below for details. |
ref |
a vector of labels or position indices of item parameters or a
contrast matrix which should be used as restriction/for normalization. This
argument will be passed over to internal calls of |
vcov |
logical. Should a covariance matrix be returned/estimated for the person parameter estimates? See also details below. |
interval |
numeric vector of length two, specifying an interval for
|
tol |
|
method |
type of estimation method being passed to
|
... |
further arguments which are passed to |
Details
personpar
is both a class to represent person parameters of item
response models as well as a generic function. The generic function can be
used to return/estimate the person parameters of a given item response model.
By default, the function personpar()
reports the distribution
parameters of the assumed person ability distribution. For models estimated by
marginal maximum likelihood estimation (MML) this is the mean/variance of the
underlying normal distribution, whereas for models estimated by conditional
maximum likelihood estimation (CML) this is a discrete distribution with one
estimation for each observed raw score in the data.
Alternatively, when setting personwise = TRUE
, the person parameter for
each person/subject in the underlying data set can be extracted. In the CML
case, this simply computes the raw score for each person and then extracts
the corresponding person parameter. In the MML case, this necessitates
(numerically) integrating out the individual person parameters (also known as
factor scores or latent trait estimates) based on the underlying normal
distribution.
More specifically, the following algorithms are employed for obtaining the distributional person parameters:
In the MML case – i.e., for
nplmodel
s andgpcmodel
s – the distributional parameters are already part of the model specification. In a single-group specification and in the reference group of a multi-group specification the mean/variance parameters are fixed to 0/1. In the multi-group case the remaining mean/variance parameters were already estimated along with all other model parameters and simply need to be extracted. Analogously, the corresponding variance-covariance matrix just needs to be extracted and has zero covariances in the cells corresponding to fixed parameters.In the CML case – i.e.,
raschmodel
s,rsmodel
s, andpcmodel
s – the distributional parameters are estimated viauniroot()
with the estimation equations given by Hoijtink & Boomsma (1995) as well as Andersen (1995). This approach is fast and estimates for all possible raw scores are available. If the covariance matrix of the estimated person parameters is requested (vcov = TRUE
), an additional call ofoptim
is employed to obtain the Hessian numerically. With this approach, person parameters are available only for observed raw scores.
As already explained above, obtaining the person-wise (individual) person
paremeters (or ability estimates or factor scores) is straightforward in the
CML case. In the MML case, fscores
is used, see Chalmers
(2012) for further details. If personwise = TRUE
, the associated
variance-covariance matrix is not provided and simply a matrix with NA
s
is returned. (The same is done for vcov = FALSE
.)
For objects of class personpar
, several methods to standard generic
functions exist: print
, coef
, vcov
. coef
and
vcov
can be used to extract the person parameters and covariance matrix
without additional attributes. Based on this Wald tests or confidence
intervals can be easily computed, e.g., via confint
.
Value
A named vector with person parmeters of class personpar
and
additional attributes "model"
(the model name), "vcov"
(the
covariance matrix of the estimates if vcov = TRUE
or an
NA
-matrix otherwise) and "type"
(the type of the parameters,
depending on personwise
).
References
Andersen EB (1995). Polytomous Rasch Models and Their Estimation. In Fischer GH, Molenaar IW (eds.). Rasch Models: Foundations, Recent Developments, and Applications. Springer, New York.
Chalmers RP (2012). mirt: A Multidimensional Item Response Theory Package for the R Environment. Journal of Statistical Software, 48(6), 1–29.
Hoijtink H, Boomsma A (1995). On Person Parameter Estimation in the Dichotomous Rasch Model. In Fischer GH, Molenaar IW (eds.). Rasch Models: Foundations, Recent Developments, and Applications. Springer, New York.
See Also
itempar
, threshpar
,
discrpar
, guesspar
, upperpar
Examples
o <- options(digits = 3)
## load verbal aggression data
data("VerbalAggression", package = "psychotools")
## fit a Rasch model to dichotomized verbal aggression data and
ram <- raschmodel(VerbalAggression$resp2)
## extract person parameters
## (= parameters of the underlying ability distribution)
rap <- personpar(ram)
rap
## extract variance-covariance matrix and standard errors
vc <- vcov(rap)
sqrt(diag(vc))
## Wald confidence intervals
confint(rap)
## now match each person to person parameter with the corresponding raw score
personpar(ram, personwise = TRUE)[1:6]
## person parameters for RSM/PCM fitted to original polytomous data
rsm <- rsmodel(VerbalAggression$resp)
pcm <- pcmodel(VerbalAggression$resp)
cbind(personpar(rsm, vcov = FALSE), personpar(pcm, vcov = FALSE))
if(requireNamespace("mirt")) {
## fit a 2PL accounting for gender impact and
twoplm <- nplmodel(VerbalAggression$resp2, impact = VerbalAggression$gender)
## extract the person parameters
## (= mean/variance parameters from the normal ability distribution)
twoplp <- personpar(twoplm)
twoplp
## extract the standard errors
sqrt(diag(vcov(twoplp)))
## Wald confidence intervals
confint(twoplp)
## now look at the individual person parameters
## (integrated out over the normal ability distribution)
personpar(twoplm, personwise = TRUE)[1:6]
}
options(digits = o$digits)