Análise Exploratória de
Dados - 2005
R - LIG-04
Objetivos da aula
Trabalhar com transformações de escala;
detalhar argumentos da função stem (ramoe-folhas);
construir um diagrama de pontos;
trabalhar com a representação de uma série
temporal (variável quantitativa observada ao
longo do tempo);
construir mais de um gráfico na mesma
janela;
trabalhar com as medidas: média, mediana e
moda.
Data(islands)
Os dados a seguir fazem parte do elenco de exemplos do R.
Descrição: áreas em milhares de milhas quadradas das maiores
massas de terra do mundo (maiores que 10000 milhas quadradas).
data(islands)
Formato: vetor rotulado de comprimento 48.
Para mais detalhes vamos usar o help.
help(islands)
islands
package:base
R Documentation
Areas of the World's Major Landmasses (áreas das maiores
massas de terra do mundo)
Descrição: contém as áreas em milhares de milhas quadradas das
massas de terra, que excedem à 10000 milhas quadradas.
Uso: data(islands)
Formato: está num vetor rotulado de comprimento 48. Os rótulos
referem-se ao local.
Fonte: The World Almanac and Book of Facts, 1975, page 406.
Problema:
Esses dados foram usados para
resolver o seguinte problema: Deve a
Austrália ser considerada como uma ilha
ou como um continente?
Islands
Africa
Antarctica
Asia
Australia
11506
5500
16988
2968
Axel Heiberg
Baffin
Banks
Borneo
16
184
23
280
Britain
Celebes
Celon
Cuba
84
73
25
43
Devon
Ellesmere
Europe
Greenland
21
82
3745
840
Hainan
Hispaniola
Hokkaido
Honshu
13
30
30
89
Iceland
Ireland
Java
Kyushu
40
33
49
14
Luzon
Madagascar
Melville
Mindanao
42
227
16
36
etc.
RAMO-E-FOLHAS DE ISLANDS
stem(islands)
The decimal point is 3 digit(s) to the right of the |
0 | 00000000000000000000000000000111111222338
2 | 07
Observe que por conta das disparidades
4|5
de valores, o ramo-e-folhas concentra
6|8
cerca de 85% dos valores no primeiro ramo.
8|4
10 | 5
Uma alternativa aqui é trabalhar em outra
12 |
escala.
14 |
16 | 0
Mudança de escala dos dados
stem(log(islands)) (Logaritmo natural dos dados)
2 | 566666778889
3 | 01234444556778889
4 | 134445
5 | 22467
6|7
7|
8 | 0268
9 | 147
Função stem
stem
package:base
R
Documentação
Stem-and-Leaf Plots (Ramo-e-folhas)
Descrição: 'stem' produz um ramo-e-folhas dos
valores no vetor 'x'.
O parâmetro 'scale' pode ser usado para expandir a
escala do gráfico. 'scale=2' implicará num ramo-efolhas duas vezes mais comprido que o default
(scale=1).
Usage: stem(x, scale = 1, width = 80, atom = 1e-08)
Argumentos da função stem
x: um vetor numérico.
scale: controla o comprimento do
gráfico.
width: largura desejada do gráfico.
atom: uma tolerância (para o
comprimento do ramo).
Ramo-e-folhas
stem(log(islands),scale=2)
2|
2 | 566666778889
3 | 01234444
3 | 556778889
4 | 13444
4|5
5 | 224
5 | 67
6|
6|7
7|
7|
8 | 02
8 | 68
9 | 14
9|7
Ramo-e-folhas
stem(log(islands),scale=1/2)
2 | 56666677888901234444556778889
4 | 13444522467
6|7
8 | 0268147
Ramo-e-folhas: outras escalas
para os dados
Construa o ramo-e-folhas dos dados em islands nas
escalas:
1) Raiz quadrada de x
2) 1/raiz quadrada de x
3) 1/x
4) 1/x^2
1) Raiz quadrada: sqrt()
stem(sqrt(islands))
0 | 3444444444445555555566666777789999944577
2|9
4|4
6 | 14
8 | 27
10 | 7
12 | 0
2) Inverso da raiz quadrada
stem(1/sqrt(islands))
0 | 11111223
0 | 66777
1 | 1111234
1 | 555567788899
2 | 00123
2 | 55566778889
3) Inverso
0 | 0000000134455
stem(1/(islands))
1 | 122247
2 | 0333458
3 | 0133448
4 | 038
5|3
6 | 33377
7 | 11777
8|3
4) Inverso do quadrado
stem(1/(islands^2))
0 | 000000000000011112345556689
1 | 01122569
2 | 38
3 | 999
4 | 44
5 | 11999
6|9
Diagrama de pontos
dotchart
package:base
Documentation
R
Cleveland Dot Plots
Descrição: desenha um gráfico de
pontos
Como usar:
dotchart(x, labels = NULL, groups = NULL, gdata = NULL,
cex = par("cex"), pch = 21, gpch = 21, bg = par("bg"), color =
par("fg"), gcolor = par("fg"), lcolor = "gray", xlim =
range(x[is.finite(x)]), main = NULL, xlab = NULL, ylab = NULL,
...)
Diagrama de pontos: Exemplos
Começaremos pedindo dotchart(islands),
onde islands é um vetor.
Diagrama de pontos: Exemplos
Diagrama de pontos:
argumentos
x: pode ser tanto um vetor como uma matriz de
valores numéricos ('NA's são permitidos). Se 'x'
é uma matriz o gráfico resultante consiste de
diagramas de pontos justapostos para cada
linha. (Este último caso não será tratado hoje.)
labels: um vetor de rótulos para cada ponto.
Para vetores o default é usar ‘names(x)' e para
matrizes os rótulos das linhas
'dimnames(x)[[1]]'.
Diagrama de pontos: argumentos
(2)
cex: define o tamanho do caracter a ser usado.
Atribuir à 'cex' um valor menor do que um pode
ser uma forma útil de evitar a sobreposição de
rótulos.
pch: caracter ou símbolo a ser usado no
diagrama.
dotchart(islands,cex=0.6,pch=“*”)
Diagrama de pontos: argumentos
(3)
bg: cor de fundo dos caracteres; para configurar
a cor de fundo de todo diagrama.
color: cores para serem usadas para os pontos e
rótulos.
lcolor: cores das linhas horizontais.
xlim: amplitude do eixo horizontal.
main: título global.
xlab, ylab: rótulos para os eixos.
dotchart(islands,cex=0.6,pch="2",color="blue",lcolor="red
",main="Maiores massas de terra do mundo")
dotchart(log(islands),cex=0.6,pch="2",color="blue",lcol
or="red",main="Maiores massas de terra do
mundo”,xlab=“log(área em milhas quadradas)”)
Exemplo 2: Notas em
Estatística
O diagrama de pontos é útil para avaliarmos se
há ou parece haver alguma estrutura no processo de
observação dos dados.
Por exemplo, observou-se as notas em Estatística
numa turma de 100 alunos. Os dados estão no arquivo
http://www.im.ufrj.br/~flavia/aed06/dados3bm.txt
estat<-scan(”http://www.im.ufrj.br/~flavia/aed06/dados3bm.txt")
dotchart(estat,main="Notas em Estatística",xlab="notas")
Exemplo 2: Notas em
Estatística (cont.)
É possível verificar, a partir do diagrama de pontos,
que as notas distribuem-se ao acaso de 1 a 10, não
ocorrendo nenhum padrão aparente no registro das
notas.
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
Temperaturas médias mensais, em graus centígrados, de
janeiro de 1976 a dezembro de 1985.
http://www.im.ufrj.br/~flavia/aed06/dados5bm.txt
Usamos o termo SÉRIE TEMPORAL para nos referirmos
a esse tipo de dado. Isso ocorre quando os dados da
Variável quantitativa em estudo são coletados ao longo
do tempo.
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
Temperaturas médias mensais, em graus centígrados, de
janeiro de 1976 a dezembro de 1985.
http://www.im.ufrj.br/~flavia/aed06/dados5bm.txt
Vamos visualizar as temperaturas médias em Ubatuba
nos anos de 1976 e 1977, que se referem às 24
primeiras observações.
dados<-read.table(”http://www.im.ufrj.br/~flavia/aed06/dados5bm.txt”,
header=T)
dotchart(dados$Ubatuba[1:24],main=”Temperaturas médias
mensais em Ubatuba nos anos de 1976 e 1977”,xlab=”ºC")
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
(cont.)
É possível observar aqui um certo padrão de
comportamento das temperaturas médias que são mais
altas no início dos anos, caem até o meio do ano, e
depois voltam a subir.
Chamamos esse
comportamento de
sazonal.
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
(cont.)
A série de temperaturas tem ao todo 120 observações
para cada cidade. Um dotchart para essa quantidade de
dados não é conveniente.
Observe que a dependência
sazonal fica mascarada neste
gráfico.
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
(cont.)
Podemos representar simultaneamente as duas séries
num único gráfico.
No R há a função ts (time series) usada para criar objetos
que são séries temporais.
Nesse exemplo temos duas séries mensais começando
em janeiro de 1976 e terminando em dezembro de 1985.
Podemos então definir a série temporal temp na forma:
temp<-ts(dados[,2:3],start=c(1976,1),end=c(1985,12),frequency=12)
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
(cont.)
temp<-ts(dados[,2:3],start=c(1976,1),end=c(1985,12),frequency=12)
Objeto que contém os valores
da série, podendo ser um vetor
ou uma matriz quando for o caso
de mais de uma série.
Nesse exemplo temos duas séries
Informa o tempo de início
da série ano=1976,mês=1
Informa o fim da série:
ano=1985,mês=12
Informa a freqüência de observação
na série (12 -mensal, 4-quadrimestral,
6- semestral, etc.)
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
(cont.)
Com o objeto criado, basta usar a função do R: plot.
plot(temp,main="Temperaturas médias mensais",xlab="tempo")
Exemplo 3: Temperaturas médias mensais em
Cananéia e Ubatuba (SP) de 1976 a 1985
(cont.)
Confecção de mais de um gráfico
numa única janela
Veremos como colocar vários gráficos numa
única janela de gráfico.
Para essa atividade vamos utilizar as notas da
prova de matemática no vestibular 2005 da
UFRJ para alunos classificados nas carreiras:
Ciências Atuariais e Estatística: Básico,
Meteorologia, Engenharia Ambiental e
Engenharia de Produção.
Exemplo 4: Notas de Matemática 2005
Os dados estão em quatro arquivos nos
quais a primeira coluna indica o gênero
(masculino ou feminino), a segunda
indica o ano de nascimento e, a
terceira, a nota obtida em matemática.
Os nomes dos arquivos são:
caest05.txt, engamb05.txt,
producao05.txt e meteoro05.txt.
Exemplo 4 (cont.)
Vejamos separadamente os 4 histogramas resultantes.
hist(cat$mat,main="Histograma das Notas de Matemática",sub="Classificados em
Ciências At. E Estatística: Básico -2005”,xlab=“nota”,ylab=“Freqüência”)
Exemplo 4 (cont.)
hist(enam$mat,main="Histograma das Notas de Matemática", sub=
"Classificados em Engenharia Ambiental - 2005", xlab="nota",
ylab="frequência")
Exemplo 4 (cont.)
hist(met$mat,main="Histograma das Notas de Matemática", sub=
"Classificados em Meteorologia - 2005",xlab="nota",ylab="frequência")
Exemplo 4 (cont.)
hist(eprod$mat,main="Histograma das Notas de Matemática",
sub="Classificados em Engenharia de Produção - 2005", xlab=
"nota",ylab="frequência")
Uniformização das escalas
Para construir os 4 histogramas numa única janela vamos
primeiramente uniformizar as escalas. Como os dados são notas
de 0 a 10, podemos começar impondo a cada gráfico o argumento
xlim=c(0,10).
O comando que devemos dar antes do primeiro histograma é:
par(mfrow=c(2,2)), indicando que queremos os 4 histogramas
dispostos em duas linhas e duas colunas.
Além disso, use freq=F em cada histograma, pois os totais
por amostra são diferentes e, assim trabalhamos na escala das
Densidades de freqüência relativa.
par(mfrow=c(2,2))
> hist(enam$mat,main="Histograma das Notas de Matemática",sub="Classificados
em Engenharia Ambiental 2005",xlab="nota",ylab="frequência",xlim=c(0,10),freq=F)
> hist(eprod$mat,main="Histograma das Notas de Matemática",sub="Classificados
em Engenharia de Produção 2005",xlab="nota",ylab="frequência",xlim=c(0,10),freq=F)
> hist(met$mat,main="Histograma das Notas de Matemática",sub="Classificados em
Meteorologia - 2005",xlab="nota",ylab="frequência",xlim=c(0,10),freq=F)
> hist(cat$mat,main="Histograma das Notas de Matemática",sub="Classificados em
Ciências Atuariais e Estatística 2005",xlab="nota",ylab="frequência",xlim=c(0,10),freq=F)
Uniformizando a escala do
eixo das densidades
Observe que as escalas das densidades em cada histograma
ainda diferem.
Inserindo ylim=c(0,0.40) em cada histograma:
Comparação
Comparando os histogramas, podemos claramente
perceber que os candidatos ao curso de Meteorologia
mostraram um desempenho inferior em Matemática,
quando comparado com os outros cursos.
Também podemos ver que nos demais cursos, a variação das notas é parecida com uma concentração maior
nas notas de Matemática para o curso de Ciências
Atuariais/Estatística:básico.
Finalmente, percebe-se uma distribuição simétrica no
comportamento das notas de Matemática para o curso
Produção, que não ocorre para os demais.
Medidas de posição: média e mediana
A média é a soma dos valores
observados sobre o número de
observações (média aritmética).
No histograma ela representa o ponto
de equilíbrio.
mean(cat$mat)
[1] 4.78186
mean(met$mat)
[1] 2.138710
mean(prod$mat)
[1] 5.537074
mean(enam$mat)
[1] 5.125484
Mediana
A mediana de uma distribuição de
valores é o valor que ocupa a posição
central quando os dados estão
ordenados.
Exemplo: considere o conjunto cujos
valores são 11,23,14,15,16,20 e 21.
Valores ordenados:
11,14,15,16,20,21,23
Mediana
11,14,15,16,20,21,23
Valor que ocupa
a posição central
Logo, a mediana deste conjunto é 16.
Calculando a medianamedian
No R a função median, retorna a
mediana de um conjunto de dados.
> median(cat$mat)
[1] 4.5
> median(met$mat)
[1] 2.13
> median(prod$mat)
[1] 5.5
> median(enam$mat)
[1] 4.94
> mean(cat$mat)
[1] 4.78186
> mean(met$mat)
[1] 2.138710
> mean(prod$mat)
[1] 5.537074
> mean(enam$mat)
[1] 5.125484
Média e mediana no R
A função que calcula a média aritmética
de um vetor de dados numéricos x é
mean(x).
A função mean(x,trim=0.5) também
serve para retornar o valor da mediana
dos dados no vetor x.
Mas, também podemos usar a função
median(x).
Data(islands): média e mediana
mean(islands) produz 1252.729.
median(islands) produz 41
mean(islands,trim=0.5) produz 41.
Não é uma mera coincidência os dois
valores acima serem iguais, pois a
mediana é o valor que ocupa a posição
central quando os dados estão
ordenados.
Média e mediana (cont.)
O argumento trim na função mean tem
o efeito de “aparar as pontas” quando
os dados estão ordenados na fração
atribuída a trim, que pode ser um valor
de 0(default) até 0.5.
Observe que quando trim=0.5, depois
de “aparar as pontas” sobra justamente
o valor que ocupa a posição central.
Média versus mediana
MÉDIA
é mais fácil de ser
manipulada
algebricamente;
representa o centro de
massa dos dados (é o
ponto de equilíbrio no
histograma).
É muito afetada por
valores extremos (ex.:
(data(islands)).
MEDIANA
É mais difícil de ser
manipulada
algebricamente;
É o valor que ocupa a
posição central quando
os dados estão
ordenados;
Não é afetada por
valores extremos.
Média versus mediana
Desta discussão, podemos observar que para
distribuições muito assimétricas, a mediana é
uma
medida
mais
apropriada
para
caracterizar um conjunto de dados.
Veja o exemplo dos dados em Islands. Um
valor extremo torna a média muito alta,
quando comparada aos dados do conjunto.
Voltando ao exemplo dos dados Islands:
0 | 00000000000000000000000000000111111222338
2 | 07
4|5
mean(islands) produz 1252.729.
6|8
median(islands) produz 41
8|4
10 | 5
12 |
14 |
16 | 0
OUTRO EXEMPLO
x<-rf(50,6,3) # x recebe 50 valores gerados pelo R, segundo a
distribuição de probabilidades F de Snedecor.
stem(x)
0 | 0000000000011111111111111111122222222234
0 | 5555568
1 | 13
1|
2|
2|8
Observe que neste caso
mean(x)>median(x).
Média versus mediana
Se a distribuição é aproximadamente simétrica,
então média e mediana são aproximadamente
iguais.
Em distribuições perfeitamente simétricas tem-se
média=mediana.
Moda
É o valor mais freqüente da distribuição.
No histograma, a classe modal é a
classe de maior freqüência e a moda
pode ser aproximada pelo ponto médio
da classe.
Moda
Uma outra forma de aproximar a moda
é mostrada na figura a seguir.
Moda
Uma distribuição pode não possuir
moda (“achatada”).
Uma distribuição pode possuir mais de
uma moda (multimodal).
Uma distribuição pode possuir apenas
uma moda (unimodal).
Distribuição achatada
voltar
Distribuição multimodal
volta
Distribuições unimodais
Em distribuições unimodais tem-se sempre a
mediana entre a média e a moda:
Ou média<=mediana<=moda (assimetria negativa)
ou moda<=mediana<=média (assimetria positiva)
Em distribuições unimodais perfeitamente simétricas
tem-se média=moda=mediana.
Assimetria positiva - distribuição unimodal
média>mediana>moda
Assimetria negativa - distribuição unimodal
média<mediana<moda
Distribuição unimodal simétrica
média=mediana=moda
Download

análise exploratória de dados - Instituto de Matemática