How to include p-values<0.05 in q-graphs?

♀尐吖头ヾ 提交于 2019-12-08 13:15:03

问题


I am following up an old question without answer (https://stackoverflow.com/questions/31653029/r-thresholding-networks-with-inputted-p-values-in-q-graph). I'm trying to assess relations between my variables.For this, I've used a correlation network map. Once I did so, I would like to implement a significance threshold component. For instance, I want to only show results with p-values <0.05. Any idea about how could I implement my code?

Data set: https://www.dropbox.com/s/xntc3i4eqmlcnsj/d100_partition_all3.csv?dl=0

My code:

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)

Output:

Additionally, I have this small piece of code that transform R2 values into p.values:

Code:

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)

Cheers


回答1:


There are a few ways to only plot the significant correlations. First, you could pass additional arguments to the qgraph()function. You can look at the documentation for more details. The function call given below should have values that are close to what is needed.

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
)

A second option is to create a modified correlation matrix. When the correlations are not statistically significant based on your cor.mtest() function, the value is set to NA in the modified correlation matrix. This modified matrix is plotted. A main visual difference between the first and second solutions seems to be the relative line weights.

# 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
       )



来源:https://stackoverflow.com/questions/35178020/how-to-include-p-values0-05-in-q-graphs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!