Я пытаюсь использовать пакет mpmi для вычисления взаимной информации между двумя наборами непрерывных переменных. Меня смущает исходный код, размещенный на GutHub: https://github.com/cran/mpmi/blob/master/src/cminjk.f95
ans = ans + log(s12(i) / (s1(i) * s2(i)))
end do
ans = ans / lv + log(dble(lv))
S12 похож на p(x,y)
, а s1,s2 похож на p(x),p(y)
. Почему бы не умножить p(x,y)
перед log(s12(i) / (s1(i) * s2(i)))
, чтобы формула для расчета MI была p(x,y)*log(p(x,y)/(p(x)p(y)))
И почему после суммирования стоит ans = ans / lv + log(dble(lv))
?