надеюсь, что это сообщение не является дубликатом, но я потратил довольно много времени на поиск и не смог найти ответ.Сравните только попарные сравнения МЕЖДУ двумя матрицами, использующими rcorr() в R
У меня есть две матрицы, которые я пытаюсь сделать с помощью парных корреляций между ними, которые выглядят так.
Matrix 1
gene1 gene2 gene3
ID1 12 32 43
ID2 94 34 95
ID3 90 54 23
ID4 43 76 65
Matrix2
TE1 TE2 TE3
ID1 94 90 82
ID2 23 46 94
ID3 23 49 39
ID4 39 34 46
Я в состоянии получить таблицу 2 значений R^с помощью базовой функции кора(), которая только делает сравнение между матрицами, в парном образе. Результат выглядит примерно так:
gene1 gene2 gene3
TE1 0.98 0.48 0.45
TE2 0.77 0.46 0.76
TE3 0.45 0.56 0.76
Это замечательно! Но проблема в том, что мне тоже нужны значения p, поэтому я могу сократить матрицу до тех, у которых только p значений меньше определенного обрезания (потому что мои реальные матрицы - [30,800] и [30,1000], и мне нужен способ сократите данные до чего-то понятного).
Пакет rcorr() отлично подходит для этого, так как он производит матрицу r
корреляций, матрицу P
значений p и вектор числа наблюдений. НО, я не смог найти способ сравнить только матрицы BETWEEN - он также сравнивает матрицы WITHIN. Я получаю результат, похожий на этот:
gene1 gene2 gene3 TE1 TE2 TE3
gene1 1.0 0.5 0.5 0.5 0.3 0.9
gene2 1.0 0.4 0.7 0.7 0.5
gene3 1.0 0.8 0.8 0.5
TE1 1.0 0.8 0.2
TE2 1.0 0.7
TE3 1.0
Это составленные данные, но это иллюстрирует точку. Это дает в два раза больше данных, чем мне на самом деле, и замедляет вычисления, а также создает диаграммы корреляции, которые нонсенс визуально.
Итак, мой вопрос заключается в следующем: существует ли способ сравнения только между, а не внутри матриц с использованием функции пакета Hmisc rcorr()?
Я также попробовал cor.test в списках матриц:
cor.test(c(matrix1),c(matrix2), method="pearson")
, но я получаю сообщение об ошибке, что 'x' and 'y' must have the same length
.
Далее я должен выяснить, как на самом деле подмножить матрицы на основе списка с высокой корреляцией и низким значением p, но я вижу, что здесь есть некоторые полезные ответы, которые мне нужно тщательно изучить.
Итак, я приму этот ответ, потому что он работает, и я могу использовать его в будущем. Спасибо! Но мне удалось сделать то же самое с помощью rcorr() в конце, с функцией из этого сообщения в блоге [ссылка] (http://www.sthda.com/english/wiki/correlation-matrix-a-quick-start -руководство к анализу формата-и-визуализации-а-корреляционной матрицы-используя-R-программного обеспечения). Я использовал функцию «flatten» для извлечения значений pvalues и корреляции для каждого парного сравнения, а затем использовал строковые характеристики из имен, чтобы исключить все, кроме попарных сравнений, которые я хотел, а затем использовал 'dcast()' для создания матрицы. – lmrta