# uniquenessPrior: Uniqueness prior to assist in item factor analysis In ifaTools: Toolkit for Item Factor Analysis with 'OpenMx'

## Description

To prevent Heywood cases, Bock, Gibbons, & Muraki (1988) suggested a beta prior on the uniqueness (Equations 43-46). The analytic gradient and Hessian are included for quick optimization using Newton-Raphson.

## Usage

 `1` ```uniquenessPrior(model, numFactors, strength = 0.1, name = "uniquenessPrior") ```

## Arguments

 `model` an mxModel `numFactors` the number of factors. All items are assumed to have the same number of factors. `strength` the strength of the prior `name` the name of the mxModel that is returned

## Details

To reproduce these derivatives in maxima for the case of 2 slopes (`c` and `d`), use the following code:

`f(c,d) := -p*log(1-(c^2 / (c^2+d^2+1) + (d^2 / (c^2+d^2+1))));`

`diff(f(c,d), d),radcan;`

`diff(diff(f(c,d), d),d),radcan;`

The general pattern is given in Bock, Gibbons, & Muraki.

## Value

an mxModel that evaluates to the prior density in deviance units

## References

Bock, R. D., Gibbons, R., & Muraki, E. (1988). Full-information item factor analysis. Applied Psychological Measurement, 12(3), 261-280.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21``` ```numItems <- 6 spec <- list() spec[1:numItems] <- rpf.drm(factors=2) names(spec) <- paste0("i", 1:numItems) item <- mxMatrix(name="item", free=TRUE, values=mxSimplify2Array(lapply(spec, rpf.rparam))) item\$labels[1:2,] <- paste0('p',1:(numItems * 2)) data <- rpf.sample(500, spec, item\$values) m1 <- mxModel(model="m1", item, mxData(observed=data, type="raw"), mxExpectationBA81(spec), mxFitFunctionML()) up <- uniquenessPrior(m1, 2) container <- mxModel("container", m1, up, mxFitFunctionMultigroup(c("m1", "uniquenessPrior")), mxComputeSequence(list( mxComputeOnce('fitfunction', c('fit','gradient')), mxComputeReportDeriv()))) container <- mxRun(container) container\$output\$fit container\$output\$gradient ```

ifaTools documentation built on May 29, 2017, 10:41 a.m.