Suggested Choices for Basis Functions
Here are some recommended basis functions to apply to 3dDeconvolve using
'-stim_times' under various circumstances. Feel free to use other basis
functions, but preferably when you are pretty sure of what you are doing.
Note that when the option '-basis_normall MAX' is applied, all subsequent
basis functions will have a maximum height of MAX. Otherwise, the default
height is 1, except for the BLOCK() function. In these common examples,
there is no need to use '-basis_normall' at all.
deconvolution (variable-shape regression): TENT(b,c,n)
TENT(b,c,n)
b : The start time (after stimulus), usually 0.
c : The end time, should be the maximum expected response duration
(perhaps 'rounded' to the next highest TR time).
n : The number of TENT functions to apply. Note that since the first
and last TENTs are half-TENTs, n TENTs covers n-1 intervals, where
each interval is shared by 2 TENTs (crossing in an X-pattern).
One TENT will last for 2 intervals (rise for 1, fall for 1).
Note that 'n' can be anything greater than 1. Often users wish to
have the TENTs TR-locked, meaning each TENT is centered at a TR
time. That way the TENTs can be viewed as a TR-locked hemodynamic
response time series (having n values, and lasting n-1 TRs).
For instance, if the TR is 3 seconds, and the expected HRF is 15
seconds, one might use TENT(0,15,6). Note tsat 15/(6-1) is 3.
regression (fixed-shape regression): GAM, BLOCK(d,p) or BLOCK(d)
GAM
If the stimuli are brief (0-2 seconds, say), and are of the same
length (or have the same average length, across stimulus classes),
then GAM might make sense. The GAM curve lasts about 12 seconds.
In this case, the beta weights represent the peak height of the
resulting GAM curves found in the data.
BLOCK(d,p)
d : The duration of a single stimulus event (maybe 1-30 seconds).
p : The peak amplitude of the curve, usually 1.
BLOCK() is created by convolving an incomplete gamma function (very
similar to a GAM function) with a boxcar function (equal to 1 over
the stimulus duration, and 0 elsewhere), where each has a height of 1.
It will convolve to a maximum height of about 5.114, once the block
length reaches about 15 seconds. Above 15 seconds, the curve will
plateau at 5.114 before returning to 0. The BLOCK curve lasts about
15.8 seconds longer than the stimulus duration. So if each stimulus
lasts 20 seconds, then the basis function for a single such stimulus
would last (be non-zero) for 35.8 seconds.
If the stimuli are longer (than 1 or 2 seconds, say), and the stimuli
of each stimulus class last the same duration, then the 2-parameter
BLOCK() function might be used, usually with p=1, where p is the
height of the curve.
Note that the stimulus timing file would have only 1 stimulus per
BLOCK. If each stimulus lasts 20 seconds, then the basis function
for a single such stimulus would last for about 35.8 seconds, namely
BLOCK(20,1).
In this case, each beta weight represents the peak height of the
corresponding BLOCK curve for that class (assuming p=1), i.e. the
beta weight is the magnitude of the response to the entire stimulus
block.
BLOCK(d)
d : The duration of a single stimulus event (maybe 1-30 seconds).
It is recommended not to use '-basis_normall 1' with BLOCK(d), unless
you are pretty sure of yourself.
As opposed to the 2-parameter block function, this function would
be used when the stimulus lengths differ between classes, i.e. if
stimulus class 1 has 7-second stimuli, and stimulus class 2 has
11-second stimuli.
A longer stimulus is expected to result in a bigger response, perhaps
up to a limit of a 15-second stimulus. So if any stimulus class has
a duration less than 15 seconds, and that duration differs from that
of any other stimulus class, this 1-parameter BLOCK() function may be
good to use. The bigger response will be accounted for by the basis
functions, allowing a valid comparison between the beta weights.
As an example, imagine that class 1 is for a 3-second stimulus of some
type. If class 2 is for a 7-second stimulus which is exactly the same
as the class 1 stimulus, just longer, we would hope to be able to say
that these have the same response (in some way), because they are the
same type of stimulus. But clearly, the 7-second stimuli ought to
generate a bigger response than the 3-second stimuli.
Assuming the brain works as we hope, then using BLOCK(3) and BLOCK(7)
for the basis functions of these 2 classes would result in exactly
the same beta weights output by 3dDeconvolve, while the columns of
the X-matrix would differ by a scalar.
---
Recall that a BLOCK() curve is created by convolving a function
similar to GAM with a boxcar function. In the case of a 1-parameter
BLOCK() function, each beta weight represents not the peak height of
the corresponding BLOCK curve (as they did with the 2-parameter
BLOCK() function), but the height of the underlying incomplete gamma
variate function that was convolved with the boxcar function.
So the beta weight would represent not the magnitude of the response
to a single, long stimulus, but the magnitude of the response as if
the stimulus were instantaneous. This is meant to remove the
differences due to different stimulus durations.
7 May 2007 — rickr@mail.nih.gov