How are beta coefficients of the Natural Scenes Dataset calculated?

The Natural Scenes Dataset features raw data as well as beta coefficients of a ridge regression. For a given individual of this dataset, the array of beta coefficients is of size (V, N) where V is the number of voxels, N the number of images. Each of the N images was presented several times to a given individual, allowing to leverage several trials to compute these coefficients.

I don’t understand how these coefficients were obtained.

As stated in their research paper, there are 3 ingredients:

  1. as a first step, each voxel is associated with a Hemodynamic Response Function selected amongst a set of 20 possible HRFs. Explicitly, how does one determine which HRF best fits the activity of a given voxel?
  2. as a second step, GLMdenoise is used to compute beta coefficients ; however, in my understanding, GLM denoise takes as input a design matrix and outputs the shape of the HRF as well as beta coefficients. However, since the first step aims at determining the best fitting HRF for a given voxel, why use GLM denoise instead of a classical approach? More generally, I don’t understand how one can solve this regression problem when the HRF is different for each voxel ; doesn’t it lead to humongously big matrices?
  3. they use a different solver for the ridge regression problem

Thank you a lot for your help! :blush:

1 Like

For question 1, the short answer is that cross-validation is used to select which HRF fits for that given voxel. The long answer is that this is similar to the approach used in the GLMsingle toolbox, and you can find more about that here: https://elifesciences.org/articles/77599

2 - GLMdenoise would typically optimize a single HRF for the entire dataset, using an iterative approach, however that is optional. If you’ve already decided on the voxel by voxel basis what what the “optimal” HRF is, then this step is not done - the selected HRFs (with height scaled to 1, I believe) are used. As for the giant matrix issue - it is rather that you know some voxels use a certain HRF, so you fit all of those, other voxels use the next HRF in the library, fit all of those and so and so forth. So, less humongous matricies - instead, a whole lot of them. And specifically the amplitude of that custom HRF is fit at the single trial level, as you’ve noticed. You get a beta for each and every stimulus presentation.

3 - I’m less familiar with ridge regression, but again, cross validation is used to select the correct ridge parameter, using yet another tool - fracridge : fractional ridge regression — fracridge 2.0 documentation

2 Likes