Матрица ассоциаций в r

Способ corrplot позволяет построить корреляционную матрицу в R

Любая идея, как я могу построить матрицу ассоциации в R, где метод ассоциации использует любой указанный пользователем метод, такой как V Крамера


person Juno Keynes    schedule 19.05.2017    source источник
comment
Вы пробовали corrplot с is.corr=FALSE?   -  person G5W    schedule 19.05.2017


Ответы (3)


Ответ на ваш вопрос сильно зависит от имеющихся данных и конкретного метода корреляции. Я предполагаю, что у вас есть набор номинальных переменных и вы хотите посмотреть, коррелированы ли они, используя V Крамера на графике корреляции. В этом случае это можно сделать следующим образом:

  1. Рассчитайте коэффициент корреляции V Крамера для каждой пары переменных. Я использовал vcd библиотеку, так как в ней есть метод для вычисления V.
  2. Сложите эти коэффициенты вместе и получите корреляционную матрицу
  3. Визуализируйте матрицу

Уродливый, но рабочий код для этого приведен ниже. Я поигрался с внешним - самым ясным и точным способ работы с индексами строк и столбцов, но возникли проблемы с индексированием столбцов в df с использованием индекса строки и столбца из m: по какой-то причине он просто не хотел получать переменную из df.

install.packages("vcd")
library(vcd)

# Simulate some data or paste your own
df <- data.frame(x1 = sample(letters[1:5], 20, replace = TRUE), 
                 x2 = sample(letters[1:5], 20, replace = TRUE), 
                 x3 = sample(letters[1:5], 20, replace = TRUE))

# Initialize empty matrix to store coefficients
empty_m <- matrix(ncol = length(df),
            nrow = length(df),
            dimnames = list(names(df), 
                            names(df)))
# Function that accepts matrix for coefficients and data and returns a correlation matrix
calculate_cramer <- function(m, df) {
 for (r in seq(nrow(m))){
   for (c in seq(ncol(m))){
     m[[r, c]] <- assocstats(table(df[[r]], df[[c]]))$cramer
   }
 }
    return(m)
}

cor_matrix <- calculate_cramer(empty_m ,data)

corrplot(cor_matrix)

corrplot for cramer's V

person Alex Knorre    schedule 19.05.2017

На примере Алексея Кнорре:

library(DescTools)
library(corrplot)

# Simulate data
df <- data.frame(x1 = sample(letters[1:5], 20, replace = TRUE), 
                 x2 = sample(letters[1:5], 20, replace = TRUE), 
                 x3 = sample(letters[1:5], 20, replace = TRUE))

# Use CramerV as input for corrplot
corrplot::corrplot(DescTools::PairApply(df, DescTools::CramerV))
person graggsd    schedule 20.04.2020

library(vcd)
library(corrplot)

Я бы предложил corrplot(PairApply(df, cramerV),diag = F,is.corr = F) изменить цветовую шкалу с -1,1 (is.corr = T) на 0,1 (is.corr = F).

person Psyndrom Ventura    schedule 15.09.2020