IntroduĆ§Ć£o

  • Toda anĆ”lise estatĆ­stica depende de boas estratĆ©gias para a visualizaĆ§Ć£o de dados;
  • Formas ineficientes de visualizaĆ§Ć£o colaboram para inferĆŖncias incorretas;
  • A aplicaƧnao de boas estratĆ©gias grĆ”ficas nĆ£o Ć© uma tarefa trivial.

Exemplos de funƧƵes para visualizaĆ§Ć£o de dados

MĆ©todo funĆ§Ć£o (graphics) no pacote (package)
3D scatterplot cloud (lattice)
Matrix of scatterplots pairs splom (lattice)
Bivariate density surface persp wireframe (lattice)
Contour plot contour, image contourLines, filled.contour contourplot (lattice) , contour (MASS), levelplot (lattice)
Parallel coord. plot parallel (lattice), parallelplot (MASS)

Exemplos de funƧƵes para visualizaĆ§Ć£o de dados

MĆ©todo funĆ§Ć£o (graphics) no pacote (package)
Star plot stars .
Segment plot stars .
Interactive 3D graphics (rggobi), (rgl)

Matriz de DispersĆ£o

  • A matriz de dispersĆ£o Ć© uma generaĆ§Ć£o do grĆ”fico de dispersĆ£o;
  • Ela deve ser aplicada para conjuntos contendo mĆŗltiplas variĆ”veis contĆ­nuas;
  • O grĆ”fico Ć© produzido pela combinaĆ§Ć£o dos diagramas para todos os pares de variĆ”veis;

Exemplo 1 - Matriz de DispersĆ£o

data(iris)
pairs(iris[101:150, 1:4])

Exemplo 2 - Matriz de DispersĆ£o+

panel.d <- function(x, ...) {
   usr <- par("usr")
   on.exit(par(usr))
   par(usr = c(usr[1:2], 0, .5))
   lines(density(x))
}

Exemplo 2 - Matriz de DispersĆ£o+

x <- scale(iris[101:150, 1:4])
r <- range(x)
pairs(x, diag.panel = panel.d, xlim = r, ylim = r)

Exemplo 3 - Matriz de DispersĆ£o via Lattice

library(lattice)
splom(iris[101:150, 1:4])

splom(iris[,1:4], groups = iris$Species)

splom(~iris[1:4], groups = Species, data = iris,
col = 1, pch = c(1, 2, 3), cex = c(.5,.5,.5))

GrƔficos de Superfƭcie e 3D

  • VisualizaĆ§Ć£o de superfĆ­cie pode ser realizada de diversas maneiras;
  • Habitualmente, usuĆ”rios buscar criar grĆ”ficos 3D;
  • GrĆ”ficos 3D sĆ£o problemĆ”ticos quando apresentados estaticamente;

Exemplo - Normal Bivariada

\[ f(x,y) = \frac{1}{2\pi}e^{-\frac{1}{2}(x^2 + y^2)} , (x,y) \in \Re^{2}\]

Define-se, entĆ£o a funĆ§Ć£o bivariada e determinam-se seus valores em um grid:

f <- function(x,y) {
  z <- (1/(2*pi)) * exp(-.5 * (x^2 + y^2))
}
y <- x <- seq(-3, 3, length=50)
z <- outer(x, y, f)

Normal Bivariada

persp(x, y, z)

Normal Bivariada

persp(x, y, z, theta=45, phi=30, expand=0.6, ltheta=120, shade=0.75,
      ticktype="detailed", xlab="X", ylab="Y", zlab=expression(f(x,y)))

Outras funƧƵes para grƔficos de superfƭcies

GrĆ”ficos de superfĆ­cies podem ser feitos usando a funĆ§Ć£o wireframe (lattice)

O grĆ”fico a seguir mostra a distribuiĆ§Ć£o normal multivariada usando o wireframe

Normal Bivariada - wireframe

library(lattice)
wireframe(z)

GrĆ”ficos de DispersĆ£o 3D

  • A funĆ§Ć£o cloud produz grĆ”ficos de dispersĆ£o 3D;
  • Uma possĆ­vel aplicaĆ§Ć£o desse tipo de grĆ”fico Ć© explorar de existem aglomerados ou grupos nos dados;
  • O problema deste tipo de visualizaĆ§Ć£o Ć© a perda de informaĆ§Ć£o em representar informaƧƵes 3D em um plano 2D.

Nuvem de Pontos

library(lattice)
cloud(Petal.Length ~ Sepal.Length * Sepal.Width, data=iris, groups=Species)

Nuvem de Pontos

cloud(Sepal.Length~Petal.Length*Petal.Width, data=iris, groups=Species,
      pch=1:3, zlab="SL", screen=list(z=30, x=-75, y=0))

GrƔficos de Contorno

  • GrĆ”ficos de contorno representam uma superfĆ­cie 3D \((x,y,f(x,y))\) em um plano pela projeĆ§Ć£o das curvas de nĆ­vel \(f(x,y) = c\) para uma constante c;
  • As funƧƵes countour(graphics) e countorplot(lattice) podem ser utilizadas para isso;
  • Utilizaremos o conjunto volcano como exemplo. Ele Ć© uma matriz de 87x61 contendo informaƧƵes topograficas do vulcĆ£o de Maunga Whau.

GrƔfico de Contorno I

contour(volcano, asp = 1, labcex = 1)

GrƔfico de Contorno II

library(lattice)
contourplot(volcano) 

GrƔficos de Contorno Preenchidos

  • Ɖ possĆ­vel fazer um grĆ”fico de contorno com um efeito 3D e mostrĆ”-lo em 2D sobrepondo as linhas de contorno com uma cor correspondente a altura;
  • Um exemplo utilizarĆ” a funĆ§Ć£o contour;
  • O exemplo seguinte utilizarĆ” a funĆ§Ć£o filledcontour;
  • O exemplo final utilizarĆ” a funĆ§Ć£o levelplot;

GrƔfico de Contorno Preenchido I

image(volcano, col = terrain.colors(100), axes = FALSE)
contour(volcano, levels = seq(100,200,by = 10), add = TRUE)

GrƔfico de Contorno Preenchido II

filled.contour(volcano, color = terrain.colors, asp = 1)

GrƔfico de Contorno Preenchido III

levelplot(volcano)

VisualizaĆ§Ć£o de Bases Volumosas

  • As opƧƵes acima podem ser utilizadas em qualquer conjunto de dados;
  • Grandes bases de dados terĆ£o sua visualizaĆ§Ć£o afetada;
  • O pacote hexbin possui uma implementaĆ§Ć£o que incorpora densidade dos dados em seus diagramas.

Base de Dados Volumosa I

x <- matrix(rnorm(2e6), nc=2)
plot(x, xlab='Dim 1', ylab='Dim 2')

Base de Dados Volumosa II

library(hexbin)
plot(hexbin(x), xlab='Dim 1', ylab='Dim 2')

Curvas de Andrews:

Se \(X_1, \dots, X_n \in R^d\), uma idĆ©ia de visualizaĆ§Ć£o em duas dimensƵes Ć© projetar cada vetor em uma funĆ§Ć£o real. As "Curvas de Andrews" mapeiam a observaĆ§Ć£o \(x_i = x_{i1}, \dots, x_{id}\) na funĆ§Ć£o:

\[ f_{i}(t) = \frac{x_{i1}}{\sqrt{2}} + x_{i2}\sin{t} + {x_{i3}}\cos{t} + {x_{i4}}\sin{2t} + {x_{i5}}\cos{2t} + \dots\]

\[ = \frac{x_{i1}}{\sqrt{2}} + \sum_{1 \leq k \leq d/2} x_{i,2k}\sin{kt} + \sum_{1 \leq k \leq d/2}x_{i,2k+1}\cos{kt} \]

\[ -\pi \leq t \leq \pi \]

Assim, cada observaĆ§Ć£o Ć© representada por sua projeĆ§Ć£o em um conjunto de funƧƵes base (ortogonais): \(\{ 2^{-1/2}, \{sin kt\}, \{cos kt\} \}\)

Curvas de Andrews

  • Banco de dados lefshape no pacote DAAG;
  • TrĆŖs medidas serĆ£o consideradas correspondentes a pontos no \(\Re^{3}\)
  • Para representar as curvas, defina uma funĆ§Ć£o para computar \(f_{i}(t)\) para pontos arbritĆ”rios em \(\Re^{3}\) e \(-\pi \leq t \leq \pi\).

Curvas de Andrews

library(DAAG)
x <- with(leafshape17, cbind(bladelen, petiole, bladewid))
n <- nrow(x)
mins <- apply(x, 2, min)
maxs <- apply(x, 2, max)
r <- maxs - mins
y <- sweep(x, 2, mins)
y <- sweep(y, 2, r, "/")
x <- 2 * y - 1
a <- seq(-pi, pi, len=101)
dim(a) <- length(a)

Curvas de Andrews

f <- function(a, v) {
   v[1]/sqrt(2) + v[2]*sin(a) + v[3]*cos(a)
}

plot(0, 0, xlim=c(-pi, pi), ylim=c(-3,3), xlab="t",
     ylab="Andrews Curves", main="", type="n")
for (i in 1:n) {
   g <- leafshape17$arch[i] + 1
   y <- apply(a, MARGIN = 1, FUN = f, v = x[i,])
   lines(a, y, lty = g)
}
legend(3, c("Orthotropic", "Plagiotropic"), lty = 1:2)

Curvas de Andrews

Coordenadas Paralelas

  • GrĆ”ficos com coordenadas paralelas produzem uma outra abordagem para vizualiĆ§Ć£o de dados multivariados'
  • Os grĆ”ficos em coordenadas paralelas sĆ£o implementados pela funĆ§Ć£o parallelplot no pacote lattice;
  • Uma implementaĆ§Ć£o alternativa Ć© a funĆ§Ć£o parcoord no pacote MASS.

Coordenadas Paralelas I

library(DAAG)
library(MASS)
x <- crabs[seq(5, 200, 5), ] 

Coordenadas Paralelas I

parcoord(x[4:8])

Coordenadas Paralelas II

library(lattice)
x <- crabs[seq(5, 200, 5), ]
a <- x$CW * x$CL
x[4:8] <- x[4:8] / sqrt(a)

Coordenadas Paralelas II

parallelplot(~x[4:8] | sp*sex, x)

Segmentos, estrelas e outras representaƧƵes

  • Dados Multivariados podem ser representados por um glifo ou Ć­cone de duas dimensƵes;
  • Algumas representaƧƵes com Ć­cones podem ser melhor apresentadas em uma tabela. Entretanto, nĆ£o Ć© muito prĆ”tico quando se tem uma quantidade muito grande dados.
  • A seguir mostram-se exemplos usando star plots e segment plot. Esse tipo de grĆ”fico Ć© fĆ”cilmente obtido no R usando a funĆ§Ć£o stars(graphics).

GrƔfico de Estrela/Segmento

library(MASS) 
x <- subset(crabs[seq(5, 200, 5), ], sex=='M')
x[4:8] <- x[4:8] / sqrt(x$CW * x$CL)
stars(x[4:8], draw.segments = TRUE, labels = as.character(x$sp))

ReferĆŖncias

CapĆ­tulo 4 - Maria Rizzo - Statistical Computing with R