我尝试使用包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))
?
答案 0 :(得分:0)
参见参考文献"快速计算基因的成对互信息 监管网络重建"
答案 1 :(得分:0)
关注此参考文献:"快速计算基因调控网络重建的成对互信息"
此策略假设两个随机变量中的每一个都遵循正态分布。除非您确定知道两个变量都遵循正态分布,否则我建议使用不带任何分布假设的包。我推荐R包" minerva"。只需要指定MIC(X,Y)$ MIC。