mutualInfo

New in version 1.30.9.

语法

mutualInfo(X, Y)

别名:infoGain

参数

X 是一个标量、向量或矩阵。

Y 是一个标量、向量或矩阵。

X 和 Y 支持Integral和symbol类型。

详情

计算X和Y的互信息。

DolphinDB使用以下公式计算互信息:

\(MI(U,V) = \sum\limits_{i = 1}^{|U|}\sum\limits_{j = 1}^{|V|}\dfrac{|{U_i} \cap {V_j}|}{N}log \dfrac{N\lvert{U_i} \cap {V_i}\rvert}{|U_i||V_j|}\)

若X或Y是矩阵,计算每列的互信息,返回一个向量。

请注意,该公式计算时使用自然对数,若需要base为2或者10,直接以结果除以log 2或log 10即可。

例子

$ a = [NULL,4,NULL,NULL,-82,97,NULL,56,5,-92]
$ b = [NULL,53,NULL,18,97,-4,-73,NULL,NULL,24]
$ mutualInfo(a, b)
2.302585

//计算表中两列数据的互信息
$ t=table(take(1..10,10000000) as id, rand(10,10000000) as x, rand(10,10000000) as y);
$ mutualInfo(t.x, t.y)
0.000004

$ m1 = 1..12$3:4
$ m2 = 1..3
$ mutualInfo(m1, m2)
[1.0986, 1.0986,    1.0986, 1.0986]

如果X是矩阵,Y可以是标量、向量或者是与X行数相同的矩阵。返回结果是与X列数相同的向量。

$ m1 = 1..12$3:4
$ m2 = 1..3
$ mutualInfo(m1, m2)
[1.0986, 1.0986,    1.0986, 1.0986]