mirt (version 1.17.1)

fscores: Compute factor score estimates (a.k.a, ability estimates, latent trait estimates, etc)

Description

Computes MAP, EAP, ML (Embretson & Reise, 2000), EAP for sum-scores (Thissen et al., 1995), or WLE (Warm, 1989) factor scores with a multivariate normal prior distribution using equally spaced quadrature. EAP scores for models with more than three factors are generally not recommended since the integration grid becomes very large, resulting in slower estimation and less precision if the quadpts are too low. Therefore, MAP scores should be used instead of EAP scores for higher dimensional models. Multiple imputation variants are possible for each estimator if a parameter information matrix was computed, which are useful if the sample size/number of items were small. As well, if the model contained latent regression predictors this information will be used in computing MAP and EAP estimates (for these models, full.scores=TRUE will always be used). Finally, plausible value imputation is also available, and will also account for latent regression predictor effects.

Usage

fscores(object, method = "EAP", full.scores = TRUE, rotate = "oblimin",
  Target = NULL, response.pattern = NULL, plausible.draws = 0,
  quadpts = NULL, returnER = FALSE, return.acov = FALSE, mean = NULL,
  cov = NULL, verbose = TRUE, full.scores.SE = FALSE, theta_lim = c(-6,
  6), MI = 0, QMC = FALSE, custom_den = NULL, custom_theta = NULL,
  min_expected = 1, converge_info = FALSE, ...)

Arguments

object
a computed model object of class SingleGroupClass, MultipleGroupClass, or DiscreteClass
method
type of factor score estimation method. Can be expected a-posteriori ("EAP"), Bayes modal ("MAP"), weighted likelihood estimation ("WLE"), maximum likelihood ("ML"), or expected a-posteriori for sum scor
full.scores
if FALSE then a summary table with factor scores for each unique pattern is displayed. Otherwise, a matrix of factor scores for each response pattern in the data is returned (default)
rotate
prior rotation to be used when estimating the factor scores. See summary-method for details. If the object is not an exploratory model then this argument is ignored
Target
target rotation; see summary-method for details
response.pattern
an optional argument used to calculate the factor scores and standard errors for a given response vector or matrix/data.frame
plausible.draws
number of plausible values to draw for future researchers to perform secondary analyses of the latent trait scores. Typically used in conjunction with latent regression predictors (see mirt for details), but c
quadpts
number of quadratures to use per dimension. If not specified, a suitable one will be created which decreases as the number of dimensions increases (and therefore for estimates such as EAP, will be less accurate). This is determined from the switch stateme
returnER
logical; return empirical reliability (also known as marginal reliability) estimates as a numeric values?
return.acov
logical; return a list containing covariance matrices instead of factors scores? impute = TRUE not supported with this option
mean
a vector for custom latent variable means. If NULL, the default for 'group' values from the computed mirt object will be used
cov
a custom matrix of the latent variable covariance matrix. If NULL, the default for 'group' values from the computed mirt object will be used
verbose
logical; print verbose output messages?
full.scores.SE
logical; when full.scores == TRUE, also return the standard errors associated with each respondent? Default is FALSE
theta_lim
lower and upper range to evaluate latent trait integral for each dimension. If omitted, a range will be generated automatically based on the number of dimensions
MI
a number indicating how many multiple imputation draws to perform. Default is 0, indicating that no MI draws will be performed
QMC
logical; use quasi-Monte Carlo integration? If quadpts is omitted the default number of nodes is 15000
custom_den
a function used to define the integration density (if required). The NULL default assumes that the multivariate normal distribution with the 'GroupPars' hyper-parameters are used. At the minimum must be of the form:

function(Theta, ...)

custom_theta
a matrix of custom integration nodes to use instead of the default, where each column corresponds to the respective dimension in the model
min_expected
when computing goodness of fit tests when method = 'EAPsum', this value is used to collapse across the conditioned total scores until the expected values are greater than this value. Note that this only affect the goodness of fit tests and no
converge_info
logical; include a column in the return objects containing a logical for each response pattern indicating whether a maximum value was found (not relavent non-iterative methods, such as EAP and EAPsum). Value is a reflection of the code elemen
...
additional arguments to be passed to nlm

Details

The function will return either a table with the computed scores and standard errors, the original data matrix with scores appended to the rightmost column, or the scores only. By default the latent means and covariances are determined from the estimated object, though these can be overwritten. Iterative estimation methods can be estimated in parallel to decrease estimation times if a mirtCluster object is available.

If the input object is a discrete latent class object estimated from mdirt then the returned results will be with respect to the posterior classification for each individual. The method inputs for 'DiscreteClass' objects may only be 'EAP', for posterior classification of each response pattern, or 'EAPsum' for posterior classification based on the raw sum-score.

References

Embretson, S. E. & Reise, S. P. (2000). Item Response Theory for Psychologists. Erlbaum.

Thissen, D., Pommerich, M., Billeaud, K., & Williams, V. S. L. (1995). Item Response Theory for Scores on Tests Including Polytomous Items with Ordered Responses. Applied Psychological Measurement, 19, 39-49.

Warm, T. A. (1989). Weighted likelihood estimation of ability in item response theory. Psychometrika, 54, 427-450.

See Also

averageMI

Examples

Run this code
mod <- mirt(Science, 1)
tabscores <- fscores(mod, full.scores = FALSE)
head(tabscores)
fullscores <- fscores(mod)
fullscores_with_SE <- fscores(mod, full.scores.SE=TRUE)
head(fullscores)
head(fullscores_with_SE)

#change method argument to use MAP estimates
fullscores <- fscores(mod, method='MAP')
head(fullscores)

#calculate MAP for a given response vector
fscores(mod, method='MAP', response.pattern = c(1,2,3,4))
#or matrix
fscores(mod, method='MAP', response.pattern = rbind(c(1,2,3,4), c(2,2,1,3)))

#use custom latent variable properties (diffuse prior for MAP is very close to ML)
fscores(mod, method='MAP', cov = matrix(1000), full.scores = FALSE)
fscores(mod, method='ML', full.scores = FALSE)

# EAPsum table of values based on total scores
fscores(mod, method = 'EAPsum', full.scores = FALSE)

#WLE estimation, run in parallel using available cores
mirtCluster()
head(fscores(mod, method='WLE', full.scores = FALSE))

#multiple imputation using 30 draws for EAP scores. Requires information matrix
mod <- mirt(Science, 1, SE=TRUE)
fs <- fscores(mod, MI = 30)
head(fs)

# plausible values for future work
pv <- fscores(mod, plausible.draws = 5)
lapply(pv, function(x) c(mean=mean(x), var=var(x), min=min(x), max=max(x)))

## define a custom_den function. EAP with a uniform prior between -3 and 3
fun <- function(Theta, ...) as.numeric(dunif(Theta, min = -3, max = 3))
head(fscores(mod, custom_den = fun))

# custom MAP prior: standard truncated normal between 5 and -2
library(msm)
# need the :: scope for parallel to see the function (not require if no mirtCluster() defined)
fun <- function(Theta, ...) msm::dtnorm(Theta, mean = 0, sd = 1, lower = -2, upper = 5)
head(fscores(mod, custom_den = fun, method = 'MAP', full.scores = FALSE))

Run the code above in your browser using DataLab