procotWKS {lazy.procrustes} | R Documentation |
Weighted Orthogonal Procrustes Rotation by Koschat and Swayne's method
procotWKS( A, C, D2, Tinit = diag(ncol(A)), Aainit = NULL, maxiter = 200, eps = 1e-06, epsd = 0.001, SQUAREM = 3, nSQUAREM = 1, minalpha = -999, maxalpha = -1, always = 0, reset1 = 0, reset2 = 1, print = 1 )
A |
The matrix to be rotated |
C |
The target matrix |
D2 |
The weight matrix |
Tinit |
initial value of T matrix |
Aainit |
= Aa matrix which stays constant in this function. |
maxiter |
max # of iterations |
eps |
convergence criterion for rmse |
epsd |
convergence criterion for maximum absolute differences. |
SQUAREM |
= 3 : See the help of iSQUAREM in lazy.accel package. |
nSQUAREM |
= 1 : See the help of iSQUAREM in lazy.accel package. |
minalpha |
= -999 : See the help of iSQUAREM in lazy.accel package. |
maxalpha |
= -1 : See the help of iSQUAREM in lazy.accel package. |
always |
= 1 : See the help of iSQUAREM in lazy.accel package. |
reset1 |
= 0 : See the help of iSQUAREM in lazy.accel package. |
reset2 |
= 1 : See the help of iSQUAREM in lazy.accel package. |
print |
= 1 to print the result |
This program minimizes
RSS = Tr( ( C - A T ) D2 ( C - A T )' )
w.r.t T subject to T'T = TT' = I,
using Koschat and Swayne (1991) algorithm.
The missing elements of C matrix will be estimated so that they also
minimize RSS.
A list of B=A T, T, Cm, A, C, D2, rmse, rmse0
where B is the rotated matrix, T is the rotation matrix,
Cm is the target matrix with its missing elements replaced by LSE,
rmse and rmse0 are, resp, weighted and unweighted RMSE.
Koschat, M.A., and Swayne, D.F., (1989). A weighted Procrustes criterion. Psychometrika, 56(2), pp. 229-239.
seed <- 1701; set.seed(seed) nvar <- 20; ndim <- 4 errstd <- 0.1 resg <- gendataWmm( 1, nvar, ndim ) A <- resg$A; Cg <- resg$C; Tg <- resg$T C <- resg$C + errstd*matrix(rnorm(nvar*ndim),nvar) pmiss <- 0.5 locmiss <- unique( sample(1:(nvar*ndim), pmiss*(nvar*ndim), replace=1) ) C[locmiss] <- NA V <- diag(ndim) V <- matrix(rnorm(nvar*ndim),nvar); V <- t(V)%*%V/nvar Print(A,C,V) res <- procotWKS( A, C, V )