How To Do Multivariate Pattern Analysis
What is MVPA? Animations from Meyer & Kaplan (in press), Journal of Visualized Experiments
Univariate vs. multivariate analysis of Not significant Average Average V1 V2 V3 V4 V5 V6 Univariate vs. multivariate analysis of fMRI data Individually not significant… but significant when considered in conjunction! — V1 V2 V3 V4 V5 V6
Multivariate pattern analysis: Fusiform face area Significant? Univariate analysis: Multivariate pattern analysis: Reverse inference The direction in which the correlation between the perceptual stimuli and brain activity is mapped does not matter from a statistical point of view. Primary visual cortex V1 V2 V3 V4 V5 V6 Multivariate pattern analysis: Predictable?
Training trials Classifier Testing trials ? Testing trials Stimulus v V1 activity pattern Stimulus v v v v v v v v v v v v Classifier Performance: 75% V1 activity pattern Testing trials Classifier guess ? V1 activity pattern v Stimulus Testing trials
Cross-validation paradigm: Runs 1 2 3 4 5 6 7 8 Cross-validation steps 1 Performance 1 Overall performance 2 Performance 2 3 Performance 3 4 Performance 4 5 Performance 5 6 Performance 6 7 Performance 7 8 Performance 8 Training run Testing run
What do I need to do MVPA? An fMRI experiment with an appropriate design Almost any modern computer PyMVPA software
Experiment design As many trials as possible to train the classifier
Experiment design As many trials as possible to train the classifier Clear BOLD pattern resulting from each trial TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR TR
Sparse temporal sampling Video clip TR
What is the input to the classifier? TR TR TR TR TR TR TR TR TR TR TR TR TASK A TASK B Raw fMRI data
What is the input to the classifier? TR TR TR TR TR TR TR TR TR TR TR TR TASK A TASK B Raw fMRI data Averaged fMRI data AVG AVG
What is the input to the classifier? TR TR TR TR TR TR TR TR TR TR TR TR TASK A TASK B Raw fMRI data Averaged fMRI data beta values from a GLM analysis
Data pre-processing Motion-correction Smoothing (?) FSL Motion-correction Smoothing (?) Trend removal / high pass filter Z-scoring PyMVPA
Gathering Your Tools
Why PyMVPA Alternative toolbox: Princeton MVPA toolbox http://code.google.com/p/princeton-mvpa-toolbox/ PyMVPA is free and open-source, does not require Matlab Well-maintained and flexible Python is great once you get used to it I know how to use it
Python An interpreted, modern programming language Produces very clear, easy to read code Object-oriented Extensive scientific computing modules available for python (scipy, nipy, etc.)
Brief python demo Python command line Python scripting iPython
Gathering Your Tools Install PyMVPA: http://www.pymvpa.org Version .4x versus .6x Linux: Very easy, just type one command Windows: Mac: Instructions on website will only install .4x. To install .6x follow my guide: http://www.jonaskaplan.com/lab/pymvpainstallation.php
Gather Your Ingredients
Ingredients 1 4-dimensional functional data file, motion-corrected This should be all of your data from one subject. If you did multiple scans, concatenate them into one single 4D file, all motion corrected to the same volume
Sample preprocessing script
Ingredients 1 4-dimensional functional data file, motion-corrected This should be all of your data from one subject. If you did multiple scans, concatenate them into one single 4D file, all motion corrected to the same volume 1 text file which contains “attributes”: Column 1 labels each volume with a “target” category Column 2 labels each volume with a “chunk”, e.g. scan 1 Mask file in the functional space
Terminology VOLUMES dog violin cow vase VOXELS
Terminology SAMPLES TARGETS dog violin cow vase FEATURES CHUNK
Sample attributes file Sparse design Block design
Getting started with pymvpa Start python or ipython Import the pymvpa module and explore it
Sample dataset Subject saw nine different 5-second video clips: dog, cow, rooster, violin, piano, bass, vase, chainsaw, coins One single volume acquired 7 seconds after the start of the clip Eight scans, each stimulus seen 3 times in each scan (24 times across the experiment)
Getting started with pymvpa Read in your attributes Create a dataset
Mappers Mappers transform data samples Dataset automatically maps data from 4D to 2D Many mappings are reversible
Data pre-processing steps Detrending Z-scoring
Partitioners Used to split the data into training set and testing set HalfPartitioner() OddEvenPartitioner() NFoldPartitioner()
Choosing a classifier algorithm Nearest neighbor Support Vector Machine (SVM) Linear Discriminant Analysis (LDA) Gaussian Naive Bayes (GNB) Sparse Multinomial Linear Regression (SMLR) ...
Choosing a classifier algorithm
Support Vector Machine Draws a hyperplane to separate the categories, maximizing the margin between classes
Support Vector Machine
Support Vector Machine Draws a hyperplane to separate the categories, maximizing the margin between classes Works quickly with on large feature sets (lots of voxels) Common in fMRI pattern learning literature Binary classifier Linear version chosen (very little advantage to nonlinear SVM with lots of features and few stimuli)
Misaki et al, 2010, NeuroImage
Choosing a classifier algorithm
Setting up cross-validation
Go!
Results Show confusion matrix: Plot confusion matrix:
Significance testing Binomial test Permutation testing Voxel sensitivity maps
Significance testing Binomial test
Significance testing Binomial test
Significance testing Permutation testing • Generate a null distribution by randomly permuting pattern labels http://www.pymvpa.org/examples/permutation_test.html
Searchlight analysis
Searchlight analysis
To study on your own Temporal exploration: averaging, temporal searchlights Sensitivity maps Permutation testing