當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。