Print

Print


Dear experts,

I am writing to ask you a question regarding to the computation of “eigenvariate” in spm_regions.m of SPM8.  

I have compared the first eigenvariate returned by spm_regions.m with the first principal component score returned by matlab’s princomp.m for a mask ROI applied to the time series data from a single subject.  The time series of these two first principal component scores are different, as are the eigenimages depicting the spatial map of the component weights.  In trying to understand the basis for the difference, it appears that matlab’s princomp.m function demeans the columns of the data matrix (rows are time points, columns are voxels) before passing the data matrix y to the singular value decomposition routine in matlab (svd.m).  In contrast, SPM’s spm_regions.m does not demean the columns of the data matrix before passing matrix y'y to the svd routine. 

I am attaching the comparison (see the attached screenshot) of the first principal component score computed by the matlab built in routine princomp.m  (labeled as “matlab”) and the output of spm_regions.m (labeled as “spm”). It is obvious that the one computed by princomp.m has much greater temporal variance than the one computed with spm. The eigenimages are also different. 

Could you please explain why the first “eigenvariate” calculated by SPM does not correspond to the first principal component score returned by matlab’s princomp.m function, and also why the SPM routine does not appear to mean-correct the columns of the time x voxels data matrix?

Thank you very much.

Taihao