730 likes | 871 Vues
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 (ramo-e-folhas); construir um diagrama de pontos;
E N D
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 (ramo-e-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 4 | 5 6 | 8 8 | 4 10 | 5 12 | 14 | 16 | 0 Observe que por conta das disparidades de valores, o ramo-e-folhas concentra cerca de 85% dos valores no primeiro ramo. Uma alternativa aqui é trabalhar em outra escala.
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-e-folhas 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).
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=2)
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 1 | 122247 2 | 0333458 3 | 0133448 4 | 038 5 | 3 6 | 33377 7 | 11777 8 | 3 stem(1/(islands))
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 R Documentation • 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: 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.
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",lcolor="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) Informa o tempo de início da série ano=1976,mês=1 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 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.