通过 p 值对相关矩阵进行阈值处理
Thresholding a correlation matrix by p-value
我想对相关矩阵设置阈值以仅保留 p 值 < 0.01 的值。我之前在 Whosebug 上看到过这个问题的回答,并尝试了建议的代码,但是当应用阈值时矩阵的结构消失了。
例如,我有一个由一堆数字组成的矩阵...
data <- matrix(rnorm(6),100,22)
然后我得到一个相关矩阵...
corr_subj_data <-rcorr(data)
corr_matrix <- corr_subj_data$r
p_vals <- corr_subj_data$P
我尝试使用 numel(matlab 包)复制我在 Matlab 中完成此任务的代码。但是,它在这里似乎不起作用。
for(idx in numel(p_vals)) {
pval <- P_vals[idx]
if (pval > 0.01){
corr_matrix[idx] <- NA
}}
基本上在这里,我只是试图遍历矩阵中的每个 p 值,如果它大于 0.01,则将相关矩阵中的相应值替换为 "NA"。
然后我查看了这个,我发现了下面的建议代码:
corr_matrix[p_vals < 0.01]
这对相关矩阵进行了正确的阈值处理,但我失去了原来的 22 x 22 结构。看起来它只是一个数字序列(不熟悉 R 中的数据类型)。
如果有人对如何在阈值处理后保留相关矩阵的结构提出建议,我将不胜感激!
使用线路:
corr_matrix[p_vals >= 0.01] <- NA
我想对相关矩阵设置阈值以仅保留 p 值 < 0.01 的值。我之前在 Whosebug 上看到过这个问题的回答,并尝试了建议的代码,但是当应用阈值时矩阵的结构消失了。
例如,我有一个由一堆数字组成的矩阵...
data <- matrix(rnorm(6),100,22)
然后我得到一个相关矩阵...
corr_subj_data <-rcorr(data)
corr_matrix <- corr_subj_data$r
p_vals <- corr_subj_data$P
我尝试使用 numel(matlab 包)复制我在 Matlab 中完成此任务的代码。但是,它在这里似乎不起作用。
for(idx in numel(p_vals)) {
pval <- P_vals[idx]
if (pval > 0.01){
corr_matrix[idx] <- NA
}}
基本上在这里,我只是试图遍历矩阵中的每个 p 值,如果它大于 0.01,则将相关矩阵中的相应值替换为 "NA"。
然后我查看了这个,我发现了下面的建议代码:
corr_matrix[p_vals < 0.01]
这对相关矩阵进行了正确的阈值处理,但我失去了原来的 22 x 22 结构。看起来它只是一个数字序列(不熟悉 R 中的数据类型)。
如果有人对如何在阈值处理后保留相关矩阵的结构提出建议,我将不胜感激!
使用线路:
corr_matrix[p_vals >= 0.01] <- NA