AFNI Message Board

Dear AFNI users-

We are very pleased to announce that the new AFNI Message Board framework is up! Please join us at:

https://discuss.afni.nimh.nih.gov

Existing user accounts have been migrated, so returning users can login by requesting a password reset. New users can create accounts, as well, through a standard account creation process. Please note that these setup emails might initially go to spam folders (esp. for NIH users!), so please check those locations in the beginning.

The current Message Board discussion threads have been migrated to the new framework. The current Message Board will remain visible, but read-only, for a little while.

Sincerely, AFNI HQ

History of AFNI updates  

|
March 11, 2009 01:39PM
Short version:

Could someone point me in the direction of some documentation for precisely what the SVD is doing in 3dDeconvolve?

Long version:

I have a rapid event-related design with N conditions, and I am trying to look at the similarity structure of those N conditions across local populations of voxels.

If I use an X matrix with N regressors, and every TR has one and only one condition that it belongs to, then my X matrix is singular. According to the (limited) documentation, if you have two identical regressors, the SVD approach in 3dDeconvolve would equally distribute variance attributable to this pattern between the two regressors. Now I have N variables, each predicted by the other N-1 variables. If I were to simply pass this to 3dDeconvolve, my understanding is that the SVD would "clump" my N regressors the orthogonal N-1 regressors that explain all of the variance in the original N.

My belief was that the SVD is multiplying the data by a contrast matrix of sorts, running the GLM for the product of the X matrix and the contrast matrix, and then dividing the beta vector by the inverse of the contrast matrix. The problem is that if I do this manually, I get very different results:

I should be able to multiply my X matrix by a contrast matrix along the lines of:

3 -1 -1 -1
0 2 -1 -1
0 0 1 -1

This would turn my NxTime matrix into an (N-1)xTime matrix with orthogonal columns, completely eliminating the singularity. But critically, the resulting (N-1)xTime matrix retains the variance between every condition and every other condition, so even though I lose a column of data, I retain all of relationships between variables. I just need to divide the vector of betas by the contrast matrix, to turn my (N-1)x1 vector of betas into an Nx1 vector of betas.

Thus, although the grand mean should be removed, the similarity structure of my regressors should remain the same. That is, for Voxel X, if I were to find that regressors 1 and 2 are similar (e.g., positive), and 3 and 4 are similar (e.g., negative), but 1/2 differ from 3/4, I should find that pattern regardless of whether I let the SVD reduce collinearity or if I do it myself with a contrast matrix.

However this is not true; these methods produce very different results. Why?

Thanks in advance for the help,
-cdm

Subject Author Posted

SVD in 3dDeconvolve

Chris Moore March 11, 2009 01:39PM

Re: SVD in 3dDeconvolve

Bob Cox March 11, 2009 03:09PM

Re: SVD in 3dDeconvolve

Chris Moore March 11, 2009 07:16PM

Re: SVD in 3dDeconvolve

Bob Cox March 12, 2009 10:32AM

Re: SVD in 3dDeconvolve

Chris Moore March 12, 2009 04:53PM