Я пытаюсь найти условную взаимную информацию между тремя дискретными случайными величинами, используя пакет pyitlib
для python с помощью формулы:
I(X;Y|Z)=H(X|Z)+H(Y|Z)-H(X,Y|Z)
Ожидаемое значение условной взаимной информации = 0,011
.
Мой 1-й код:
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)
Ответ, который я здесь получаю, = 0,4632245116328402
Мой второй код:
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)
Ответ, который я здесь получаю, = 0.1583445441575102
В то время как ожидаемый результат 1018 * равен 0,011
Кто-нибудь может помочь? У меня сейчас большие проблемы. Любая помощь будет заметна.
Заранее спасибо.