[pymvpa] Understanding Classification + HRF

Christopher Markiewicz effigies at bu.edu
Wed Mar 22 13:05:33 UTC 2017

Hi Anaelia,

I wouldn't necessarily be concerned about the <50% classification rate. If
you have 6 classes, your chance rate is ~16.7%. I'd expect a "high"
classification rate for 1/6 to be something in the 25-35% range. If you're
doing searchlight, you should see a normal-ish looking distribution with a
mode around 16-17%.

When it comes to HRF modeling events for classification, I mostly see
people take two routes:

1) Model one regressor for each event type (> baseline) per run, so you'll
get 60 images, and each fold will train on 54 and test on 6.
2) Model one regressor for each individual event, so supposing you have 30
events of each type plus ten baseline per run, after z scoring, each fold
will train on 1620 images and test on 180.

The former tends to produce much higher cross-validation accuracies than
the latter, because the variance of each class within runs is removed. It's
also much faster, and HRF estimation is more stable if you're not modeling
individual events.

The latter is nice if conceptually what you want is to predict individual
responses. I like this because the results are more intuitively
interpretable. Estimation stability is an issue here for individual events,
and I'd recommend checking out Mumford et al 2011 (
https://dx.doi.org/10.1016/j.neuroimage.2011.08.076). In our 2016 paper (
https://dx.doi.org/10.1016/j.neuroimage.2016.07.023), we used a variation
on their method (see especially p178 ¶5 and p187 ¶1).

For your second question: What do you mean by a "map for each class"? I'm
not really sure where to start here, without a better idea of what you want
the content of the map to be.

Chris Markiewicz

On Tue, Mar 21, 2017 at 7:12 PM, Anaelia Ovalle <anaeliaovalle at gmail.com>

> Hi all,
> I am a relatively new pyMVPA user and have 2 questions.
> 1)
> I'm working with 10 chunks of data (190 rows each) with 6 classes +
> baseline and am looking to classify them using a linear classifier however
> my results are <50%. I think there's something wrong with how I may be
> setting this up. Being that this is a rapid-event design, I'm looking to
> classify groups of voxel activity to their respective classes. In the
> tutorial, I use a zscored and polydetrended dataset and apply:
> clf = LinearCSVMC()
> cvte = CrossValidation(clf, NFoldPartitioner(),
>             errorfx= lambda p,t: np.mean(p==t),enable_ca=['stats'])
> cv_results = cvte(df)
> *However, *since this is an event based task (where the subject's answer
> is placed into a certain class), shouldn't I instead be looking to do an
> event-related analysis, shown in : http://www.pymvpa.org/tutori
> al_eventrelated.html ? Here, would I first do some response modeling via
> fitting a hemodynamic response model? If so, how does this fit into my
> pattern classification?
> Any clarification regarding these steps would be appreciated.
> 2)
> My final goal after classifying neuronal activity is to then have a map
> for each class. Is this the same as doing a sensitivity mapping with the
> pyMVPA functions for this?
> Thank you,
> Anaelia Ovalle
> _______________________________________________
> Pkg-ExpPsy-PyMVPA mailing list
> Pkg-ExpPsy-PyMVPA at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-exppsy-pymvpa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/pkg-exppsy-pymvpa/attachments/20170322/93c2fd16/attachment.html>

More information about the Pkg-ExpPsy-PyMVPA mailing list