Recovers latent stimulus positions from perceptual placement data by
estimating respondent-specific intercepts \(a_i\) and slopes
\(b_i\) in the model
$$z_{ij} = a_i + b_i \hat{z}_j + \epsilon_{ij}.$$
The stimulus positions are Aldrich and McKelvey's least-squares
solution: each respondent's placements are mapped onto the common
scale by the best affine transformation, and \(\hat z\) minimises
the total squared error
\(\sum_i \lVert X_i c_i - \hat z \rVert^2\), \(X_i = [1, z_i]\),
subject to \(\hat z^\top \hat z = 1\) and \(1^\top \hat z = 0\).
Concentrating out \(c_i\) leaves
\(\hat z^\top \sum_i (I - P_i) \hat z\) with \(P_i\) the
projection onto the columns of \(X_i\), so \(\hat z\) is the
eigenvector of \(\sum_i (I - P_i)\) with the smallest eigenvalue
orthogonal to the constant. Respondents with a missing placement, or
who place every stimulus at the same point, are left out, as
basicspace::aldmck does. The closed form is evaluated natively; on
integer placement scales it equals basicspace::aldmck's stimuli
(standardised) to rounding (\(< 10^{-15}\)). basicspace truncates
every placement to an integer (as.integer) before scaling, so on
non-integer data the two differ and this function uses the values as
given. Positions are standardised to mean 0 and sd 1 and the
first stimulus is put on the left. The respondent intercepts and slopes
are the per-respondent least squares regression of the
reported placements on those positions, so they are defined for every
respondent with at least two placements (basicspace itself reports
them only for respondents it scales against a self-placement, which
this function does not take).
Value
A list with components zhat (stimulus positions), alpha,
beta, weights, iterations (NA, the solution is closed form),
converged, and engine (always "native").
References
Aldrich, J. H. and McKelvey, R. D. (1977). "A Method of Scaling with Applications to the 1968 and 1972 Presidential Elections." American Political Science Review, 71(1), 111-130.
Poole, K. T. (1998). "Recovering a Basic Space from a Set of Issue Scales." American Journal of Political Science, 42(3), 954-993.
Armstrong, D. A., Bakker, R., Carroll, R., Hare, C., Poole, K. T., and Rosenthal, H. (2021). Analyzing Spatial Models of Choice and Judgment, 2nd ed. Chapman & Hall/CRC.
Examples
set.seed(1)
truth <- c(-1.2, -0.4, 0.1, 0.9, 1.5)
Z <- t(sapply(1:40, function(i) 4 + rnorm(1, 0, 0.3) +
runif(1, 0.6, 1.4) * truth + rnorm(5, 0, 0.3)))
fit <- morie_spatial_voting_aldrich_mckelvey(Z)
round(fit$zhat, 2)
#> [1] -1.28 -0.59 -0.05 0.67 1.25
round((truth - mean(truth)) / sd(truth), 2)
#> [1] -1.30 -0.55 -0.08 0.68 1.24
