Constructs a matrix of loadings to map nfactor latent variables to nx observed variables. The upper triangle is all zeros to enfactororce linear independence among the loading vectors.


  • values::AbstractVector: vector of values to put in the nonzero lower triangle. They are

filled in order running down the columns from left to right.

  • nx::Integer: Dimension of the data, i.e. the number of rows in the loading matrix
  • nfactor::Integer: Number of factors, i.e. the number of columns in the loading matrix

Gives the number of nonzero entries (i.e. the number of entries in the lower triangle) of the loading matrix for the specified data dimension nx and number of factors nfactor.

varimax(A; gamma = 1.0, minit = 20, maxit = 1000, reltol = 1e-12)

VARIMAX perform varimax (or quartimax, equamax, parsimax) rotation to the column vectors of the input matrix.

Input Arguments

  • A::Matrix{TA}: input matrix, whose column vectors are to be rotated. d, m = size(A).
  • gamma: default is 1. gamma = 0, 1, m/2, and d(m - 1)/(d + m - 2), corresponding to quartimax, varimax, equamax, and parsimax.
  • minit::Int: default is 20. Minimum number of iterations, in case of the stopping criteria fails initially.
  • maxit::Int: default is 1000. Maximum number of iterations.
  • reltol::Float64: default is 1e-12. Relative tolerance for stopping criteria.

Output Argument

  • B::Matrix{Float64}: output matrix, whose columns are already been rotated.

Implemented by Haotian Li, Aug. 20, 2019