Hi all,
I have run PCA and got the model, but I have not find any function to get the principal components and variances.
https://multivariatestatsjl.readthedocs.io/en/latest/pca.html
any hints would be appreciated.
thanks in advance!
Hi all,
I have run PCA and got the model, but I have not find any function to get the principal components and variances.
https://multivariatestatsjl.readthedocs.io/en/latest/pca.html
any hints would be appreciated.
thanks in advance!
Have you tried
transform(M, x)
Transform observations x into principal components.
and
principalvars(M)
The variances of principal components.
I haven’t actually used the package myself but they sound like they do what you’re after?
thanks, should be that function. did not noticed that …
actually, transform is not what I want. transform
is reducing the data to lower dimension data, rather than getting the principal directional vector (elgenvector of covariance matrix).
I have made my own function to do it based on svd:
"""
pca(data)
perform PCA using SVD
inputs:
- data: M x N matrix of input data. (M dimensions, N trials)
outputs:
- PC: each column is a principle component
- V: M x 1 matrix of variances
"""
function pca(data::Array{T,2}) where T
X = data .- mean(data, dims=2)
Y = X' ./ sqrt(T(size(X,2)-1))
U,S,PC = svd(Y)
S = diagm(0=>S)
V = S .* S
# find the least variance vector
indexList = sortperm(diag(V); rev=true)
PCs = map(x->PC[:,x], indexList)
return PCs, diag(V)[indexList]
end
I have data.
A need to do all step by step , without function.
What is ‘T’ in line Y = X’ ./ sqrt(T(size(X,2)-1)) ?
Paul