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вызываемый объект, необязательный
Функция, вычисляющая расстояние или сходство между образцами внутри каждой матрицы данных. Установлено в
Noneifxи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. Установите вTrueifxи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]. Это выполняется с помощью следующих шагов:
Две матрицы расстояний \(D^X\) и \(D^Y\) вычисляются и модифицируются, чтобы иметь нулевое среднее по столбцам. Это приводит к двум \(n \times n\) матрицы расстояний \(A\) и \(B\) (центрирование и несмещённая модификация) [3].
Для всех значений \(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}}\]Статистика теста 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)