Как включить p-значения <0,05 в q-графиках?

Я отвечаю на старый вопрос без ответа ( https://stackru.com/questions/31653029/r-thresholding-networks-with-inputted-p-values-in-q-graph). Я пытаюсь оценить отношения между моими переменными. Для этого я использовал карту корреляционной сети. После этого я хотел бы реализовать компонент порога значимости. Например, я хочу показать результаты только с p-значениями <0,05. Есть идеи о том, как я могу реализовать свой код?

Набор данных: https://www.dropbox.com/s/xntc3i4eqmlcnsj/d100_partition_all3.csv?dl=0

Мой код:

library(qgraph)
cor_d100_partition_all3<-cor(d100_partition_all3)
qgraph(cor_d100_partition_all3, layout="spring",  
   label.cex=0.9, labels=names(d100_partition_all3), 
   label.scale=FALSE, details = TRUE)

Выход: введите описание изображения здесь

Кроме того, у меня есть небольшой фрагмент кода, который преобразует значения R2 в значения p.values:

Код:

cor.mtest <- function(mat, ...) {
mat <- as.matrix(mat)
n <- ncol(mat)
p.mat<- matrix(NA, n, n)
diag(p.mat) <- 0
for (i in 1:(n - 1)) {
  for (j in (i + 1):n) {
  tmp <- cor.test(mat[, i], mat[, j], ...)
  p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
 }
}
colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
p.mat
}
p.mat <- cor.mtest(d100_partition_all3)

ура

1 ответ

Решение

Есть несколько способов построить только значимые корреляции. Во-первых, вы можете передать дополнительные аргументы qgraph()функция. Вы можете посмотреть документацию для более подробной информации. Приведенный ниже вызов функции должен иметь значения, близкие к необходимым.

qgraph(cor_d100_partition_all3
       , layout="spring"
       , label.cex=0.9
       , labels=names(d100_partition_all3)
       , label.scale=FALSE
       , details = TRUE
       , minimum='sig' # minimum based on statistical significance
       ,alpha=0.05 # significance criteria
       ,bonf=F # should Bonferroni correction be used
       ,sampleSize=6 # number of observations
)

введите описание изображения здесь

Второй вариант заключается в создании модифицированной корреляционной матрицы. Когда корреляции не являются статистически значимыми на основе вашего cor.mtest() функция, значение устанавливается в NA в модифицированной матрице корреляции. Эта модифицированная матрица построена. Основным визуальным отличием между первым и вторым решениями, похоже, являются относительные веса линий.

# initializing modified correlation matrix
cor_d100_partition_all3_mod <- cor_d100_partition_all3

# looping through all elements and setting values to NA when p-values is greater than 0.05
for(i in 1:nrow(cor_d100_partition_all3)){
  for(j in 1:nrow(cor_d100_partition_all3)){
    if(p.mat[i,j] > 0.05){
      cor_d100_partition_all3_mod[i,j] <- NA
    }
  }
}

# plotting result
qgraph(cor_d100_partition_all3_mod
       ,layout="spring"
       ,label.cex=0.7
       ,labels=names(d100_partition_all3)
       ,label.scale=FALSE
       ,details = F
       )

введите описание изображения здесь

Другие вопросы по тегам