Dear Experts,
Recently, i want to write my own prepossessing software for personal use and incorporate aComCor method as a main part.
My quesion is regarding how to perferm standard PCA?
In the original paper A Component Based Noise Correction Method (CompCor) for BOLD and Perfusion Based fMRI , they wrote
Compliment with this algorithm is the software is C-PAC, and see this link: https://github.com/Chaogan-Yan/C-PAC/blob/master/CPAC/nuisance/utils.py
they do U, S, Vh = np.linalg.svd(np.dot(Yc, Yc.T)), i.e. they use covariance matrix
but it seems that they do not do variance normalization.
But the script wrote by CaoGan Yan (https://github.com/Chaogan-Yan/DPABI/blob/master/Subfunctions/y_CompCor_PC.m) claims to be in agreement with the paper A Component Based Noise Correction Method (CompCor) for BOLD and Perfusion Based fMRI , but they use [U S V] = svd(AllVolume,'econ'); i.e. they use raw data matrix
1) should i use svd or eig?
2) if svd, should i use covariance matrix or raw data matrix?
3) should i do detrend(linear trend and constant removed) as well as variance normalization?
which should i believe? It really puzzle me for several days, hope for your help.
--
Clark
Forums
1. svd
1. svd
2. here is the math: Y*Yt = USV*(USV)t = USV*VtStUt = US*StUt. U is the same.
3. You can do a study to compare. If not, why not follow the CompCor paper?
Best,
Chao-Gan
Thank you for your kind
Thank you for your kind explantion, and i will follow the paper and make a simulation.