Maximal Information Coefficient (MIC)最大互信息系数

在统计学中,最大信息系数用于衡量两个变量XX和YY的线性或非线性的强度。来自Berkeley的Terry Speed说它是“a correlation for the 21st century”。但也有人说“MIC的统计能力遭到了一些质疑,当零假设不成立时,MIC的统计就会受到影响。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题。”
介绍
定义
Maximal Information Coefficient (MIC) 最大信息系数,属于Maximal Information-based Nonparametric Exploration (MINE) 最大的基于信息的非参数性探索,用于衡量两个变量XX和YY的线性或非线性的强度。

起源
Reshef, David N., et al. “Detecting novel associations in large data sets.” science 334.6062 (2011): 1518-1524.

优点
generality:拥有足够的统计样本时,可以捕获广泛的关系,而不限定于特定的函数类型(如线性、指数型、周期型等)。
equitability:对不同类型的噪声程度同等的关系给予相近的分数。

缺点
“MIC的统计能力遭到了一些质疑,当零假设不成立时,MIC的统计就会受到影响。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题。”

应用领域
统计学

相关
Maximal Information-based Nonparametric Exploration (MINE) 最大的基于信息的非参数性探索

思想
如果两个变量之间存在关系,则在这二者的散点图中,可以绘制网格(grid)来划分数据进行封装关系。

实现
Python
minepy

http://minepy.sourceforge.net/

mic_sample.py

from minepy import MINE
import numpy as np

np.random.seed(0)
size = 1000
X = np.random.uniform(0, 2, (size, 5))
Y = X[:, 1] + X[:, 2] ** 2 + np.sin(np.pi * 0.5 * X[:, 3]) + \
np.log(X[:, 4]) + np.random.normal(0, 1)
X[:, 0] = X[:, 1] + np.random.normal(0, 1)

mine = MINE()
mic_scores = []
for i in range(X.shape[1]):
mine.compute_score(X[:, i], Y)
m = mine.mic()
mic_scores.append(m)

print(mic_scores)

output (possible)

[0.21735785164297244, 0.21735785164297244, 0.48351888068913057, 0.14723020968106829, 0.31786293970009444]

print(mic_scores)

参考
Reshef D N, Reshef Y A, Finucane H K, et al. Detecting novel associations in large data sets[J]. science, 2011, 334(6062): 1518-1524.
http://blog.sciencenet.cn/blog-830496-872998.html

http://www.exploredata.net/Downloads/MINE-Application

发表评论