【问题标题】:Calculation of mutual information in RR中互信息的计算
【发布时间】:2014-09-11 15:02:45
【问题描述】:

我在解释 entropy 包中的 mi.plugin()(或 mi.empirical())函数的结果时遇到问题。据我了解, MI=0 告诉您要比较的两个变量是完全独立的;并且随着 MI 的增加,两个变量之间的关联越来越非随机。

那么,为什么我在 R 中运行以下命令时会得到 0 值(使用 {entropy} 包):

mi.plugin( rbind( c(1, 2, 3), c(1, 2, 3) ) )

当我比较两个完全相同的向量时?

我认为我的困惑是基于我的理论误解,有人可以告诉我哪里出错了吗?

提前致谢。

【问题讨论】:

  • mi.plugin() 采用联合箱频率矩阵。见?mi.plugin
  • 谢谢@NPE,可能会使用不合适的功能,所以让我稍微扩展一下我正在尝试做的事情。我有两个连续变量,我想知道这两个变量之间的 MI。我想能够说我可以在多大程度上预测另一个?我应该计算 mi.plugin() 的联合 bin 频率还是应该使用更合适的函数?
  • 没关系,我计算了联合 bin 频率并得到了现在有意义的 MI 分数。塔。

标签: r entropy information-theory


【解决方案1】:

使用 infotheo 包中的 mutinformation(x,y)

> mutinformation(c(1, 2, 3), c(1, 2, 3) ) 
[1] 1.098612

> mutinformation(seq(1:5),seq(1:5))
[1] 1.609438

归一化互信息为 1。

【讨论】:

  • 你能解释一下如何规范化吗?这并不明显,我在文档中没有看到任何内容。
  • 规范化:mutinformation(c(1, 2, 3), c(1, 2, 3) ) / sqrt(entropy(c(1, 2, 3)) * entropy(c(1, 2, 3)))
【解决方案2】:

mi.plugin 函数作用于两个随机变量的联合频率矩阵。联合频率矩阵表示 X 和 Y 获得 x 和 y 的特定结果的次数。 在您的示例中,您希望 X 有 3 个可能的结果 - x=1、x=2、x=3,并且 Y 也应该有 3 个可能的结果,y=1、y=2、y=3。 让我们通过您的示例并计算联合频率矩阵:

> X=c(1, 2, 3)
> Y=c(1, 2, 3)
> freqs=matrix(sapply(seq(max(X)*max(Y)), function(x) length(which(((X-1)*max(Y)+Y)==x))),ncol=max(X))
> freqs
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1

此矩阵显示 X=x 和 Y=y 的出现次数。例如,有一个观察结果 X=1 和 Y=1。有 0 个观测值,其中 X=2 和 Y=1。 您现在可以使用 mi.plugin 功能:

> mi.plugin(freqs)
[1] 1.098612

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2016-01-15
    相关资源
    最近更新 更多