【发布时间】:2017-10-19 15:09:18
【问题描述】:
corrplot 允许您在 R 中绘制相关矩阵的方式
知道如何在 R 中绘制关联矩阵 其中关联方法是使用任何用户指定的方法,例如 Cramer's V
【问题讨论】:
-
你试过
corrplot和is.corr=FALSE吗?
标签: r associations correlation categorical-data r-corrplot
corrplot 允许您在 R 中绘制相关矩阵的方式
知道如何在 R 中绘制关联矩阵 其中关联方法是使用任何用户指定的方法,例如 Cramer's V
【问题讨论】:
corrplot和is.corr=FALSE吗?
标签: r associations correlation categorical-data r-corrplot
library(vcd)
library(corrplot)
我建议 corrplot(PairApply(df, cramerV),diag = F,is.corr = F) 将色阶从 -1,1 (is.corr = T) 更改为 0,1 (is.corr = F)。
【讨论】:
以 Alexey Knorre 的示例为基础:
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))
【讨论】:
您的问题的答案很大程度上取决于您获得的数据和特定的相关方法。我假设您有一堆名义变量,并想查看它们是否在相关图上使用 Cramer 的 V 相关。在这种情况下,一种方法如下:
vcd 库,因为它有计算Cramer's V 的方法。下面列出了执行此操作的丑陋但有效的代码。我玩过outer - 使用行和列索引的最清晰和最精确的方法,但是在使用m 的行和列索引对df 中的列进行索引时遇到了问题:出于某种原因,它只是不想从 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)
【讨论】: