散布図行列から使用可能な情報を抽出することを困難または不可能にする多くの問題があります。
一緒に表示されている変数が多すぎます。 散布図行列に多くの変数がある場合、各プロットは小さすぎて役に立たなくなります。注目すべきことは、多くのプロットが複製され、スペースを浪費していることです。また、すべての組み合わせを確認する必要がありますが、それらをすべて一緒にプロットする必要はありません。散布図行列を4または5の小さなブロックに分割できることに注意してください(便利に視覚化できる数)。ブロックごとに1つずつ、複数のプロットを作成する必要があります。
空間内の離散点に多くのデータがあるため、それらは互いに重なり合ってしまいます。したがって、各場所にあるポイントの数はわかりません。これに対処するのに役立ついくつかのトリックがあります。
- .5
- データが多すぎると、ジッタリングによってパターンを識別しにくくなります。彩度は高いが、これを考慮してほとんど透明な色を使用できます。積み重ねられたデータが多い場合は色が濃くなり、密度が少ない場合は色が薄くなります。
- 透明度を機能させるには、データを表示するために塗りつぶしの記号が必要ですが、Rはデフォルトで中空の円を使用します。
これらの戦略を使用して、Rコードの例と作成されたプロットを次に示します。
# 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) }
}
}