
Hands-on training
Multivariate pattern analysis (MVPA)
Here’s you MVPA starter kit. We will do this in 2 parts. The first is a demo to really get deep into the concepts and ideas behind MVPA. The second is an exercise for you to get your feet wet. We will go over some common algorithms and pitfalls.
(1) The demo is simple, heavily commented, and requires no real data. You will need
The MVPA demo
A bunch of classification algorithms. First, to do a univariate classification. Then multivariate classification based on correlation, normalized Euclidean distance, and the Mahalanobis distance.
get all at once: zip-file
(2) This exercise is for you to puzzle with. For this, you will need also some example data.
After the workshop, I will post a solution here.
get all at once: zip-file
Inverted encoding model (IEM)
Here we’ll use some real fMRI data from a single subject recorded during a working memory experiment. If you’re interested afterwards, the data we will use here comes from this paper by Rademaker, Chunharas, & Serences (2019).
For now, you will need
The IEM demo
The example data
This IEM function, where I’ve wrapped the whole demo in a user friendly format (for experiments using orientations from 1:180 degree).
get all at once: zip-file
Simulate your own voxel data
Here’s a little bonus for those of you wanting to create some fake voxel data, because to start practicing with MVPA and IEM you don’t even need real fMRI data, just simulate some! I've written some very bare-bones code to get you started. There's a number of ingredients here
(1) A paper by Liu, Cable, & Gardner (2018), that I discussed in the general introduction.
(2) The Liu et al. (2018) paper describes a model to simulate fake fMRI data. I've implemented this model by writing two MATLAB functions (called "make_fake_V1.m" & "make_fake_V1_response.m") that allow you to create a "V1" to "present" orientation stimuli to.
(3) A MATLAB script to set up a fake fMRI experiment using the two "fake data" functions above (plus a quick "IEM" analysis).
… Only after writing the above did I realize that John (Serences) had already done the same. So I highly recommend looking at John’s code, which I assume will be better commented and more flexible than mine.