R中具有p值的相关矩阵 [英] correlation matrix with p-value in R
问题描述
假设我想要行为相关矩阵
Suppose I want conduct correlation matrix
library(dplyr)
data(iris)
iris %>%
select_if(is.numeric) %>%
cor(y =iris$Petal.Width, method = "spearman") %>% round(2)
现在我们看到了
[,1]
Sepal.Length 0.83
Sepal.Width -0.29
Petal.Length 0.94
Petal.Width 1.00
我希望统计显着相关性由*
标记,其中
i want that statistical significant correlation were marked by * where
*<0,05
**<0,01
*** <0,001
该怎么做?
推荐答案
使用 tidyverse 。我们可以将数据框转换为长格式,使用嵌套
创建列表列,然后使用 map
执行<$每个子集c $ c> cor.test 。之后, map_dbl
可以通过指定名称 p.value
来提取P值。 dat1
是最终输出。
A solution using tidyverse. We can convert the data frame to long format, create list column using nest
, and then use map
to perform cor.test
for each subset. After that, map_dbl
can extract the P value by specifying the name "p.value"
. dat1
is the final output.
library(tidyverse)
data(iris)
dat1 <- iris %>%
select_if(is.numeric) %>%
gather(Column, Value, -Petal.Width) %>%
group_by(Column) %>%
nest() %>%
mutate(Cor = map(data, ~cor.test(.x$Value, .x$Petal.Width, method = "spearman"))) %>%
mutate(Estimate = round(map_dbl(Cor, "estimate"), 2),
P_Value = map_dbl(Cor, "p.value"))
dat1
# # A tibble: 3 x 5
# Column data Cor Estimate P_Value
# <chr> <list> <list> <dbl> <dbl>
# 1 Sepal.Length <tibble [150 x 2]> <S3: htest> 0.83 4.19e-40
# 2 Sepal.Width <tibble [150 x 2]> <S3: htest> -0.290 3.34e- 4
# 3 Petal.Length <tibble [150 x 2]> <S3: htest> 0.94 8.16e-70
如果不需要列表列,则可以使用 select
删除它们。
If you don't need the list columns, you can use select
to remove them.
dat1 %>% select(-data, -Cor)
# # A tibble: 3 x 3
# Column Estimate P_Value
# <chr> <dbl> <dbl>
# 1 Sepal.Length 0.83 4.19e-40
# 2 Sepal.Width -0.290 3.34e- 4
# 3 Petal.Length 0.94 8.16e-70
现在我们可以使用 mutate
和 case_when
添加标签以显示重要性。
Now we can use mutate
and case_when
to add the label to show significance.
dat2 <- dat1 %>%
select(-data, -Cor) %>%
mutate(Significance = case_when(
P_Value < 0.001 ~ "*** <0,001",
P_Value < 0.01 ~ "** <0,01",
P_Value < 0.05 ~ "*<0,05",
TRUE ~ "Not Significant"
))
dat2
# # A tibble: 3 x 4
# Column Estimate P_Value Significance
# <chr> <dbl> <dbl> <chr>
# 1 Sepal.Length 0.83 4.19e-40 *** <0,001
# 2 Sepal.Width -0.290 3.34e- 4 *** <0,001
# 3 Petal.Length 0.94 8.16e-70 *** <0,001
这篇关于R中具有p值的相关矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!