Print

Print


Dear Darren,

thanks four your answer.  I also think that both solutions you suggested
are viable.  However, upon having a more detailed look at both
spm_regions and spm_peb_ppi, I stumbled upon two other questions that
I would like to cross-check with you.

The first is whether spm_peb_ppi should _always_ remove the null space,
and the second suggests another way of doing so.

If I understand the code of spm_peb_ppi correctly, then the function is
reading the VOI*.mat file that has been created by spm_regions and,
crucially, assigns the data vector Y to xY.u (line 198).  xY.u
on the other hand is identical to the extracted time series created by
spm_regions (which is also called Y to add some more confusion).  The
null space X0 is removed from this data vector which was the topic of my
previous posting (line 204).

Now, spm_regions also offers the possibility to remove the null space of
an F-constrast (line 193)

%-subtract Y0 = XO*beta,  Y = Yc + Y0 + e
%---------------------------------------------------------------
y     = y - spm_FcUtil('Y0',SPM.xCon(xY.Ic),SPM.xX.xKXs,beta);

Later, the first eigenvariate is extracted (via svd) from this vector y,
which -- after some further transformation -- is returned as xY.u or Y.

Here comes my question: If I already adjusted for some F-contrast (e.g.
effects of interest) when I extracted the first eigenvariate, is it
still appropriate to remove the null space X0 in spm_peb_ppi again? 

And if yes, maybe the abovementioned X0 removal of spm_regions (which
uses the pseudoinverse of X, [see spm_FcUtil and spm_sp]) would get
around the problem of zero columns X0, for which the inverse is not
defined.

Thanks (as always) for your insights.
Jan




On 2005-06-17 (Fri) at 12:22:27 -0500, Darren Gitelman <[log in to unmask]> wrote:
> Dear Mike, Jan and SPM
> 
> I tried this out and you are clearly right. SPM  (i.e., spm_regions) 
> includes the zero columns from non-modeled sessions in X0. I think this is 
> incorrect. The two ways I thought of to deal with this would be
> 
>  1) use pinv instead of inv whenever something like this might come up 
> with the null space matrix. I don't know if it would work in all instances.
> 
>   2) Another possibility would be to fix spm_regions. My suggestion is the 
> code below. However, it should be verified that doing this to X0 is 
> legitimate.
> 
> I don't know which of the above is the "better" overall solution. The 
> actual answers differ very little from each other using the two methods. 
> The cumulative absolute difference in Yc (line 204 of spm_peb_ppi) using a 
> simulated design was around 4 x 10^-16.  This is probably within rounding 
> error.
> ------------------------------------------------
> This code will remove all zero columns from a matrix. It could be placed, 
> for example, as an internal function in spm_regions and then called after 
> line 206 as xY.X0 = removezerocols(xY.X0);
> 
> I couldn't think of a way to vectorize this, but since the find function is 
> speedy and the matrix is shrinking it shouldn't take much time to perform. 
> I tried it on a matrix of 1x10^6 rows and 8 columns (probably bigger than 
> any X0). The matrix had 3 all zero columns and the code only took 1.2 
> seconds. The time is similar if you had a 10,000 row x 100 column X0 with 
> 50% zero columns. With a more usual size X0 the code takes 0.01 seconds.
> 
> %=================
> function m = removezerocols(m)
> % REMOVEZEROCOLS - removes columns of all zeros from a matrix.
> %
> for i = size(m,2):-1:1
>     if isempty(find(m(:,i)))
>         m(:,i) = [];
>     end
> end
> return
> 
> ----Darren
> 
> At 06:57 AM 6/17/2005, Jan Gläscher wrote:
> >Dear Darren and others,
> >
> >I came across a peculiarity in the combination of data extraction via
> >the VOI button and subsequently setting up a PPI.
> >
> >Here the basic design specs:
> >- single subject analysis with 3 sessions
> >- extract data with VOI button for one session (e.g. 1st session) with
> >  adjustment for effects of interest (null space X0 comprises only the
> >  session constants)
> >- PPI setup: (1) 'psychophysiological interaction'
> >                        (2) include only one regressor (modelling a block 
> >                        of
> >                             pain stimulation)
> >                        (3) weight for this regressor: 
> >1
> >
> >
> >The warning mesage that I get when setting up the PPI is the following:
> >
> >>> Warning: Matrix is singular to working precision.
> >(Type "warning off MATLAB:singularMatrix" to suppress this warning.)
> >> In /apps/public/spm02/spm_peb_ppi.m at line 204
> >
> >
> >Looking at line 204 in spm_peb_ppi.m,
> >
> >Yc    = Y - X0*inv(X0'*X0)*X0'*Y;
> >
> >I realize that the warning can be traced to the null space X0, because
> >the inverse of X0 is not defined.  Consequently, PPI.Y is a vector of
> >NaN's.
> >
> >X0 is created by spm_regions.m when I press the VOI-button and
> >comprises in my situation the session-specific block partition of the
> >design matrix (xX.iB) and high-pass filter (xX.K).  Thus, in the
> >3 session case the first part of X0 has three column, the first with
> >1's and the second and third with 0's.  Because these are perfectly
> >collinear the inverse of X0'*X0 in line 204 is not defined.
> >
> >Here are my questions:
> >(1) Am I doing something wrong when I adjust for the effects of
> >        interest when I extract the data with spm_regions?
> >
> >(2) Is this a problem at all for the PPI computations?
> >
> >(3) Conceptually speaking, shouldn't the null space X0 only comprise
> >        the "real" session constant (the column of 1's) and not the entire
> >        block partition of the design matrix (i.e., leave out the columns
> >        of 0's)? This would allieviate the problem with perfect
> >        collinearity of some of the columns in X0.
> >
> >Thank you for your comments in input.
> >Jan
> >
> >--
> >Jan Gläscher                  NeuroImage Nord
> >+49-40-42803-7890 (office)    Dept. of  Systems Neuroscience, Bldg S10
> >+49-40-42803-9955 (fax)       University Medical Center Hamburg-Eppendorf
> >[log in to unmask]  Martinistr. 52
> >                              20246 Hamburg
> >                              Germany
> >http://www.uke.uni-hamburg.de/kliniken/neurologie/index_16969.php
> >-------------------------------------------------------------------------
> >GnuPG/PGP key id: FEC4B55C
> >fingerprint: 5A36 1EF6 8472 117E 805A  F240 3146 A410 FEC4 B55C
> >-------------------------------------------------------------------------
> >
> 
> 
> -------------------------------------------------------------------------
> Darren R. Gitelman, M.D.
> Cognitive Neurology and Alzheimer¹s Disease Center
> Northwestern Univ., 320 E. Superior St., Searle 11-470, Chicago, IL 60611
> Voice:   (312) 908-9023     Fax:  (312) 908-8789
> ------------------------------------------------------------------------- 
> 
> 
> 

-- 
Jan Gläscher                  NeuroImage Nord
+49-40-42803-7890 (office)    Dept. of  Systems Neuroscience, Bldg S10
+49-40-42803-9955 (fax)       University Medical Center Hamburg-Eppendorf
[log in to unmask]  Martinistr. 52
                              20246 Hamburg
                              Germany
http://www.uke.uni-hamburg.de/kliniken/neurologie/index_16969.php
-------------------------------------------------------------------------
GnuPG/PGP key id: FEC4B55C
fingerprint: 5A36 1EF6 8472 117E 805A  F240 3146 A410 FEC4 B55C
-------------------------------------------------------------------------