Skip to contents

ProcrustesOblique: Browne's oblique target rotation \(L = A (T')^{-1}\) minimising \(\|L - B\|^2\) with unit-length columns of \(T\), by Jennrich's gradient projection (as GPArotation::targetQ: Barzilai-Borwein steps with a non-monotone Armijo search over the last fwindow iterations); NA targets are unspecified. MdsReflect: axis signs agreeing with a target, or making each axis's largest-magnitude coordinate positive. MdsFlip: orthogonal Procrustes of Y onto X; a negative determinant flags a reflection, with per-axis correlations. MdsPolarity: orient each dimension so its anchor object is non-negative (W-NOMINATE polarity), with the poles. MdsAnisotropy: covariance eigenvalues, ratio \(\lambda_1 / \lambda_p\), principal-axis angle in degrees and eccentricity. Identical to the Python arm morie.fn.mdsext; anchors and poles are 1-based here.

Usage

ProcrustesOblique(A, target, eps = 1e-08, maxit = 5000L, fwindow = 10L)

MdsReflect(X, target = NULL)

MdsFlip(X, Y)

MdsPolarity(X, anchors)

MdsAnisotropy(X)

Arguments

A

Loading or configuration matrix.

target

Target matrix.

eps, maxit

Convergence tolerance and iteration limit.

fwindow

Non-monotone line-search window.

X, Y

Configurations.

anchors

Row index per dimension.

Value

List.

References

Browne, M. W. (2001). An overview of analytic rotation in exploratory factor analysis. Multivariate Behavioral Research 36, 111-150.

Jennrich, R. I. (2002). A simple general method for oblique rotation. Psychometrika 67, 7-19.

Borg, I. and Groenen, P. J. F. (2005). Modern Multidimensional Scaling, 2nd ed. Springer.

Examples

A <- rbind(c(0.8, 0.1), c(0.7, 0.2), c(0.2, 0.9), c(0.1, 0.7))
ProcrustesOblique(A, rbind(c(1, 0), c(1, 0), c(0, 1), c(0, 1)))$Phi
#>           [,1]      [,2]
#> [1,] 1.0000000 0.5472815
#> [2,] 0.5472815 1.0000000
MdsFlip(rbind(c(0, 0), c(1, 0), c(0, 2)), rbind(c(0, 0), c(-1, 0), c(0, 2)))$reflected
#> [1] TRUE
MdsAnisotropy(rbind(c(-2, 0), c(2, 0), c(0, -1), c(0, 1)))$ratio
#> [1] 4