Я хотел бы вернуть значительные матчи из следующего результата, о котором фигура рис. 1Как вернуть значимые матчи в R corrplot?
library("corrplot")
M <- cor(mtcars)
# http://www.sthda.com/english/wiki/visualize-correlation-matrix-using-correlogram
cor.mtest <- function(mat, ...) {
mat <- as.matrix(mat)
n <- ncol(mat)
p.mat<- matrix(NA, n, n)
diag(p.mat) <- 0
for (i in 1:(n - 1)) {
for (j in (i + 1):n) {
tmp <- cor.test(mat[, i], mat[, j], ...)
p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
}
}
colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
p.mat
}
N <- length(mtcars) -1
p.mat <- cor.mtest(mtcars)
head(p.mat[, 1:N])
ids <- seq(1,N)
corrplot(M, type="upper", order="hclust", tl.pos=c("td"), method="circle",
tl.cex = 0.5, tl.col = 'black',
diag = FALSE, p.mat = p.mat,
sig.level = 0.0000005)
Рис. 1 Выход
Ожидаемый результат
cyl: wt hp
disp: wt hp cyl
...
R: 3.3.1
ОС: Debian 8.5
Два отличия: Моя функция векторизована и, следовательно, более эффективна (актуальна для данных с большим количеством столбцов). Функция 'cor.mtest' позволяет передавать параметры' cor.test' и, таким образом, тестировать другие типы корреляции и т. Д. Конечно, моя функция может быть расширена, но я оставляю это как упражнение для читателя. – Roland
Причина в том, что разработчики R предпочитают не поддерживать сомнительные статистические практики. Неинформированный поиск «значительных» корреляций является симптомом дноуглубительных работ и p-взлома. – Roland
Я думаю, что корреляция Спирсона должна включать здесь тоже, потому что http://stats.stackexchange.com/questions/8071/how-to-choose-between-pearson-and-spearman-correlation - - Можно ли здесь каким-то образом сочетаться? - Я думаю, что было бы правильно включить его, потому что тогда он говорит о монотонности и линейности корреляции. - Тем не менее, я не уверен, как включить его в презентацию corrgram. –