我想计算几个列之间的Pearson相关性。JasonAizkalns在这个线程中发布的解决方案对我非常有用。
df %>%
select_if(is.numeric) %>%
group_by(year) %>%
group_map(~ correlate(.x))
现在我想知道两件事:
- 如何获得p值?
- 为什么一些相关系数用红色标记?我没有在文档中找到任何关于它的信息。这些已经是显著的相关性了吗?如果是,使用哪个显著性水平?
我正在寻找一个尽可能简单的扩展,而不必使用完全不同的方法。
谢谢你的建议!
编辑1 (11/28/22):因为我的分组变量("trainingsmodus")是一个字符变量,我得到以下错误消息,我已经调整了我的代码。
group_by()
错误:! 必须按.data
中找到的变量分组。找不到trainingsmodus
列回溯:
- …%在%…
- dplyr::: group_by.data.frame (trainingsmodus)
我的改编代码:
df %>%
select_if(is.character) %>%
group_by(year) %>%
group_map(~ correlate(.x)) %>%
add_column(year)
即使我将分组变量创建为数字变量,两组的结果也完全相同,这没有意义。有谁能告诉我如何修改代码吗?
编辑2 (11/28/22)我的df和代码的再现:
df <- data.frame(year = c("lorem", "ipsum", "lorem", "ipsum"),
var1 = 4:7,
var2 = 5:8,
var3 = 6:9,
var4 = 7:10)
library(rstatix)
df %>%
select_if(is.character) %>%
group_by(year) %>%
group_map(~ cor_test(df,
vars = c("var1", "var2", "var3", "var4"),
vars2 = c("var1", "var2", "var3", "var4") %>%
filter(is.finite(statistic)))
如何获得p值?
correlate()
不提供此信息,因此您需要使用另一个工具。rstatix
包有一个函数cor_test()
,可以用来代替:
library(tibble)
library(dplyr)
library(rstatix)
df <- tribble(
~year, ~V1, ~V2, ~V3, ~misc_var,
2018, 5, 6, 5, "a",
2018, 4, 6, 4, "b",
2018, 3, 2, 3, NA,
2013, 5, 8, 2, "4",
2013, 6, 3, 8, "8",
2013, 4, 7, 5, NA
)
df |>
select(where(is.numeric)) |>
group_by(year) |>
group_map(~ cor_test(.x, vars = c("V1", "V2", "V3"),
vars2 = c("V1", "V2", "V3")) |>
filter(is.finite(statistic)) |>
add_column(.y))
[[1]]
# A tibble: 7 × 7
var1 var2 cor statistic p method year
<chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl>
1 V1 V2 -0.76 -1.15 0.454 Pearson 2013
2 V1 V3 0.5 0.577 0.667 Pearson 2013
3 V2 V1 -0.76 -1.15 0.454 Pearson 2013
4 V2 V2 1 67108864 0.00000000949 Pearson 2013
5 V2 V3 -0.94 -2.89 0.212 Pearson 2013
6 V3 V1 0.5 0.577 0.667 Pearson 2013
7 V3 V2 -0.94 -2.89 0.212 Pearson 2013
[[2]]
# A tibble: 4 × 7
var1 var2 cor statistic p method year
<chr> <chr> <dbl> <dbl> <dbl> <chr> <dbl>
1 V1 V2 0.87 1.73 0.333 Pearson 2018
2 V2 V1 0.87 1.73 0.333 Pearson 2018
3 V2 V3 0.87 1.73 0.333 Pearson 2018
4 V3 V2 0.87 1.73 0.333 Pearson 2018
为什么有些相关系数用红色标记?
默认情况下,标题以红色显示负值或NA值,以便更容易注意到。