procotWKS {lazy.procrustes}R Documentation

Weighted Orthogonal Procrustes Rotation by Koschat and Swayne's method

Description

Weighted Orthogonal Procrustes Rotation by Koschat and Swayne's method

Usage

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
)

Arguments

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

Details

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.

Value

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.

References

Koschat, M.A., and Swayne, D.F., (1989). A weighted Procrustes criterion. Psychometrika, 56(2), pp. 229-239.

Examples

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 )


[Package lazy.procrustes version 0.1.4 Index]