如何在 q 图中包含 p 值 <0.05?
How to include p-values<0.05 in q-graphs?
我正在跟进一个没有答案的老问题 ()。我正在尝试评估我的 variables.For 之间的关系,我使用了相关网络图。一旦我这样做了,我想实施一个重要性阈值组件。例如,我只想显示 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)
干杯
有几种方法可以只绘制显着的相关性。首先,您可以将其他参数传递给 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
)
我正在跟进一个没有答案的老问题 ()。我正在尝试评估我的 variables.For 之间的关系,我使用了相关网络图。一旦我这样做了,我想实施一个重要性阈值组件。例如,我只想显示 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)
干杯
有几种方法可以只绘制显着的相关性。首先,您可以将其他参数传递给 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
)