R: выделите ячейки в таблице cor (), у которых коэффициент корреляции больше порога - PullRequest
0 голосов
/ 02 ноября 2018

Функция cor () R, когда вызывается на фрейме данных, возвращает матрицу, содержащую коэффициенты корреляции, связанные с попарно элементами для фрейма данных. Но, похоже, нет никакой возможности пометить коэффициенты, которые имеют значения выше некоторого порога (например, STATA *)

Есть ли какой-нибудь косвенный способ заставить R сделать это?

Например,

M = matrix(rnorm(20*5, mean = 10, sd = 3), 20, 5)
symnum(cor(M), cutpoints =  c(0.1, 0.5),
    symbols = c( '', '*', '**'),
    legend = TRUE,
     corr = TRUE)

возвращает матрицу, лишенную коэффициентов корреляции; '', '*' или '**' заменили значения. Я хотел бы создать таблицу, которая содержит коэффициенты корреляции, и в то же время отобразить «*» в ячейке, если значение коэффициента больше 0,1, и отобразить «**», если значение коэффициента больше 0,5

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Одним из вариантов может быть пакет corrplot.

corrplot(cor(M), method='number')

Corrplot

0 голосов
/ 02 ноября 2018

symnum возвращает матрицу с такими же размерами, что и матрица корреляции, co в этом примере. Этот фрагмент кода выполняет 3 действия, вычисляет матрицу корреляции и округляет ее до 2 цифр. Затем использует paste для объединения чисел и значения, возвращенного из symnum. Только одна проблема: paste сводит матрицу к вектору, поэтому мы должны переустановить матричную форму. К счастью, и матрица, и вставка используют порядок столбцов, то есть элементы упорядочены по столбцам.

co <- cor(M)
co <- round(co, 2)
co[upper.tri(co, diag=TRUE)] <- ''
s <- symnum(co)
noquote(matrix(paste(co, s), ncol=ncol(co)))
attr(s, 'legend')
...