scipy.stats.

multiscale_graphcorr#

scipy.stats.multiscale_graphcorr(x, y, compute_distance= _euclidean_dist>, reps=1000, workers=1, is_twosamp=False, random_state=None)[источник]#

Вычисляет статистику теста Multiscale Graph Correlation (MGC).

В частности, для каждой точки MGC находит \(k\)-ближайших соседей для одного свойства (например, плотности облаков), и \(l\)-ближайших соседей для другого свойства (например, влажности травы) [1]. Эта пара \((k, l)\) называется «масштабом». Однако априори неизвестно, какие масштабы будут наиболее информативными. Поэтому MGC вычисляет все пары расстояний, а затем эффективно вычисляет корреляции расстояний для всех масштабов. Локальные корреляции показывают, какие масштабы относительно информативны о взаимосвязи. Ключом, следовательно, к успешному обнаружению и расшифровке взаимосвязей между различными модальностями данных является адаптивное определение того, какие масштабы являются наиболее информативными, и геометрическое следствие для наиболее информативных масштабов. Это не только дает оценку того, связаны ли модальности, но и дает понимание того, как было принято решение. Это особенно важно в высокоразмерных данных, где простые визуализации не раскрывают взаимосвязей невооруженному человеческому глазу. Характеристики этой реализации в частности были получены и протестированы в [2].

Параметры:
x, yndarray

Если x и y имеют формы (n, p) и (n, q) где n это количество образцов и p и q являются количеством измерений, тогда будет выполнен тест независимости MGC. Альтернативно, x и y может иметь формы (n, n) если они являются матрицами расстояний или сходства, и compute_distance должен быть отправлен в None. Если x и y имеют формы (n, p) и (m, p), будет выполнен непарный двухвыборочный тест MGC.

compute_distanceвызываемый объект, необязательный

Функция, вычисляющая расстояние или сходство между образцами внутри каждой матрицы данных. Установлено в None if x и y уже являются матрицами расстояний. По умолчанию используется метрика евклидовой нормы. Если вы вызываете пользовательскую функцию, либо создайте матрицу расстояний заранее, либо создайте функцию вида compute_distance(x) где x — это матрица данных, для которой вычисляются попарные расстояния.

repsint, необязательный

Количество репликаций, используемых для оценки нулевой гипотезы при использовании перестановочного теста. По умолчанию 1000.

workersint или вызываемый объект, подобный отображению, необязательный

Если workers является целым числом, популяция подразделяется на workers разделы и вычисляются параллельно (использует multiprocessing.Pool ). Предоставьте -1 использовать все доступные ядра процесса. Альтернативно предоставьте вызываемый объект, подобный map, такой как multiprocessing.Pool.map для параллельной оценки p-значения. Эта оценка выполняется как workers(func, iterable). Требует, чтобы функция должен быть сериализуемым. По умолчанию 1.

is_twosampbool, необязательно

Если True, будет выполнен двухвыборочный тест. Если x и y имеют формы (n, p) и (m, p), этот опциональный параметр будет переопределён и установлен в True. Установите в True if x и y оба имеют формы (n, p) и требуется двухвыборочный тест. Значение по умолчанию False. Обратите внимание, что это не будет работать, если входные данные являются матрицами расстояний.

random_state{None, int, numpy.random.Generator,

numpy.random.RandomState, опционально

Если seed равно None (или np.random), numpy.random.RandomState используется синглтон. Если seed является int, новый RandomState используется экземпляр, инициализированный с seed. Если seed уже является Generator или RandomState экземпляр, тогда этот экземпляр используется.

Возвращает:
resMGCResult

Объект, содержащий атрибуты:

статистикаfloat

Выборочная статистика теста MGC в пределах [-1, 1].

p-значениеfloat

p-значение, полученное через перестановку.

mgc_dictdict

Содержит дополнительные полезные результаты:

  • mgc_mapndarray

    2D-представление скрытой геометрии отношения.

  • opt_scale(int, int)

    Оцененная оптимальная шкала как (x, y) пара.

  • null_distlist

    Нулевое распределение, полученное из переставленных матриц.

Смотрите также

pearsonr

Коэффициент корреляции Пирсона и p-значение для проверки отсутствия корреляции.

kendalltau

Вычисляет тау Кендалла.

spearmanr

Вычисляет коэффициент корреляции Спирмена.

Примечания

Описание процесса MGC и приложений к нейробиологическим данным можно найти в [1]. Это выполняется с помощью следующих шагов:

  1. Две матрицы расстояний \(D^X\) и \(D^Y\) вычисляются и модифицируются, чтобы иметь нулевое среднее по столбцам. Это приводит к двум \(n \times n\) матрицы расстояний \(A\) и \(B\) (центрирование и несмещённая модификация) [3].

  2. Для всех значений \(k\) и \(l\) из \(1, ..., n\),

    • The \(k\)-ближайший сосед и \(l\)-ближайших соседей графов рассчитываются для каждого свойства. Здесь, \(G_k (i, j)\) указывает на \(k\)-наименьшие значения \(i\)-я строка \(A\) и \(H_l (i, j)\) указывает на \(l\) наименьшие значения \(i\)-я строка \(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) \right)\]

Тестовая статистика возвращает значение между \((-1, 1)\) поскольку он нормирован.

Возвращаемое p-значение рассчитывается с использованием перестановочного теста. Этот процесс выполняется путем случайной перестановки \(y\) для оценки нулевого распределения и затем вычисления вероятности наблюдения тестовой статистики, при нулевой гипотезе, по крайней мере столь же экстремальной, как наблюдаемая тестовая статистика.

MGC требует как минимум 5 выборок для надёжной работы. Также может обрабатывать высокоразмерные наборы данных. Кроме того, манипулируя входными матрицами данных, задача двухвыборочного тестирования может быть сведена к задаче тестирования независимости [4]. При заданных выборочных данных \(U\) и \(V\) размеров \(p \times n\) \(p \times m\), матрица данных \(X\) и \(Y\) может быть создан следующим образом:

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

Затем статистика MGC может быть рассчитана как обычно. Эта методология может быть расширена на аналогичные тесты, такие как дистанционная корреляция [4].

Добавлено в версии 1.4.0.

Ссылки

[1] (1,2)

Vogelstein, J. T., Bridgeford, E. W., Wang, Q., Priebe, C. E., Maggioni, M., & Shen, C. (2019). Discovering and deciphering relationships across disparate data modalities. ELife.

[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). From distance correlation to multiscale graph correlation. Journal of the American Statistical Association.

[4] (1,2)

Shen, C. & Vogelstein, J. T. (2018). The Exact Equivalence of Distance and Kernel Methods for Hypothesis Testing. 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)