voytekresearch / pacpy

Calculate phase-amplitude coupling in Python (and Matlab).
MIT License
24 stars 12 forks source link

Canolty MI should be implemented as Canolty intended #22

Closed roemervandermeij closed 9 years ago

roemervandermeij commented 9 years ago

Hey all,

I've been meaning to say this for a while now here (and said so to some in person). What is currently Canolty MI is not really Canolty MI.

TL;DR: Canolty MI is not very meaningful without surrogate normalization (also according to Canolty).

Without surrogate normalization, comparing two MIs is strongly convoluted with high frequency power differences in the time-series the MIs were calculated on. Technically of course, the current implemented metric is the result of both overall power + phase-coupled high frequency power. However, because PAC is usually pretty weak, i.e. a low % of high frequency power is phase modulated, and because high frequency power is not uncommon to vary between conditions strongly, differences in high frequency power are in practice more likely to reflect changes in the MI metric than its phase-coupling.

This is something Ryan (Canolty) acknowledges in his Science paper (from the Supp):

Since the question of interest is the degree of coupling between AHG and φTH, rather than the statistical properties of either AHG and φTH examined alone, the mean M must first be normalized before it can be used as a metric of coupling strength. That is, we are interested in the properties of the joint distribution of AHG and φTH taking into account the particular forms of the marginal distributions of AHG alone and φTH alone. One way to accomplish this is to compare the actual mean M (call it MRAW) to a set of surrogate means {Msur} created by offsetting AHG and φTH by some large time lag. (...). Therefore, we define this normalized metric MNORM(τ) as the modulation index used in this paper.

Since his name is attached to the metric in pacpy, I think it's fair to follow his own rationale right? ;)

Don't mean to go fear-mongering and such, but without any kind of normalization, surrogate or otherwise, the current MI is a not-so-safe metric which by default needs control analyses to justify a comparison between MIs. And, such control analyses are tricky, as they can principally never prove any MI differences were not due to differences in power (the traditional 'cannot prove the null-hypothesis problem').

-Roemer

srcole commented 9 years ago

you're completely right. And this shouldn't be hard to implement. Will just require some extra inputs (with somewhat arbitrary default values).

srcole commented 9 years ago

Fixed. See pull request 'canoltymi'. I'll merge it after the mysterious travisci build errors are fixed. @parenthetical-e is there a more proper way to link pull requests with the issues that they address?