% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/person.R
\name{person_extrapolated}
\alias{person_extrapolated}
\title{Person measures with extrapolated extreme scores}
\usage{
person_extrapolated(fit)
}
\arguments{
\item{fit}{A fitted object from \code{\link{rasch}} (equal
discriminations; not EFRM).}
}
\value{
The fit's person table with two added columns,
  \code{theta_extrapolated} and \code{se_extrapolated}: equal to
  \code{theta} and \code{se} for non-extreme persons, extrapolated for
  extreme persons. Patterns with fewer than three interior scores cannot
  be extrapolated and keep their Warm values.
}
\description{
Extreme persons (zero or maximum raw score on their observed items) are
excluded from calibration, but they cannot be left out of group
comparisons; Andrich and Marais (2019, ch. 10) therefore describe an
extrapolated measure for them,
continuing the growth of the score-to-score differences so the last
difference is the geometric mean of its neighbours (see
\code{\link{score_table}}). This helper applies the same rule to the
person table: for each missing-data pattern with extreme persons, the
score-to-measure conversion over that pattern's items is extrapolated at
its ends, and the extreme persons receive the extrapolated location with
the standard error \eqn{1/\sqrt{I(\theta)}} evaluated there. Non-extreme
persons keep their estimates unchanged. The extrapolation continues the
Warm (weighted likelihood) conversion, matching the package's person
estimates.
}
\examples{
set.seed(1)
d <- seq(-2, 2, length.out = 8)
X <- matrix(rbinom(300 * 8, 1, plogis(outer(rnorm(300, 0, 2), d, "-"))), 300, 8)
colnames(X) <- paste0("I", 1:8)
fit <- rasch(X)
pe <- person_extrapolated(fit)
head(pe[pe$extreme, c("theta", "theta_extrapolated", "se", "se_extrapolated")])
}
