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?

1 Like

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