1. +
Bioestatística - Universidade Católica de Brasília
Gráficos exploratórios e clusters
Prof. Dr. Gabriel da Rocha Fernandes
Universidade Católica de Brasília
gabrielf@ucb.br - fernandes.gabriel@gmail.com
2. +
Por que usar gráficos?
2
nPara entenders as propriedades dos seus dados.
nPara identificar padrões nos seus dados.
nPara sugerir modelos.
nPara encontrar os erros nas suas análises.
nPara divulgar seus resultados.
nGráficos exploratórios servem para isso tudo, menos para
divulgar seus resultados.
3. +
Características de gráficos
exploratórios
nSão feitos rapidamente.
nSão feitos em grande número.
nO objetivo é que você entenda.
nSem preocupação com eixos, títulos e legendas.
nUtiliza muito a informação de cor e tamanho para guardar
informação.
3
6. +
Testando - Boxplot
npData = read.csv('/var/www/learning/pdf/ss06pid.csv')
nBoxblot dá uma ideia de como a distribuição é.
nMostra simetria, amplitude.
nBásico:
n boxplot(pData$AGEP,col="blue")
nComparando na mesma escala:
n boxplot(pData$AGEP ~ as.factor(pData$DDRS),col="blue")
nObservando o tamanho da amostra:
n boxplot(pData$AGEP ~ as.factor(pData
$DDRS),col=c("blue","orange"),names=c("yes","no"),varwidth=TRUE)
6
7. +
Testando - Barplot, Histograma e
Density plot
nBarplot:
n barplot(table(pData$CIT),col="blue")
nHistograma:
n hist(pData$AGEP,col="blue")
nHistograma com mais barras (mais resolução):
n hist(pData$AGEP,col="blue",breaks=100,main="Age")
nGráfico de densidade:
n dens <- density(pData$AGEP); plot(dens,lwd=3,col="blue")
nComparando dois gráficos de densidade:
n dens <- density(pData$AGEP); densMales <- density(pData
$AGEP[which(pData$SEX==1)]); plot(dens,lwd=3,col="blue");
lines(densMales,lwd=3,col="orange")
7
8. +
Scatterplot
nGráfico de pontos.
nExemplo:Tempo Trabalhando X Remuneração
n plot(pData$JWMNP,pData$WAGP,pch=19,col="blue")
nAlterando o tamanho do ponto (cex):
n plot(pData$JWMNP,pData$WAGP,pch=19,col="blue",cex=0.5)
nColorindo por um determinado fator:
n plot(pData$JWMNP,pData$WAGP,pch=19,col=pData$SEX,cex=0.5)
nAdicionando uma terceira dimensão:
n percentMaxAge <- pData$AGEP/max(pData$AGEP); plot(pData
$JWMNP,pData$WAGP,pch=19,col="blue",cex=percentMaxAge*0.5)
8
9. +
Scatterplot
nAdicionando pontos e linhas:
n plot(pData$JWMNP,pData$WAGP,pch=19,col="blue",cex=0.5);
lines(rep(100,dim(pData)[1]),pData$WAGP,col="grey",lwd=5);
points(seq(0,200,length=100),seq(0,20e5,length=100),col="red",pch=1
9)
nTerceira dimensão em cores:
n library(Hmisc); ageGroups <- cut2(pData$AGEP,g=5); plot(pData
$JWMNP,pData WAGP,pch=19,col=ageGroups,cex=0.5)
9
10. +
E se eu tiver muitos pontos?
nGerando os dados:
n x <- rnorm(1e5); y <- rnorm(1e5); plot(x,y,pch=19)
nSubamostragem:
n sampledValues <- sample(1:1e5,size=1000,replace=FALSE);
plot(x[sampledValues],y[sampledValues],pch=19)
nSmoothScatter:
n smoothScatter(x,y)
nHexbin:
n library(hexbin); hbo <- hexbin(x,y); plot(hbo)
10
11. +
QQ-Plot
nPlota o valor de um determinado quantil da variável X contra o
mesmo quantil da variávelY.
nIdeal para ver se sua amostra responde a uma distribuição
normal.
n x <- rnorm(100); y <- rnorm(100); qqplot(x,y); abline(c(0,1))
11
12. +
Matplot e Heatmap
nMatPlot: Plota cada coluna de uma matriz.
nIdeal para estudos ao longo do tempo, análise longitudinal.
n X <- matrix(rnorm(20*5),nrow=20); matplot(X,type="b")
nHeatMap: Quase um histograma de duas dimensões.
nHeatmap das 10 primeiras observações, utilizando as variáveis
161 a 236:
n image(1:10,161:236,as.matrix(pData[1:10,161:236]))
nTrocando linhas por colunas:
n newMatrix <- as.matrix(pData[1:10,161:236]); newMatrix <-
t(newMatrix)[,nrow(newMatrix):1]; image(161:236, 1:10, newMatrix)
12
13. +
Gráficos expositórios
nComunicar seus resultados: artigos, teses...
nInformações densas. Para explicar o que é difícil explicar com
texto.
nUsar cores e tamanho como ferramentas estéticas e para
facilitar o entendimento.
nEixos, títulos e legendas fáceis de entender.
13
14. +
Eixos
nIncluir uma descrição clara citando a unidade de medida
utilizada.
nNomear os eixos:
n plot(pData$JWMNP,pData$WAGP,pch=19,col="blue",cex=0.5,
xlab="Travel time (min)",ylab="Last 12 month wages (dollars)")
nMudar o tamanho do título dos eixos:
n plot(pData$JWMNP,pData$WAGP,pch=19,col="blue",cex=0.5,
xlab="Travel time (min)",ylab="Last 12 month wages
(dollars)",cex.lab=2,cex.axis=1.5)
14
17. +
Clusters
nOrganizar pontos que estão próximos em grupos.
nComo definimos o que está perto?
nComo agrupamos?
nComo visualizar os grupos?
nComo interpretar os grupos?
17
18. +
Cluster hierárquico
nCritério aglomerativo.
n Pega os dois pontos mais relacionados.
n Agrupa.
n Encontra o próximo ponto mais perto.
nRequer
n Uma distância definida.
n Critério para agrupamento.
nProduz
n Uma árvore mostrando quão perto seus pontos estão uns dos outros.
18
19. +
Definindo a distância
nSeus dados podem ser utilizados para medir distância?
nDistância ou similaridade?
nSe seus dados são um contínuo:
n Distância euclidiana
n Correlação (similaridade)
nSe seus dados são binários:
n Distância de Manhattan
nUtilize uma métrica que faz sentido para sua análise.
19
26. +
R, faz pra mim
nFunção hclust:
n distxy <- dist(dataFrame); hClustering <- hclust(distxy);
plot(hClustering)
nOnde cortar para definir seus clusters?
nArbitrário?
26
27. +
K-means
nCritério de particionamento:
n Numero de clusters fixo.
n Encontra o centróide para cada cluster.
n Associa os pontos mais próximos ao centróide.
n Recalcula os centróides.
nRequer:
n Distância métrica definida.
n Numero de clusters definido.
nProduz:
n Pontos centróides para cada cluster.
n Associa cada ponto a um cluster.
27