Maximal Information Coefficient 最大信息系数
在统计学中,最大信息系数用于衡量两个变量\(X\)和\(Y\)的线性或非线性的强度。来自Berkeley的Terry Speed说它是“a correlation for the 21st century”。但也有人说“MIC的统计能力遭到了一些质疑,当零假设不成立时,MIC的统计就会受到影响。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题。”
介绍
定义
Maximal Information Coefficient (MIC) 最大信息系数,属于Maximal Information-based Nonparametric Exploration (MINE) 最大的基于信息的非参数性探索,用于衡量两个变量\(X\)和\(Y\)的线性或非线性的强度。
起源
Reshef, David N., et al. "Detecting novel associations in large data sets." science 334.6062 (2011): 1518-1524. 1
优点
generality:拥有足够的统计样本时,可以捕获广泛的关系,而不限定于特定的函数类型(如线性、指数型、周期型等)。
equitability:对不同类型的噪声程度同等的关系给予相近的分数。
缺点
“MIC的统计能力遭到了一些质疑,当零假设不成立时,MIC的统计就会受到影响。在有的数据集上不存在这个问题,但有的数据集上就存在这个问题。” 2
应用领域
统计学
相关
Maximal Information-based Nonparametric Exploration (MINE) 最大的基于信息的非参数性探索
思想
如果两个变量之间存在关系,则在这二者的散点图中,可以绘制网格(grid)来划分数据进行封装关系。
实现
Python
minepy
http://minepy.sourceforge.net/
mic_sample.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18from 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)
1
[0.21735785164297244, 0.21735785164297244, 0.48351888068913057, 0.14723020968106829, 0.31786293970009444]
应用
TODO
参考
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.↩︎