1

我正在为因果网络运行 pc 算法。在这个算法中,我需要验证两个数组 X 和 Y 是否独立给定一组数组 Z1,...,Zn。在论文中,通常假设高斯独立性测试,我试图不使用它来支持更通用的方法。我尝试使用互信息,但从我昨天的讨论中可以看出(具有多个变量的条件互信息),互信息似乎不是一个好方法。我尝试使用fcit包。

import numpy as np
from fcit import fcit


X = np.random.random_integers(0,10,10000)

Y = np.random.random_integers(0,10,10000)


Z = X+Y
Z1 = X-Y

Z = [Z,Z1]
Z = np.array(Z).T
X = X.reshape((10000,1))
Y = Y.reshape((10000,1))

pval_d = fcit.test(X, Y)
pval_i = fcit.test(X, Y, Z)

但是对于pval_i我得到nan的和以下警告:

C:\Users\Usuario\anaconda3\Lib\site-packages\scipy\stats\_distn_infrastructure.py:903: RuntimeWarning: invalid value encountered in greater
  return (a < x) & (x < b)
C:\Users\Usuario\anaconda3\Lib\site-packages\scipy\stats\_distn_infrastructure.py:903: RuntimeWarning: invalid value encountered in less
  return (a < x) & (x < b)
C:\Users\Usuario\anaconda3\Lib\site-packages\scipy\stats\_distn_infrastructure.py:1912: RuntimeWarning: invalid value encountered in less_equal
  cond2 = cond0 & (x <= _a)

我认为它出现是由于 Z 和 X 和 Y 的尺寸不同,因为在这种情况下都具有相同的尺寸 (10000,1),它可以正确计算独立性测试。所以我的问题是:如果给定 Z1,...,Zn,我如何计算 X 和 Y 是否独立?

4

2 回答 2

0

我不认为这是一个尺寸错误 - 在我看来,这似乎是fcit除以零或在内部做一些可疑的事情,从而导致计算 NaN 值。

我对您使用的统计测试知之甚少,无法了解导致 NaN 值的数学原因,但这是我的直觉。

我将从调试警告开始,看看计算结果如何。https://docs.python.org/3/library/warnings.html对于使 python 在警告和错误时停止很有用。

于 2020-06-30T22:18:58.033 回答
0

两个变量(数组)是依赖还是独立的事实取决于手头的两个变量,而不是其他变量。你是什​​么意思:

如果两个数组 X 和 Y 是独立的给定一组数组 Z1,..., Zn

于 2020-06-30T21:59:58.340 回答