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 07:16PM
Apologies. I'll try to be more clear.

The 3dDeconvolve documentation clearly outlines the matrix algebra that is employed by 3dDeconvolve for estimating beta and F values for the -nosvd option; I haven't found any documentation for what 3dDeconvolve does differently with the -svd option.

I am interested in looking at the similarity structure between variables in a rapid event-related design. Every timepoint corresponds to one and only one condition, so the unwavered X matrix looks something like this:

x =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 1 0 0
0 0 1 0
0 0 0 1
1 0 0 0

where the rows are timepoints and the columns are 4 regressors. Clearly that matrix is singular. But if I am only interested in the differences between conditions, I can multiply this X matrix by a contrast matrix, such as:

c' =
1 1 -1 -1
1 -1 0 0
0 0 1 -1

This will retain all of the variance between conditions, but remove the collinearity. If I ran the product of (X*c) through 3dDeconvolve, then I would get 3 betas that reflect the differences between the 4 conditions. The first beta would reflect the difference between regressors [1, 2] and regressors [3, 4]. If I wanted estimates of each condition, I would need to reconstruct the individual betas by dividing by the contrast matrix, c.

I always thought that AFNI was doing something similar with the SVD step in 3dDeconvolve: by running an SVD on your X matrix, you end up with a matrix of the same size, but with orthogonal regressors; all of the variance in your original X matrix is still there, but its distributed differently across the N regressors.

If you pass the SVDed X matrix through the 3dDeconvolve GLM, you wouldn't suffer from collinearity, but just like in the contrast matrix case above, your betas no longer reflect conditions, they reflect principle components. To extract the betas for each condition, you would have to use the inverse of the SVD transformation.

This seemed to jive with the documentation that said that if two regressors are identical, 3dDeconvolve will run, and it will split the variance explained in Y equally between two. Unless my intuition is misleading me, I would expect this to be the outcome of the process of (1) using a transformation matrix (SVD) to create principle components from your X matrix; (2) estimating betas for each of the principle components in a GLM; and (3) use the inverse of the transformation matrix from step (1) and the PC betas to estimate betas for each condition.

Before continuing, is this account generally correct? I'd imagine that you wouldn't actually need to go through each of these steps explicitly, but is this in principle what the SVD is achieving?

Thanks,
-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