我想计算几个列之间的Pearson相关性。JasonAizkalns在this thread中发布的解决方案对我非常有用。
df %>%
select_if(is.numeric) %>%
group_by(year) %>%
group_map(~ correlate(.x))
现在我想知道两件事:
我正在寻找一个尽可能简单的扩展,不需要使用完全不同的方法.
谢谢你的建议!
编辑1 (11/28/22):因为我的分组变量(“培训”)是一个字符变量,并且我得到了以下错误消息,所以我修改了我的代码。
错误在
group_by()
:!必须按.data
中找到的变量分组。找不到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)))
发布于 2022-11-25 17:59:42
我怎样才能得到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
为什么某些相关系数被标记为红色?
默认情况下,tibbles以红色显示负值或NA值,以使它们更容易被注意到。
https://stackoverflow.com/questions/74573082
复制相似问题