scipy.stats.multiscale_graphcorr

scipy.stats.multiscale_graphcorr(x, y, compute_distance=<function _euclidean_dist>, reps=1000, workers=1, is_twosamp=False, random_state=None)[源代码]

计算多尺度图形相关性(MGC)测试统计信息。

具体地说,对于每个点,MGC都会查找 \(k\) -一处房产的最近邻居(例如云密度),以及 \(l\) -其他属性的最近邻居(例如草地潮湿) [1]. 这双鞋 \((k, l)\) 被称为“天平”。然而,先验的是,它不知道哪些尺度将是最具信息量的。因此,MGC计算所有距离对,然后高效地计算所有比例的距离相关性。局部相关性说明了哪些尺度是关于关系的相对信息量。因此,成功发现和破译不同数据形态之间的关系的关键是自适应地确定哪些尺度是最具信息量的,以及最具信息量的尺度的几何含义。这样做不仅提供了对模态是否相关的估计,而且还提供了对如何做出确定的洞察力。这在高维数据中尤其重要,在高维数据中,简单的可视化不能揭示与肉眼的关系。特别是这种实现的特征是从中派生出来的,并在其中进行了基准测试。 [2].

参数
x, yndarray

如果 xy 有形状 (n, p)(n, q) 哪里 n 是样本的数量,并且 pq 是维数,则将运行MGC独立性测试。或者, xy 可以有形状 (n, n) 如果它们是距离矩阵或相似矩阵,并且 compute_distance 必须发送到 None 。如果 xy 有形状 (n, p)(m, p) ,将运行未配对的双样本MGC测试。

compute_distance可调用,可选

计算每个数据矩阵中样本之间的距离或相似性的函数。设置为 None 如果 xy 已经是距离矩阵了。默认情况下使用欧几里得范数度量。如果要调用自定义函数,请事先创建距离矩阵或创建以下形式的函数 compute_distance(x) 哪里 x 是计算成对距离的数据矩阵。

reps整型,可选

使用置换测试时用于估计空值的重复次数。默认值为 1000

workers整型或映射型可调用,可选

如果 workers 是一个整数,人口细分为 workers 部分并并行计算(使用 multiprocessing.Pool <multiprocessing> )。供应 -1 使用该进程可用的所有核心。或者,也可以提供类似于映射的可调用对象,例如 multiprocessing.Pool.map 用于并行计算p值。此评估按如下方式进行 workers(func, iterable) 。要求 func 是可以腌制的。默认值为 1

is_twosamp布尔值,可选

如果 True ,将运行两个样本测试。如果 xy 有形状 (n, p)(m, p) ,则此可选选项将被覆盖并设置为 True 。设置为 True 如果 xy 两者都有形状 (n, p) 并且需要两个样本的测试。默认值为 False 。请注意,如果输入是距离矩阵,这将不会运行。

random_state :{无,整型, numpy.random.Generator{无,整型,

如果 seed 为无(或 np.random )、 numpy.random.RandomState 使用的是Singleton。如果 seed 是一个整型、一个新的 RandomState 实例,其种子设定为 seed 。如果 seed 已经是一个 GeneratorRandomState 实例,则使用该实例。

退货
stat浮动

中的示例MGC测试统计信息 [-1, 1]

pvalue浮动

通过排列获得的p值。

mgc_dictDICT

包含其他有用的附加返回值,其中包含以下关键字:

  • mgc_mapndarray

    关系的潜在几何图形的二维表示。我们之间的关系。

  • opt_scale(int,int)

    估计的最优规模作为 (x, y) 一对。

  • null_dist列表

    由置换矩阵导出的零分布

参见

pearsonr

皮尔逊相关系数和p值用于检验不相关性。

kendalltau

计算肯德尔的τ。

spearmanr

计算Spearman秩相关系数。

注意事项

有关MGC过程的描述以及在神经科学数据上的应用,请参阅 [1]. 它使用以下步骤执行:

  1. 两个距离矩阵 \(D^X\)\(D^Y\) 被计算并修改为按列平均为零。这导致了两个 \(n \times n\) 距离矩阵 \(A\)\(B\) (居中无偏修改) [3].

  2. 对于所有值 \(k\)\(l\) 从… \(1, ..., n\)

    • 这个 \(k\) -最近的邻居和 \(l\) -为每个属性计算最近邻图。这里, \(G_k (i, j)\) 指示 \(k\) -的最小值 \(i\) -第1行 \(A\)\(H_l (i, j)\) 指示 \(l\) 的最高价值 \(i\) -第1行 \(B\)

    • 让我们 \(\circ\) 表示条目矩阵乘积,然后使用以下统计信息对局部相关性进行求和和归一化:

\[C^{kl}=\frac{\sum_{ij}A G_k B H_l} {\sqrt{\sum_{ij}A^2 G_k\Times\sum_{ij}B^2 H_l}}\]
  1. MGC测试统计量是以下各项的平滑最优局部相关性 \(\{{ c^{{kl}} \}}\) 。将平滑操作表示为 \(R(\cdot)\) (本质上将所有孤立的大关联设置为0)和连接的大关联与前面相同,请参见 [3]. )MGC是,

\[mgc_n(x,y)=\max_{(k,l)}R\Left(c^{kl}\Left(x_n,y_n\Right)) \右)\]

测试统计信息返回一个介于 \((-1, 1)\) 因为它是正规化的。

使用置换测试计算返回的p值。该过程首先通过随机排列来完成 \(y\) 估计零值分布,然后计算在零值下观察到测试统计量的概率,该概率至少与观察到的测试统计量一样极端。

MGC需要至少5个样本才能运行,结果可靠。它还可以处理高维数据集。另外,通过对输入数据矩阵的处理,可以将两样本测试问题归结为独立测试问题 [4]. 给定样本数据 \(U\)\(V\) 大小的 \(p \times n\) \(p \times m\) ,数据矩阵 \(X\)\(Y\) 可以按如下方式创建:

\[X= [U|V] \in\数学{R}^{p\次(n+m)} Y= [0_{{1 \times n}} | 1_{{1 \times m}}] \in\数学{R}^{(n+m)}\]

然后,可以正常计算MGC统计量。这种方法可以推广到类似的测试,如距离相关 [4].

1.4.0 新版功能.

参考文献

1(1,2)

傅格斯坦,J.T.,Bridgeford,E.W.,Wang,Q.,Priebe,C.E.,Maggioni,M.,&沈,C.(2019)。发现和破译不同数据模态之间的关系。电子生活。

2

首页--期刊主要分类--期刊细介绍--期刊题录与文摘--期刊详细文摘内容沃格尔斯坦,J.T.(2019年)。mgcpy:一个全面的高维独立测试Python包。 arXiv:1907.02088

3(1,2)

沈超,普利贝,C.E.,傅格斯坦,J.T.(2019年)。从距离相关到多尺度图相关。美国统计协会杂志。

4(1,2)

沈C&Vogelstein,J.T.(2018)。假设检验的距离方法和核方法的精确等价性。 arXiv:1806.05514

示例

>>> from scipy.stats import multiscale_graphcorr
>>> x = np.arange(100)
>>> y = x
>>> stat, pvalue, _ = multiscale_graphcorr(x, y, workers=-1)
>>> '%.1f, %.3f' % (stat, pvalue)
'1.0, 0.001'

或者,

>>> x = np.arange(100)
>>> y = x
>>> mgc = multiscale_graphcorr(x, y)
>>> '%.1f, %.3f' % (mgc.stat, mgc.pvalue)
'1.0, 0.001'

要运行未配对的双样本测试,

>>> x = np.arange(100)
>>> y = np.arange(79)
>>> mgc = multiscale_graphcorr(x, y)
>>> '%.3f, %.2f' % (mgc.stat, mgc.pvalue)  
'0.033, 0.02'

或者,如果输入的形状相同,

>>> x = np.arange(100)
>>> y = x
>>> mgc = multiscale_graphcorr(x, y, is_twosamp=True)
>>> '%.3f, %.1f' % (mgc.stat, mgc.pvalue)  
'-0.008, 1.0'