Saya memiliki 92 set data dengan tipe yang sama.
Saya ingin membuat matriks korelasi untuk dua kombinasi yang mungkin.
yaitu saya ingin matriks 92 x92.
sehingga elemen (ci, cj) harus merupakan korelasi antara ci dan cj.
Bagaimana aku melakukan itu?
r
matrix
visualization
correlation
Swapnil 'Tux' Takle
sumber
sumber
cor
fungsi, ataurcorr
fungsi dalamHmisc
paketJawaban:
Sebuah contoh,
d <- data.frame(x1=rnorm(10), x2=rnorm(10), x3=rnorm(10)) cor(d) # get correlations (returns matrix)
sumber
Anda bisa menggunakan paket '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
Informasi lebih lanjut di sini: http://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html
sumber
Fungsi cor akan menggunakan kolom-kolom matriks dalam perhitungan korelasi. Jadi, jumlah baris antara matriks x dan matriks y harus sama . Ex.:
set.seed(1) x <- matrix(rnorm(20), nrow=5, ncol=4) y <- matrix(rnorm(15), nrow=5, ncol=3) COR <- cor(x,y) COR image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, xlab="x column", ylab="y column") text(expand.grid(x=seq(dim(x)[2]), y=seq(dim(y)[2])), labels=round(c(COR),2))
Edit:
Berikut adalah contoh label baris dan kolom kustom pada matriks korelasi yang dihitung dengan matriks tunggal:
png("corplot.png", width=5, height=5, units="in", res=200) op <- par(mar=c(6,6,1,1), ps=10) COR <- cor(iris[,1:4]) image(x=seq(nrow(COR)), y=seq(ncol(COR)), z=cor(iris[,1:4]), axes=F, xlab="", ylab="") text(expand.grid(x=seq(dim(COR)[1]), y=seq(dim(COR)[2])), labels=round(c(COR),2)) box() axis(1, at=seq(nrow(COR)), labels = rownames(COR), las=2) axis(2, at=seq(ncol(COR)), labels = colnames(COR), las=1) par(op) dev.off()
sumber
image(x=seq(dim(x)[2]), y=seq(dim(y)[2]), z=COR, col=rev(heat.colors(20)), xlab="x column", ylab="y column")
image
fungsi tidak secara otomatis mengambil nama baris dan kolom, jadi ini harus ditambahkan.Lihat qtlcharts . Ini memungkinkan Anda membuat matriks korelasi interaktif :
library(qtlcharts) data(iris) iris$Species <- NULL iplotCorr(iris, reorder=TRUE)
Ini lebih mengesankan ketika Anda menghubungkan lebih banyak variabel, seperti dalam sketsa paket:
sumber
Ada cara lain untuk mencapai ini di sini: ( Plot matriks korelasi ke dalam grafik ), tapi saya suka versi Anda dengan korelasi di kotak. Apakah ada cara untuk menambahkan nama variabel ke kolom x dan y daripada hanya nomor indeks tersebut? Bagi saya, itu akan membuat ini menjadi solusi yang sempurna. Terima kasih!
sunting: Saya mencoba mengomentari kiriman oleh [Marc di dalam kotak], tetapi saya jelas tidak tahu apa yang saya lakukan. Namun, saya berhasil menjawab pertanyaan ini untuk diri saya sendiri.
jika d adalah matriks (atau bingkai data asli) dan nama kolom yang Anda inginkan, maka berikut ini berfungsi:
axis(1, 1:dim(d)[2], colnames(d), las=2) axis(2, 1:dim(d)[2], colnames(d), las=2)
las = 0 akan membalik nama kembali ke posisi normalnya, nama saya panjang, jadi saya menggunakan las = 2 untuk membuatnya tegak lurus dengan sumbu.
edit2: untuk menyembunyikan gambar () fungsi pencetakan angka pada grid (jika tidak mereka tumpang tindih dengan label variabel Anda), tambahkan xaxt = 'n', misalnya:
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')
sumber