Finding conditional mutual information from 3 discrete variable

走远了吗. 提交于 2019-12-25 03:57:22

问题


I am trying to find conditional mutual information between three discrete random variable using pyitlib package for python with the help of the formula:

I(X;Y|Z)=H(X|Z)+H(Y|Z)-H(X,Y|Z)

The expected Conditional Mutual information value is= 0.011

My 1st code:

import numpy as np
from pyitlib import discrete_random_variable as drv

X=[0,1,1,0,1,0,1,0,0,1,0,0]
Y=[0,1,1,0,0,0,1,0,0,1,1,0]
Z=[1,0,0,1,1,0,0,1,1,0,0,1]

a=drv.entropy_conditional(X,Z)
##print(a)
b=drv.entropy_conditional(Y,Z)
##print(b)
c=drv.entropy_conditional(X,Y,Z)
##print(c)

p=a+b-c
print(p)

The answer i am getting here is=0.4632245116328402

My 2nd code:

import numpy as np
from pyitlib import discrete_random_variable as drv

X=[0,1,1,0,1,0,1,0,0,1,0,0]
Y=[0,1,1,0,0,0,1,0,0,1,1,0]
Z=[1,0,0,1,1,0,0,1,1,0,0,1]

a=drv.information_mutual_conditional(X,Y,Z)
print(a)

The answer i am getting here is=0.1583445441575102

While the expected result is=0.011

Can anybody help? I am in big trouble right now. Any kind of help will be appreciable. Thanks in advance.


回答1:


Based on the definitions of conditional entropy, calculating in bits (i.e. base 2) I obtain H(X|Z)=0.784159, H(Y|Z)=0.325011, H(X,Y|Z) = 0.950826. Based on the definition of conditional mutual information you provide above, I obtain I(X;Y|Z)=H(X|Z)+H(Y|Z)-H(X,Y|Z)= 0.158344. Noting that pyitlib uses base 2 by default, drv.information_mutual_conditional(X,Y,Z) appears to be computing the correct result.

Note that your use of drv.entropy_conditional(X,Y,Z) in your first example to compute conditional entropy is incorrect, you can however use drv.entropy_conditional(XY,Z), where XY is a 1D array representing the joint observations about X and Y, for example XY = [2*xy[0] + xy[1] for xy in zip(X,Y)].




回答2:


If you're open to using SKlearn, then you could take a look at the adjusted_mutual_info_score tool here



来源:https://stackoverflow.com/questions/55402338/finding-conditional-mutual-information-from-3-discrete-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!