ltm(formula, constraint = NULL, IRT.param, start.val,
na.action = NULL, control = list())
formula
either a data.frame
(that will be converted to
a numeric matrix using data.matrix(
TRUE
then the coefficients' estimates for the two-parameter logistic
model are reported under the usual IRT parameterization. See Details for more info.q
denoting the number of terms in the
right-hand side of formula
na.action
to be used on the data frame in the left side of formula
.
In case of missing data, if na.action = NULL
the model uses the available cases, i.e., it takes
into account the observed parltm
with components,IRT.param = TRUE
.optim()
.optim()
.X
: a numeric matrix
that contains the observed response patterns, and (ii) obs
: a numeric vector that contains the observed
frequencies for each observed response pattern.Z
: a numeric matrix that contains
the abscissas, and (ii) GHw
: a numeric vector that contains the corresponding weights.control
argument.IRT.param
argument.if(!is.null(constraint))
, then it contains the value of the constraint
argument.ltm()
will use new random starting values.
The inclusion of nonlinear latent variable effects produces more
complex likelihood surfaces which might possess a number of local
maxima. To ensure that the maximum likelihood value has been
reached re-fit the model a number of times (simulations showed
that usually 10 times are adequate to ensure global convergence).
Conversion of the parameter estimates to the usual IRT parameterization
works only for the two-parameter logistic model.ltm()
fits the linear one- and two-factor models but
also provides extensions described by Rizopoulos and Moustaki (2006) to include nonlinear latent
variable effects. These are incorporated in the linear predictor of the model, i.e., $$\log\left
(\frac{\pi_{i}}{1-\pi_{i}}\right)=\beta_{0i} + \beta_{1i}z_1 + \beta_{2i}z_2 + \beta_{nl}^tf(z_1, z_2),$$ where $f(z_1, z_2)$ is
a function of $z_1$ and $z_2$ (e.g., $f(z_1, z_2) = z_1z_2$, $f(z_1, z_2) = z_1^2$, etc.) and
$\beta_{nl}$ is a matrix of nonlinear terms parameters (look also at the Examples).
If IRT.param = TRUE
, then the parameters estimates for the two-parameter logistic
model (i.e., the model with one factor) are reported under the usual IRT parameterization, i.e.,
$$\log\left(\frac{\pi_i}{1-\pi_i}\right) = \beta_{1i} (z - \beta_{0i}^*).$$
The linear two-factor model is unidentified under orthogonal rotations on the factors'
space. To achieve identifiability you can fix the value of one loading using the constraint
argument.
The parameters are estimated by maximizing the approximate marginal log-likelihood under the conditional
independence assumption, i.e., conditionally on the latent structure the items are independent Bernoulli
variates under the logit link. The required integrals are approximated using the Gauss-Hermite rule. The
optimization procedure used is a hybrid algorithm. The procedure initially uses a moderate number of EM
iterations (see control
argument iter.em
) and then switches to quasi-Newton (see control
arguments method
and iter.qN
) iterations until convergence.coef.ltm
,
fitted.ltm
,
summary.ltm
,
anova.ltm
,
plot.ltm
,
vcov.ltm
,
item.fit
,
person.fit
,
margins
,
factor.scores
## The two-parameter logistic model for the WIRS data
## with the constraint that (i) the easiness parameter
## for the 1st item equals 1 and (ii) the discrimination
## parameter for the 6th item equals -0.5
ltm(WIRS ~ z1, constr = rbind(c(1, 1, 1), c(6, 2, -0.5)))
## One-factor and a quadratic term
## using the Mobility data
ltm(Mobility ~ z1 + I(z1^2))
## Two-factor model with an interaction term
## using the WIRS data
ltm(WIRS ~ z1 * z2)
## The two-parameter logistic model for the Abortion data
## with 20 quadrature points and 20 EM iterations;
## report results under the usual IRT parameterization
ltm(Abortion ~ z1, control = list(GHk = 20, iter.em = 20))
Run the code above in your browser using DataLab