Как остановить повторяющиеся корреляции в таблице корреляций Спирмена Ро в R? - PullRequest
1 голос
/ 14 июня 2019

Я использовал следующий код для составления таблицы корреляций Spearman Rho для файла CSV с 2+ столбцами в R:

> myDataset <- read.csv(file.choose())
> attach(myDataset)
> spearmanRhoTestData <- cor(myDataset, use="complete.obs",method="spearman")

Однако в моей таблице (spearmanRhoTestData) корреляция между любыми двумя переменными будет отображаться дважды (как показано ниже):

    Var1 Var2 Var3 Var4
Var1  1   0.5  0.7 0.9
Var2  0.5  1   0.3 0.6  
Var3  0.7  0.3  1  0.2
Var4  0.9  0.6  0.2 1

Можно ли как-нибудь написать код на R, чтобы избавиться от значений корреляции (например, между var1 и var2) от появления дважды во всей таблице ??

1 Ответ

0 голосов
/ 14 июня 2019

Самый простой подход, предполагающий, что вы хотите сохранить формат матрицы корреляции, это

# set upper triangle values to NA
spearmanRhoTestData[upper.tri(spearmanRhoTestData)] = NA

# visualise updated matrix
spearmanRhoTestData

Вот альтернативный подход, использующий пакет corrr, который даст вам измененный корреляционный кадр данных без дубликатов:

library(corrr)

# get correaltion matrix
tbl = correlate(mtcars)

# set upper triangle values to NA
tbl[upper.tri(tbl)] = NA

# reshape and omit NAs
stretch(tbl, na.rm = T)

# # A tibble: 55 x 3
#     x     y     r
#  <chr> <chr>  <dbl>
# 1 mpg   cyl   -0.852
# 2 mpg   disp  -0.848
# 3 mpg   hp    -0.776
# 4 mpg   drat   0.681
# 5 mpg   wt    -0.868
# 6 mpg   qsec   0.419
# 7 mpg   vs     0.664
# 8 mpg   am     0.600
# 9 mpg   gear   0.480
# 10 mpg   carb  -0.551
# # ... with 45 more rows
...