nag_mv_promax (g03bdc) (PDF version)
g03 Chapter Contents
g03 Chapter Introduction
NAG C Library Manual

NAG Library Function Document

nag_mv_promax (g03bdc)

+ Contents

    1  Purpose
    7  Accuracy

1  Purpose

nag_mv_promax (g03bdc) calculates a ProMax rotation, given information following an orthogonal rotation.

2  Specification

#include <nag.h>
#include <nagg03.h>
void  nag_mv_promax (Nag_RotationLoading stand, Integer n, Integer m, const double x[], Integer pdx, const double ro[], Integer pdro, double power, double fp[], Integer pdfp, double r[], Integer pdr, double phi[], Integer pdphi, double fs[], Integer pdfs, NagError *fail)

3  Description

Let X and Y denote n by m matrices each representing a set of n points in an m-dimensional space. The X matrix is a matrix of loadings as returned by nag_mv_orthomax (g03bac), that is following an orthogonal rotation of a loadings matrix Z. The target matrix Y is calculated as a power transformation of X that preserves the sign of the loadings. Let Xij and Yij denote the i,jth element of matrices X and Y. Given a value greater than one for the exponent p:
Yij = δij Xij p ,
for
The above power transformation tends to increase the difference between high and low values of loadings and is intended to increase the interpretability of a solution.
In the second step a solution of:
XW=Y , X,Y n×m , ​ W m×m ,
is found for W in the least squares sense by use of singular value decomposition of the orthogonal loadings X. The ProMax rotation matrix R is then given by
R=OW W~ , O, ​ W~ m×m ,
where O is the rotation matrix from an orthogonal transformation, and W~ is a matrix with the square root of diagonal elements of WTW-1 on its diagonal and zeros elsewhere.
The ProMax factor pattern matrix P is given by
P = X W W~ , P n×m ;
the inter-factor correlations Φ are given by
Φ= QT Q-1 , Φ m×m ;
where Q=WW~; and the factor structure S is given by
S=PΦ , S n×m .
Optionally, the rows of target matrix Y can be scaled by the communalities of loadings.

4  References

None.

5  Arguments

1:     standNag_RotationLoadingInput
On entry: indicates how loadings are normalized.
stand=Nag_RoLoadStand
Rows of Y are (Kaiser) normalized by the communalities of the loadings.
stand=Nag_RoLoadNotStand
Rows are not normalized.
Constraint: stand=Nag_RoLoadNotStand or Nag_RoLoadStand.
2:     nIntegerInput
On entry: n the number of points.
Constraint: nm.
3:     mIntegerInput
On entry: m, the number of dimensions.
Constraint: m1.
4:     x[n×pdx]const doubleInput
Note: the i,jth element of the matrix X is stored in x[i-1×pdx+j-1].
On entry: the loadings matrix following an orthogonal rotation, X.
5:     pdxIntegerInput
On entry: the stride separating matrix column elements in the array x.
Constraint: pdxm.
6:     ro[m×pdro]const doubleInput
Note: the i,jth element of the matrix is stored in ro[i-1×pdro+j-1].
On entry: the orthogonal rotation matrix, O.
7:     pdroIntegerInput
On entry: the stride separating matrix column elements in the array ro.
Constraint: pdrom.
8:     powerdoubleInput
On entry: p, the value of exponent.
Constraint: power>1.0.
9:     fp[n×pdfp]doubleOutput
Note: the i,jth element of the matrix is stored in fp[i-1×pdfp+j-1].
On exit: the factor pattern matrix, P.
10:   pdfpIntegerInput
On entry: the stride separating matrix column elements in the array fp.
Constraint: pdfpm.
11:   r[m×pdr]doubleOutput
Note: the i,jth element of the matrix R is stored in r[i-1×pdr+j-1].
On exit: the ProMax rotation matrix, R.
12:   pdrIntegerInput
On entry: the stride separating matrix column elements in the array r.
Constraint: pdrm.
13:   phi[m×pdphi]doubleOutput
Note: the i,jth element of the matrix is stored in phi[i-1×pdphi+j-1].
On exit: the matrix of inter-factor correlations, Φ.
14:   pdphiIntegerInput
On entry: the stride separating matrix column elements in the array phi.
Constraint: pdphim.
15:   fs[n×pdfs]doubleOutput
Note: the i,jth element of the matrix is stored in fs[i-1×pdfs+j-1].
On exit: the factor structure matrix, S.
16:   pdfsIntegerInput
On entry: the stride separating matrix column elements in the array fs.
Constraint: pdfsm.
17:   failNagError *Input/Output
The NAG error argument (see Section 3.6 in the Essential Introduction).

6  Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_INT
On entry, m=value.
Constraint: m1.
On entry, pdfp=value.
Constraint: pdfp>0.
On entry, pdfs=value.
Constraint: pdfs>0.
On entry, pdphi=value.
Constraint: pdphi>0.
On entry, pdr=value.
Constraint: pdr>0.
On entry, pdro=value.
Constraint: pdro>0.
On entry, pdx=value.
Constraint: pdx>0.
NE_INT_2
On entry, n=value and m=value.
Constraint: nm.
On entry, pdfp=value and m=value.
Constraint: pdfpm.
On entry, pdfs=value and m=value.
Constraint: pdfsm.
On entry, pdphi=value and m=value.
Constraint: pdphim.
On entry, pdr=value and m=value.
Constraint: pdrm.
On entry, pdro=value and m=value.
Constraint: pdrom.
On entry, pdx=value and m=value.
Constraint: pdxm.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
NE_REAL_ARG_LE
On entry, power=value.
Constraint: power>1.0.
NE_SVD_FAIL
SVD failed to converge.

7  Accuracy

The calculations are believed to be stable.

8  Further Comments

None.

9  Example

This example reads a loadings matrix and calculates a varimax transformation before calculating P, R and σ for a ProMax rotation.

9.1  Program Text

Program Text (g03bdce.c)

9.2  Program Data

Program Data (g03bdce.d)

9.3  Program Results

Program Results (g03bdce.r)


nag_mv_promax (g03bdc) (PDF version)
g03 Chapter Contents
g03 Chapter Introduction
NAG C Library Manual

© The Numerical Algorithms Group Ltd, Oxford, UK. 2012