Ada sejumlah masalah yang membuatnya sulit atau tidak mungkin untuk mengekstrak informasi yang dapat digunakan dari matriks sebar Anda.
Anda memiliki terlalu banyak variabel yang ditampilkan bersama. Ketika Anda memiliki banyak variabel dalam matriks sebar, setiap plot menjadi terlalu kecil untuk berguna. Yang perlu diperhatikan adalah banyak plot digandakan, yang membuang-buang ruang. Selain itu, meskipun Anda ingin melihat setiap kombinasi, Anda tidak harus menyusun semuanya. Perhatikan bahwa Anda dapat memecah matriks scatterplot menjadi blok yang lebih kecil dari empat atau lima (angka yang berguna secara visual). Anda hanya perlu membuat beberapa plot, satu untuk setiap blok.
Karena Anda memiliki banyak data pada titik-titik diskrit di ruang , mereka akhirnya menumpuk satu sama lain. Dengan demikian, Anda tidak dapat melihat berapa banyak titik di setiap lokasi. Ada beberapa trik untuk membantu Anda menangani ini.
- Yang pertama adalah jitter . Jittering berarti menambahkan sedikit noise ke nilai-nilai dalam dataset Anda. Kebisingan diambil dari distribusi seragam yang berpusat pada nilai Anda plus atau minus sejumlah kecil. Ada algoritma untuk menentukan jumlah yang optimal, tetapi karena data Anda datang dalam satuan penuh dari satu hingga sepuluh, sepertinya pilihan yang baik. .5
- Dengan begitu banyak data, bahkan jittering akan membuat patters sulit untuk dilihat. Anda dapat menggunakan warna yang sangat jenuh, tetapi sebagian besar transparan untuk menjelaskan hal ini. Di mana ada banyak data yang ditumpuk di atas satu sama lain, warnanya akan menjadi lebih gelap, dan di mana ada sedikit kepadatan, warnanya akan lebih terang.
- Agar transparansi berfungsi, Anda akan memerlukan simbol yang solid untuk menampilkan data Anda, sedangkan R menggunakan lingkaran kosong secara default.
Dengan menggunakan strategi ini, berikut adalah beberapa contoh kode R dan plot yang dibuat:
# the alpha argument in rgb() lets you set the transparency
cols2 = c(rgb(red=255, green=0, blue=0, alpha=50, maxColorValue=255),
rgb(red=0, green=0, blue=255, alpha=50, maxColorValue=255) )
cols2 = ifelse(breast$class==2, cols2[1], cols2[2])
# here we jitter the data
set.seed(6141) # this makes the example exactly reproducible
jbreast = apply(breast[,1:9], 2, FUN=function(x){ jitter(x, amount=.5) })
jbreast = cbind(jbreast, class=breast[,10]) # the class variable is not jittered
windows() # the 1st 5 variables, using pch=16
pairs(jbreast[,1:5], col=cols2, pch=16)
windows() # the 2nd 5 variables
pairs(jbreast[,6:10], col=cols2, pch=16)
windows() # to match up the 1st & 2nd sets requires more coding
layout(matrix(1:25, nrow=5, byrow=T))
par(mar=c(.5,.5,.5,.5), oma=c(2,2,2,2))
for(i in 1:5){
for(j in 6:10){
plot(jbreast[,j], jbreast[,i], col=cols2, pch=16,
axes=F, main="", xlab="", ylab="")
box()
if(j==6 ){ mtext(colnames(jbreast)[i], side=2, cex=.7, line=1) }
if(i==5 ){ mtext(colnames(jbreast)[j], side=1, cex=.7, line=1) }
if(j==10){ axis(side=4, seq(2,10,2), cex.axis=.8) }
if(i==1 ){ axis(side=3, seq(2,10,2), cex.axis=.8) }
}
}