Как запустить многомерную корреляцию? - PullRequest
1 голос
/ 14 июля 2020

У меня есть большой объем данных, которые я хотел бы разделить на несколько переменных, как показано на следующем графике:

enter image description here

There are a total of 63 plots here, divided by 3 variables (rows, cols and fram). In reality, of course, valuex and valuey have more than 3 observations. I would like to find the Pearson correlation for every single one of these as efficiently as possible and I'm kinda blanking on ideas.

Here's some example data with which the plot was created:

example_df <- data.frame(rows = rep(c('r1', 'r2', 'r3'), 63),
                         cols = rep(letters[1:7], 27),
                         fram = rep(c('X', 'Y', 'Z'), each = 63),
                         valuex = rnorm(189),
                         valuey = rnorm(189))

1 Ответ

1 голос
/ 14 июля 2020

Вы можете использовать несколько переменных от dplyr до group_by, а затем summarize, чтобы получить cor между valuex и valuey для каждой подгруппы:

library(dplyr)

example_df %>% group_by(rows, cols, fram) %>% summarize(cor = cor(valuex, valuey))
#> # A tibble: 63 x 4
#> # Groups:   rows, cols [21]
#>    rows  cols  fram     cor
#>    <chr> <chr> <chr>  <dbl>
#>  1 r1    a     X     -0.709
#>  2 r1    a     Y      0.178
#>  3 r1    a     Z     -0.597
#>  4 r1    b     X     -0.338
#>  5 r1    b     Y      0.981
#>  6 r1    b     Z     -0.731
#>  7 r1    c     X      0.945
#>  8 r1    c     Y     -0.913
#>  9 r1    c     Z      0.177
#> 10 r1    d     X      0.999
#> # ... with 53 more rows

Created 14.07.2020 с помощью пакета REPEX (v0.3.0)

...