Existem vários problemas que tornam difícil ou impossível extrair qualquer informação utilizável da sua matriz de gráficos de dispersão.
Você tem muitas variáveis exibidas juntas. Quando você tem muitas variáveis em uma matriz de gráficos de dispersão, cada gráfico se torna pequeno demais para ser útil. O importante a ser observado é que muitas parcelas são duplicadas, o que desperdiça espaço. Além disso, embora você queira ver todas as combinações, não precisa plotá-las todas juntas. Observe que você pode quebrar uma matriz de gráficos de dispersão em blocos menores de quatro ou cinco (um número que é útil para visualização). Você só precisa fazer vários gráficos, um para cada bloco.
Como você tem muitos dados em pontos discretos no espaço , eles acabam se acumulando. Assim, você não pode ver quantos pontos existem em cada local. Existem vários truques para ajudá-lo a lidar com isso.
- O primeiro é tremer . Tremulação significa adicionar uma pequena quantidade de ruído aos valores do seu conjunto de dados. O ruído é retirado de uma distribuição uniforme centrada no seu valor, mais ou menos, uma pequena quantidade. Existem algoritmos para determinar uma quantidade ideal, mas como seus dados vêm em unidades inteiras de um a dez, parece ser uma boa escolha. .5
- Com tantos dados, mesmo tremores dificultam o discernimento. Você pode usar cores altamente saturadas, mas amplamente transparentes para explicar isso. Onde houver muitos dados empilhados uns sobre os outros, a cor ficará mais escura e onde houver pouca densidade, a cor será mais clara.
- Para que a transparência funcione, você precisará de símbolos sólidos para exibir seus dados, enquanto R usa círculos vazios por padrão.
Usando essas estratégias, aqui está um exemplo de código R e os gráficos feitos:
# 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) }
}
}