首页 文章

R中的熵和互信息

提问于
浏览
0

我想在R中计算条件互信息,我使用了名为infotheo的包 .

我用两种方法来计算I(X; Y1,Y2 | Z) . 首先是使用以下代码,

condinformation(X$industry,cbind(X$ethnicity,X$education),S=X$gender, method="emp")
[1] -1.523344

而且我认为互信息可以分解为两个熵:I(X; Y1,Y2 | Z)= H(X | Z)-H(X | Z,Y1,Y2),我使用下面的代码,

hhh<-condentropy(X$industry, Y=X$gender, method="emp")
hhh1<-condentropy(X$industry,Y=cbind(X$gender,X$ethnicity,X$education))
hhh-hhh1
[1] 0.1483363

我想知道为什么这两个给我不同的结果?

1 回答

  • 2

    这两种方法是不同的估计因子,因此给出不同的结果,就像下面两个随机变量和方差的方差的估计量给出不同的结果:

    > a <- rnorm(100)
    > b <- rnorm(100)
    > var(a+b)-(var(a)+var(b))
    [1] 0.5219229
    

    不确定哪种估算器在你的情况下更好,但我猜第一个 . 您可以从模型中进行一些模拟以获得更好的想法 .

相关问题