Как я могу создать корреляционную матрицу в R?



У меня есть 92 набора данных одного типа.



Я хочу сделать корреляционную матрицу для любых двух возможных комбинаций.



т. е. я хочу матрицу 92 x92.



такой, что элемент (ci, cj) должен быть корреляцией между ci и cj.



Как мне это сделать?

811   5  

5 ответов:

пример

 d &lt- data.frame(x1=rnorm(10),
                 x2=rnorm(10),
                 x3=rnorm(10))
cor(d) # get correlations (returns matrix)

вы можете использовать пакет 'corrplot'.

d <- data.frame(x1=rnorm(10),
                 x2=rnorm(10),
                 x3=rnorm(10))
M <- cor(d) # get correlations

library('corrplot') #package corrplot
corrplot(M, method = "circle") #plot matrix

enter image description here

дополнительная информация здесь: http://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html

The кор

посмотреть qtlcharts. Это позволяет создавать interactive корреляционных матриц:

library(qtlcharts)
data(iris)
iris$Species <- NULL
iplotCorr(iris, reorder=TRUE)

enter image description here

это более впечатляюще, когда вы коррелируете больше переменных, как в виньетке пакета: enter image description here

есть и другие способы добиться этого вот: (построить корреляционную матрицу в виде графика), но мне нравится ваша версия с корреляциями в коробках. Есть ли способ добавить имена переменных в столбец x и y вместо только этих индексов? Для меня это было бы идеальным решением. Спасибо!

edit: я пытался прокомментировать сообщение [Marc in the box], но я явно не знаю, что я делаю. Тем не менее, мне удалось ответить на этот вопрос себя.

Если d-матрица (или исходный фрейм данных), а имена столбцов-это то, что вы хотите, то работает следующее:

axis(1, 1:dim(d)[2], colnames(d), las=2)
axis(2, 1:dim(d)[2], colnames(d), las=2)

las=0 перевернул бы имена обратно в их нормальное положение, мои были длинными, поэтому я использовал las=2, чтобы сделать их перпендикулярными оси.

edit2: чтобы подавить функцию image () печать чисел на сетке (в противном случае они перекрывают ваши метки переменных), добавьте xaxt='n', например:

image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, col=rev(heat.colors(20)), xlab="x column", ylab="y column", xaxt='n')

Comments

    Ничего не найдено.