% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/information.R
\name{test_info}
\alias{test_info}
\title{Test Information Function and Conditional Standard Error}
\usage{
test_info(item_params, theta = seq(-4, 4, by = 0.1), model = NULL, D = 1)
}
\arguments{
\item{item_params}{A data frame of item parameters (see \code{\link{item_info}}).}

\item{theta}{A numeric vector of ability values at which to evaluate the
test information (default = \code{seq(-4, 4, by = 0.1)}).}

\item{model}{Optional model override (see \code{\link{item_info}}).}

\item{D}{Scaling constant for the dichotomous logistic metric (default
\code{1}).}
}
\value{
A data frame with one row per theta point and the columns:
\itemize{
\item \code{theta}: the ability value.
\item \code{test_info}: the test information (sum of item information).
\item \code{sem}: the conditional standard error of measurement,
\eqn{1 / \sqrt{test\_info}}.
\item \code{reliability}: the marginal-style conditional reliability
\eqn{TIF / (TIF + 1)} for a standard-normal ability scale.
}
}
\description{
Computes the test information function (TIF) as the sum of all item
information values at each ability point, together with the conditional
standard error of measurement (SEM). The test information function
summarizes where along the ability scale the test measures most precisely,
and the conditional SEM (\eqn{1 / \sqrt{TIF}}) translates that precision back
onto the theta metric. This is a routine part of test evaluation and form
assembly in operational testing programs.
}
\examples{
  set.seed(123)
  sim <- sim_irt(n_people = 400,
                 item_structure = list(list(model = "2PL", n_items = 10)))
  fit <- binary_irt(sim$resp, model = "2PL", method = "EM",
                    control = list(max_iter = 15, verbose = FALSE))

  tif <- test_info(fit$item_params, theta = seq(-3, 3, by = 0.5))
  print(tif)

  # The ability where the test is most informative
  tif$theta[which.max(tif$test_info)]
}
\seealso{
\code{\link{item_info}}
}
