Удалить значения корреляции из таблицы, если они не значимы (в другой таблице) - PullRequest
1 голос
/ 16 января 2020

У меня есть таблица 100 x 100, содержащая значения корреляции, и сестринская таблица (также 100 x 100), содержащая значения P этих корреляций.

Я хотел бы напечатать таблицу корреляции, но только те клетки, которые имеют P <0,05. </p>

Ввод: 2 таблицы (значения корреляции и значения P)

>Corr_matrix
        value1  value2  value3  value4
value1  1.000   0.136   0.078   -0.048
value2  0.136   1.000   0.011   -0.036
value3  0.078   0.011   1.000   0.000
value4  -0.048  -0.036  0.000   1.000


>P_adjusted             
        value1  value2  value3  value4
value1  0.000   0.004   0.002   0.001
value2  0.004   0.000   0.003   0.010
value3  0.002   0.003   0.000   0.950
value4  0.001   0.010   0.950   0.000


>results            
        value1  value2  value3  value4
value1  1.000   0.136   0.078   -0.048
value2  0.136   1.000   0.011   -0.036
value3  0.078   0.011   1.000   NA
value4  -0.048  -0.036  NA      1.000

Я думал о чем-то вроде:

P_adjusted[ P_adjusted > 0.05 ] <- NA # turn non-significant values to NA
isnotNA <- !is.na(as.matrix(P_adjusted)) # grab positions of what is not an NA
results <- Corr_matrix[isnotNA=="TRUE"] # use those positions to subset correlation matrix 

Это не работает, и я могу понять почему, но это мне пока не ясно. Кто-нибудь может помочь?

1 Ответ

2 голосов
/ 16 января 2020

Просто сравните свой уровень значимости в одной матрице и установите для них значение NA в другой, соответственно.

vals[p.adj > .05] <- NA
vals
#   value1 value2 value3 value4
# 1  1.000  0.136  0.078 -0.048
# 2  0.136  1.000  0.011 -0.036
# 3  0.078  0.011  1.000     NA
# 4 -0.048 -0.036     NA  1.000

Данные:

vals <- structure(list(value1 = c(1, 0.136, 0.078, -0.048), value2 = c(0.136, 
1, 0.011, -0.036), value3 = c(0.078, 0.011, 1, NA), value4 = c(-0.048, 
-0.036, NA, 1)), row.names = c(NA, -4L), class = "data.frame")

p.adj <- structure(list(value1 = c(0, 0.004, 0.002, 0.001), value2 = c(0.004, 
0, 0.003, 0.01), value3 = c(0.002, 0.003, 0, 0.95), value4 = c(0.001, 
0.01, 0.95, 0)), row.names = c(NA, -4L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...