ANÁLISE
EXPLORATÓRIA DE
DADOS
Aula lig-03
Objetivos
Trabalhar com dados quantitativos
contínuos:
 especificar intervalos de classe;
 construir histogramas;
 construir ramo-e-folhas.

Exemplo 1: Tipo sangüíneo, peso (em Kg) e altura (em cm).
A base de dados que será
trabalhada hoje contém a
informaçao de 100 indivíduos
sobre tipo sangüíneo, peso (kg)
e altura (cm).
Forma dos dados na planilha
com 100 linhas e três colunas.
arquivo: dados1.txt
Fonte: dados fictícios.
A
AB
AB
AB
AB
62
83
62
64
75
.
.
.
O
O
AB
AB
AB
B
B
B
B
B
.
.
.
164
163
176
177
166
.
.
.
70
72
94
75
80
78
71
76
82
78
182
170
189
175
154
172
171
166
143
169
Exemplo (continuação)
Os dados deste exemplo podem ser obtidos como:
dados=read.table(“http://www.im.ufrj.br/~flavia/aed06/dados1.txt”)
Observe que aqui, não usamos o argumento header=T, pois os
nomes das variáveis não estão no arquivo de dados.
Mas, se preferirmos, podemos definir os nomes das variáveis
em dados.
names(dados)<-c(“tsangue”,”peso”,”altura”)
Acesso aos valores
Assim, você pode se referir às colunas
desta base tanto usando dados[,n], em
que n é o número da coluna desejada,
como dados$nomedavariável.
 Por exemplo, para ver o conteúdo da
coluna 1, podemos tanto usar dados[,1]
como dados$tsangue.

VARIÁVEIS QUALITATIVAS: GRÁFICO DE SETORES
pie(table(dados[,1]),main=”
Distribuição de freqüências do tipo sangüíneo", col=
c("blue",”blue4",”green",”green4"))
VARIÁVEIS QUALITATIVAS: GRÁFICO DE BARRAS
barplot(table(dados$tsangue),col="red",main=
"Distribuição de freqüências de tipo sangüíneo")
VARIÁVEIS QUALITATIVAS: GRÁFICO DE BARRAS
barplot(table(dados$tsangue),col="red",main=
"Distribuição de freqüências de tipo sangüíneo”,ylim=c(0,40))
VARIÁVEIS QUANTITATIVAS (1)
Veremos agora como construir a
distribuição de freqüências de uma
variável quantitativa.
 Para isso usaremos os dados do exemplo
referentes ao peso e à altura dos
indivíduos.

VARIÁVEIS QUANTITATIVAS (2)

Se você pedir table(dados[,2]) ou
table(dados[,3]) o efeito da saída será
quase que reproduzir os valores
observados de forma ordenada.
table(dados[,2])
57.1 59 61.4 61.9 62.1 62.4 62.8 63.3 63.9 64.2 64.8 66.1 66.3 66.7 67.6 67.8
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
68 68.1 68.9 69.4 69.9 70.1 70.2 70.4 70.9 71.2 71.3 71.5 71.7 71.9 72.1 72.2
1 2 1 1 1 2 2 1 3 1 1 2 1 2 1 1
72.6 73.2 73.4 73.7 74.1 74.6 74.9 75.2 75.3 76 76.3 76.5 76.9 77 77.5 77.6
2 2 1 2 1 4 1 1 1 2 1 1 2 1 1 1
77.8 77.9 78.2 78.4 78.5 78.6 79.1 79.5 79.8 80 80.5 80.6 80.7 80.8 80.9 81.1
2 1 1 1 1 1 2 1 1 1 1 1 3 1 1 1
81.2 81.3 81.7 82.2 82.4 82.7 82.8 83.2 84.3 85 86 86.1 86.7 94.4 95.8
1 1 2 1 1 1 1 1 1 1 1 2 1 1 1
VARIÁVEIS QUANTITATIVAS (3)

Portanto, o comando table não é, em geral, útil
para dados contínuos. Ele talvez poderá ser útil
se estivermos trabalhando com uma variável
discreta cuja quantidade de respostas possíveis
é pequena.
VARIÁVEIS QUANTITATIVAS (4)
Vimos que no caso de dados contínuos,
há a necessidade de se definir primeiro
intervalos de classe para depois, construir
a tabela de freqüências e, então, usá-la
para construir o histograma.
 O R possui uma função que pode gerar
esta distribuição de forma automática.

VARIÁVEIS QUANTITATIVAS (5)
Esta função também tem a flexibilidade de
nos permitir fixar os intervalos ou sugerir o
número de intervalos.
 Esta mesma função também gera o
histograma dos dados e seu nome no R é
hist.

Uso da função hist (1)
hist
package:base
R Documentation
Histogramas
Descrição: a função genérica `hist' constrói um histograma de
valores dados. Se o argumento `plot=TRUE', a saída é um
histograma.
Como usar: hist(x, ...)
hist.default(x, breaks = "Sturges", freq = NULL, probability = !freq,
include.lowest = TRUE, right = TRUE, density = NULL, angle = 45,
col = NULL, border = NULL,main = paste("Histogram of" , xname),
xlim = range(breaks), ylim = NULL, xlab = xname, ylab,
axes = TRUE, plot = TRUE, labels = FALSE, nclass = NULL, ...)
A seguir veremos como usar a função hist e seus principais
argumentos.
Uso da função hist (2)
Para começar peça a função hist apenas com o argumento
obrigatório que é um vetor contendo os valores para os quais
queremos construir o histograma, isto é, peça hist(dados$peso).
Argumentos da função hist
Argumentos:
x (obrigatório): vetor de valores para os quais deseja-se
construir o histograma.
breaks (opcional): um entre
* vetor fornecendo os limites dos intervalos de classe,
* número fornecendo o número de intervalos (é apenas
uma sugestão).
right (opcional): lógica; se `right=T‘(default), as classes são
fechadas à direita e abertas à esquerda. Se ‘ right=F´, as
classes são fechadas à esquerda e abertas à direita.
Argumentos da função hist


freq (opcional): lógica; se `freq=T', o histograma é uma
representação da distribuição na escala das freqüências
absolutas, se `freq=F', é uma representação na escala
da densidade de freqüência relativa, que é definida
como a razão entre freqüência relativa e a amplitude da
classe.
Observação: O Defaul da versão atual do R é usar
freq=T, quando as classes têm amplitudes iguais e
freq=F, quando as classes têm amplitudes desiguais.
Exemplo: argumentos breaks e freq
hist(dados$peso,breaks=c(50,60,70,80,90,100),right=F,freq=F)
Exemplo (continuação)
Para melhorar o gráfico podemos definir o título e os rótulos para
os eixos ox e oy.
hist(dados$peso,breaks
=c(50,60,70,80,90,100),
freq=F,right=F,main=
“Histograma dos
pesos”,xlab=“kg”,ylab
=“dens.freq.rel”,
density=6,col=“blue”)
Mudando a escala dos eixos
Comandos xlim e ylim.
 Para visualizar o eixo 0x de 40 até 110kg,
inclua o argumento xlim=c(40,110).
 Para visualizar o eixo 0y de 0 até 0.06,
quando freq=F, inclua o argumento
ylim=c(0,0.06).

Exemplo (continuação)
hist(dados$peso,breaks=
c(50,60,70,80,90,100),
freq=F,main="Histograma
dos pesos",xlab=“kg",
ylab="dens.freq.rel",
col="gray",xlim=c(40,110),
ylim=c(0,0.06))
Exemplo (continuação)
A função hist gera um objeto do R. Assim
podemos criar uma variável que recebe o objeto gerado por hist.
Por exemplo, faça
hist1<hist(dados$peso,breaks=c(50,60,70,80,90,100),freq=F,main=“...”)
Depois, liste o conteúdo de hist1.
Exemplo (continuação)
hist1 com freq=F
$breaks (LIMITES DOS INTERVALOS DE CLASSE)
[1] 50 60 70 80 90 100
$counts (FREQÜÊNCIAS ABSOLUTAS DOS INTERVALOS DE CLASSE)
[1] 2 20 53 23 2
$intensities
[1] 0.001999996 0.020000000 0.053000000 0.023000000 0.002000000
$density (densidade de freqüência relativa=freq.rel/amp.do intervalo)
[1] 0.001999996 0.020000000 0.053000000 0.023000000 0.002000000
$mids (PONTOS MÉDIOS DOS INTERVALOS DE CLASSE)
[1] 55 65 75 85 95
$xname (NOME DO EIXO 0x)
[1] "dados$peso"
$equidist (VARIÁVEL LÓGICA INFORMANDO SE AS AMPLITUDES DOS
INTERVALOS DE CLASSE SÃO IGUAIS (TRUE) OU DESIGUAIS (FALSE)).
[1] TRUE
attr(,"class")
[1] "histogram"
Exemplo (continuação)
Repita agora os mesmos passos com
hist2<hist(dados$peso,breaks=c(50,60,70,80,90,100),freq=T,main=“...”)
Exemplo (continuação)
> hist2
$breaks
[1] 50 60 70 80 90 100
$counts
[1] 2 20 53 23 2
$intensities
[1] 0.001999996 0.020000000 0.053000000 0.023000000 0.002000000
$density
[1] 0.001999996 0.020000000 0.053000000 0.023000000 0.002000000
$mids
[1] 55 65 75 85 95
$xname
[1] "dados$peso"
$equidist
[1] TRUE
attr(,"class")
[1] "histogram"
O que mudou?
freq=F
freq=T
Argumentos xlim e ylim
Estes dois argumentos são muito úteis
quando queremos comparar diversos
histogramas.
 Para uma comparação é necessário
trabalhar com escalas iguais.

Ramo e folhas de peso

Para estudarmos outras possibilidades de
intervalos para o histograma de pesos, será útil
construir um ramo-e-folhas dos pesos:
stem(dados$peso).
The decimal point is 1 digit(s) to the right of the |
5 | 79
6 | 12223344
6 | 56678888899
7 | 00000011111222222233333444
7 | 5555555666777788888889999
8 | 000111111111122223334
8 | 56667
9|4
9|6
Construindo 9 intervalos de classe
A amplitude amostral é aproximadamente 96-57=39
Para 9 intervalos podemos calcular 39/9 que é 4.333..., e
arredondando para 4,5 temos as amplitudes das classes.
Observe que ficaremos com uma amplitude total igual à 9x4,5=40,5,
que equivale quase 2 a mais. Podemos então repartir o excesso
igualmente para cima e para baixo, começando com 56 e terminando
em 97:
hist(dados$peso,breaks=c(56,60.5,65,69.5,74,78.5,83,87.5,92,96.5),
right=F,col=“palegreen”,main=“Histograma dos pesos”,xlab=“kg”,
ylab=“dens.freq.rel.”,freq=F,ylim=c(0,0.06))
Numa distribuição
de freqüências, não deve
haver classes intermediárias
vazias!
Portanto, essa
distribuição deve ser refeita.
Possibilidades: sugerir 8 intervalos ou juntar as duas classes finais,
passando a ter classes de amplitudes desiguais.
Construa o histograma usando
8 intervalos de classe.
Sugestão:breaks=c(56,60.5,65,69.5,74,78.5,83,87.5,96.5)
Continuação
Sugestão: breaks=8
Lembre que 8 é
apenas uma sugestão
para o número de
classes.
Argumento density
Inserindo o argumento density=4, obtemos
Outros argumentos
Sugerimos que os demais argumentos da função hist
sejam explorados por vocês.
Exemplo 2 (alturas)
Construa agora um histograma das alturas
(cm), especificando os limites dos
intervalos, considerando 9 intervalos.
 Passo 1: Magnitude dos dados para
avaliar amplitude.
 Sugestão: Ramo-e-folhas.
 stem(dados$altura)

Ramo-e-folhas das alturas
14 | 1399
15 | 024555666799
16 | 0111222222334444445555666666666778888899999
17 | 0000111111222233345556667777
18 | 001222223349
19 | 4
Amplitude amostral aproximada: 195-140=55 cm
Amplitude dos intervalos: 55/9=6.1111...cm
Arredondamos para 7
7*9=63 (8 a mais)
Intervalos de classe
hist(dados[,3],breaks=c(137, 144,151,158,165,172,179,
186,193,200),ylab=“dens. freq. Rel.”,main=“
Histograma das alturas”,xlab=“cm”,density=4)
ATIVIDADE
1) Construa agora o histograma das alturas com 7 intervalos de classe.
2) calcule a média das alturas nesta amostra e localize-a no
histograma obtido no item 2.
Histograma com 7 classes
Amplitude amostral aproximada: 195-140=55 cm
Amplitude dos intervalos: 55/7->7.85cm
Arredondamos para 8.
breaks=c(139.5,147.5,155.5,163.5,171.5,179.5,187.5,195.5)
Comando par(mfrow=c(l,n))



É possível construir vários histogramas numa
única janela de gráfico.
Por exemplo, se quisermos apresentar o
histograma das alturas e o histograma dos
pesos numa mesma janela, antes de pedir os
histogramas, devemos informar que a janela
conterá dois gráficos.
Podemos configurar a janela com dois gráficos
numa única linha ou dois gráficos numa única
coluna.
Comando par(mfrow=c(l,n))



par(mfrow=c(1,2)) # uma linha duas colunas ou
par(mfrow=c(2,1)) # duas linhas uma coluna.
Depois é só pedir os respectivos histogramas.
par(mfrow=c(1,2))
hist(dados$peso, main="Histograma dos pesos",xlab="Kg",freq=F,
ylab="densidade de freq. rel.",ylim=c(0,0.07),xlim=c(50,110))
hist(dados$altura, main="Histograma das alturas",xlab="cm",freq=F,
ylab="densidade de freq. rel.",ylim=c(0,0.06),xlim=c(130,200))
par(mfrow=c(2,1))
hist(dados$peso, main="Histograma dos pesos",xlab="Kg",freq=F,
ylab="densidade de freq. rel.",ylim=c(0,0.07),xlim=c(50,110))
hist(dados$altura, main="Histograma das alturas",xlab="cm",freq=F,
ylab="densidade de freq. rel.",ylim=c(0,0.06),xlim=c(130,200))
Janelas de gráfico simultâneas:
Para abrir uma NOVA janela de gráfico, usa-se
o comando: win.graph()
Para fechar uma janela de gráfico, usa-se o
comando: dev.off()
Principais comandos da aula




read.table (para ler bases
de dados multivariadas)
names (para definir
nomes das variáveis que
compõem o objeto)
hist (constrói um
histograma)
stem (constrói um ramoe-folhas)


par(mfrow=c(r,s))
(especifica que deverão
entrar na janela rs figuras
em r linhas e s colunas)
Argumentos importantes
da função hist:
main=“Título do
Gráfico”,sub=“sub-título
para o gráfico”,
ylim=c(min,max) escala
do eixo y, ylab=“rótulo
para o eixo”, (xlim e xlab),
etc.
Download

hist - DME – IM – UFRJ