# Can the MIC algorithm for detecting non-linear correlations be explained intuitively ?

More recently, I read two articles. First one is about the history of the correlation and second is about the new method called Maximal Information Coefficient (MIC). I need your help regarding to understand the MIC method to estimate non-linear correlations between variables.

Moreover, Instructions for its use in R can be found on the author's website (under Downloads):

I hope this would be a good platform to discuss and understand this method. My interest to discuss an intuition behind this method and how it can be extended as author said.

"...we need extensions of MIC(X,Y) to MIC(X,Y|Z). We will want to know how much data are needed to get stable estimates of MIC, how susceptible it is to outliers, what three- or higher-dimensional relationships it will miss, and more. MIC is a great step forward, but there are many more steps to take."

-
The question is interesting one, but I think it is not answerable. Can you please make it more specific? – mpiktas Dec 20 '11 at 8:00

3
The discussion will be hindered by the fact that the article in Science is not open access. – Itamar Dec 20 '11 at 9:16

5
– mbq♦ Dec 20 '11 at 12:03

9
In short, MIC is an excavation of old idea of "plot-all-scatterplots-and-peak-those-with-biggest-white-area", so it mainly produces false positives, has an unreal complexity of $O(M^2)$ (which authors hide behind test-only-some-randomly-selected-pairs heuristic) and by-design misses all three- and more- variable interactions. – mbq♦ Dec 20 '11 at 12:12

3
– r.e.s. Dec 20 '11 at 13:51
show 1 more comment

## 3 Answers

Is it not telling that this was published in a non-statistical journal whose statistical peer review we are unsure of? This problem was solved by Hoeffding in 1948 (Annals of Mathematical Statistics 19:546) who developed a straightforward algorithm requiring no binning nor multiple steps. Hoeffding's work was not even referenced in the Science article. This has been in the R `hoeffd` function in the `Hmisc` package for many years. Here's an example (type `example(hoeffd)` in R):

````# Hoeffding's test can detect even one-to-many dependency
set.seed(1)
x <- seq(-10,10,length=200)
y <- x*sign(runif(200,-1,1))
plot(x,y)  # an X
hoeffd(x,y)  # also accepts a numeric matrix

D
     x    y
x 1.00 0.06
y 0.06 1.00

n= 200 

P
  x  y 
x     0   # P-value is very small
y  0   
````

`hoeffd` uses a fairly efficient Fortran implementation of Hoeffding's method. The basic idea of his test is to consider the difference between joint ranks of X and Y and the product of the marginal rank of X and the marginal rank of Y, suitably scaled.

# Update

I have since been corresponding with the authors (who are very nice by the way, and are open to other ideas and are continuing to research their methods). They originally had the Hoeffding reference in their manuscript but cut it (with regrets, now) for lack of space. While Hoeffding's $D$ test seems to perform well for detecting dependence in their examples, it does not provide an index that meets their criteria of ordering degrees of dependence the way the human eye is able to.

In an upcoming release of the R `Hmisc` package I've added two additional outputs related to $D$, namely the mean and max $|F(x,y) - G(x)H(y)|$ which are useful measures of dependence. However these measures, like $D$, do not have the property that the creators of MIC were seeking.

-

5
– r.e.s. Dec 23 '11 at 17:04
Nice find. Might be worth a short note to Science comparing Hoeffding's performance with theirs. It is a pity that many good studies (in many fields) from the 50's were forgotten over the years. – Itamar Dec 24 '11 at 20:26

The MIC method is based on Mutual information (MI), which quantifies the dependence between the joint distribution of X and Y and what the joint distribution would be if X and Y were independent (See,e.g., the Wikipedia entry). Mathematically, MI is defined as $$MI=H(X)+H(Y)-H(X,Y)$$ where $$H(X)=-\sum_i p(z_i)\log p(z_i)$$ is the entropy of a single variable and $$H(X,Y)=-\sum_{i,j} p(x_i,y_j)\log p(x_i,y_j)$$ is the joint entropy of two variables.

The authors' main idea is to discretize the data onto many different two-dimensional grids and calculate normalized scores that represents the mutual information of the two variables on each grid. The scores are normalized to ensure a fair comparison between different grids and vary between 0 (uncorrelated) and 1 (high correlations).

MIC is defined as the highest score obtained and is an indication of how strongly the two variables are correlated. In fact, the authors claim that for noiseless functional relationships MIC values are comparable to the coefficient of determination ($R^2$).

-

I found two good articles explaining more clearly the idea of MIC in particular this one; here the second.

As I understood from these reads is that you can zoom in to different complexities and scales of relationships between two variables by exploring different combinations of grids; these grids are used to split the 2 dimensional space into cells. By choosing the grid that holds the most information on how the cells partition the space you are choosing the MIC.

I would like to ask @mbq if he could expand what he called "plot-all-scatterplots-and-peak-those-with-biggest-white-area" and unreal complexity of O(M2).

-

2
I worry about any statistical method that uses binning. – Frank Harrell Dec 24 '11 at 13:49
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 6, "mathjax_display_tex": 3, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.949824869632721, "perplexity_flag": "middle"}