当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.multiscale_graphcorr用法及代码示例


本文简要介绍 python 语言中 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 都会找到一个属性(例如云密度)的 - 最近邻居,以及另一属性(例如草地湿度)的 - 最近邻居 [1]。这对 称为“scale”。然而,目前尚不清楚哪种量表信息最丰富。因此,MGC 计算所有距离对,然后有效计算所有尺度的距离相关性。局部相关性说明了哪些尺度可以提供有关关系的相对信息。因此,成功发现和破译不同数据模态之间关系的关键是自适应地确定哪些尺度信息量最大,以及信息量最大的尺度的几何含义。这样做不仅可以估计模式是否相关,还可以深入了解如何做出决定。这在高维数据中尤其重要,因为简单的可视化无法揭示与肉眼的关系。该实现的特征尤其源自[2],并在[2]中进行了基准测试。

参数

x, y ndarray

如果xy有形状(n, p)(n, q)其中n是样本数和pq是维数,则将运行 MGC 独立性测试。或者,xy可以有形状(n, n)如果它们是距离或相似度矩阵,以及compute_distance必须发送到None.如果xy有形状(n, p)(m, p),将运行未配对的两个样本 MGC 测试。

compute_distance 可调用的,可选的

计算每个数据矩阵内样本之间的距离或相似度的函数。调成None如果xy已经是距离矩阵。默认使用欧几里得范数度量。如果您正在调用自定义函数,请创建距离矩阵 before-hand 或创建形式为的函数compute_distance(x)其中x是计算成对距离的数据矩阵。

reps 整数,可选

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

workers int 或 map-like 可调用,可选

如果workers是一个int,人口被细分为workers部分和并行评估(使用multiprocessing.Pool <multiprocessing>)。供应-1使用进程可用的所有内核。或者提供一个 map-like 可调用对象,例如multiprocessing.Pool.map用于并行评估 p 值。本次评价按如下方式进行workers(func, iterable).要求函数可以 pickle 。默认是1.

is_twosamp 布尔型,可选

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

random_state {无,整数, numpy.random.Generator

如果种子是无(或np.random), 这numpy.random.RandomState使用单例。如果种子是一个 int,一个新的RandomState使用实例,播种种子.如果种子已经是一个Generator或者RandomState实例然后使用该实例。

返回

res MGC结果

包含属性的对象:

统计 浮点数

[-1, 1] 内的样本 MGC 检验统计量。

p值 浮点数

通过排列获得的 p 值。

mgc_dict dict

包含其他有用的结果:

  • mgc_map ndarray

    A 2D representation of the latent geometry of the relationship.

  • opt_scale (int, int)

    The estimated optimal scale as a (x, y) pair.

  • null_dist list

    The null distribution derived from the permuted matrices.

注意

MGC 的过程和在神经科学数据上的应用的说明可以在 [1] 中找到。它使用以下步骤执行:

  1. 计算两个距离矩阵 并将其修改为按列均值为零。这会产生两个 距离矩阵 (居中和无偏修改)[3]。

  2. 对于来自 的所有值

    • 为每个属性计算 -最近邻图和 -最近邻图。这里, 表示 的第 行的 最小值, 表示 行的最小值

    • 表示entry-wise 矩阵乘积,然后使用以下统计量对局部相关进行求和和归一化:

  1. MGC 测试统计量是 的平滑最优局部相关性。将平滑操作表示为 (实质上将所有孤立的大相关性)表示为 0,并且与以前相同的连接大相关性,参见 [3]。)MGC 是,

测试统计返回一个介于 之间的值,因为它是标准化的。

返回的 p 值是使用排列检验计算的。通过首先随机排列 以估计零分布,然后计算在零值下观察到检验统计量的概率,至少与观察到的检验统计量一样极端,即可完成此过程。

MGC 需要至少 5 个样本才能运行并获得可靠的结果。它还可以处理高维数据集。此外,通过操纵输入数据矩阵,二样本检验问题可以简化为独立性检验问题[4]。给定大小为 的样本数据 ,可以按如下方式创建数据矩阵

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

参考

[1] (1,2)

Vogelstein, J. T., Bridgeford, E. W., Wang, Q., Priebe, C. E., Maggioni, M., & Shen, C. (2019)。发现和破译不同数据模式之间的关系。生活。

[2]

Panda, S., Palaniappan, S., Xiong, J., Swaminathan, A., Ramachandran, S., Bridgeford, E. W., … Vogelstein, J. T. (2019)。 mgcpy:一个全面的高维独立性测试 Python 包。 arXiv:1907.02088

[3] (1,2)

Shen, C.、Priebe, C.E. 和 Vogelstein, J. T. (2019)。从距离相关到多尺度图相关。美国统计协会杂志。

[4] (1,2)

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

例子

>>> import numpy as np
>>> from scipy.stats import multiscale_graphcorr
>>> x = np.arange(100)
>>> y = x
>>> res = multiscale_graphcorr(x, y)
>>> res.statistic, res.pvalue
(1.0, 0.001)

要运行不配对的两个样本测试,

>>> x = np.arange(100)
>>> y = np.arange(79)
>>> res = multiscale_graphcorr(x, y)
>>> res.statistic, res.pvalue  
(0.033258146255703246, 0.023)

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

>>> x = np.arange(100)
>>> y = x
>>> res = multiscale_graphcorr(x, y, is_twosamp=True)
>>> res.statistic, res.pvalue  
(-0.008021809890200488, 1.0)

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.multiscale_graphcorr。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。