Sie sind auf Seite 1von 39

Apostila de introduo ao Software R

AEDB
Prof: Roberto C. Leoni

Professor: Roberto Campos Leoni

Statistical Data Analysis Sumrio


Aula 1 Instalando o Software R ...................................................................................................................................... 2 Por que usar o R? .......................................................................................................................................................... 2 Como obter o R? ........................................................................................................................................................... 2 rea de trabalho (The Workspace) ............................................................................................................................... 2 Atividades Propostas ..................................................................................................................................................... 4 Aula 2 Aprenda a administrar a sua rea de trabalho ................................................................................................... 5 Atividades Propostas ..................................................................................................................................................... 6 Aula 3 Criando objetos no R: vetor ............................................................................................................................... 7 Criando vetores ............................................................................................................................................................. 7 Variveis nominais e ordinais ....................................................................................................................................... 9 Atividades Propostas ..................................................................................................................................................... 9 Aula 4 Criando objetos no R: matriz e array ............................................................................................................... 10 Criando Matrizes ......................................................................................................................................................... 10 Criando Array ............................................................................................................................................................. 12 Atividades Propostas ................................................................................................................................................... 12 Aula 5 Criando objetos no R: data.frame e listas ........................................................................................................ 13 Criando Data frame ......................................................................................................................................................... 13 Entrando com dados atravs do teclado ...................................................................................................................... 14 Criando Lista............................................................................................................................................................... 14 Atividades Propostas ................................................................................................................................................... 15 Aula 6 Packages (pacotes) e importao de dados ...................................................................................................... 16 Como instalar novos Packages? .................................................................................................................................. 16 Importao de dados ................................................................................................................................................... 16 Atividades Propostas ................................................................................................................................................... 17 Aula 7 Tabelas de frequncia (contagem).................................................................................................................... 18 Tabulao cruzada ...................................................................................................................................................... 18 Aula 8 Grficos ............................................................................................................................................................. 20 Setor (pizza) ............................................................................................................................................................ 20 Coluna (barras)............................................................................................................................................................ 21 Grfico de colunas (barras) para tabelas cruzadas (dupla entrada) ............................................................................. 22 Dot Plots...................................................................................................................................................................... 22 Grfico de linha (temporal) ......................................................................................................................................... 23 Histograma .................................................................................................................................................................. 25 Grfico de Ramos e Folhas ......................................................................................................................................... 25 Box-plot ...................................................................................................................................................................... 25 Grfico de Pareto ........................................................................................................................................................ 26 Diagrama de causa e efeito ......................................................................................................................................... 27 Aula 9 Medidas numricas ........................................................................................................................................... 28 Medidas: mdia e mediana.......................................................................................................................................... 28 Medidas: sumrio ....................................................................................................................................................... 28 Medidas: percentis ...................................................................................................................................................... 28 Medidas: assimetria, curtose ....................................................................................................................................... 28 Sumrio por grupos ..................................................................................................................................................... 29 Aula 10 Descrevendo um conjunto de dados .............................................................................................................. 30 Aula 11 Projeto prtico ................................................................................................................................................ 35

Professor: Roberto Campos Leoni

Aula 1 Instalando o Software R


O R uma linguagem e ambiente de computao estatstica e construo de grficos; considerada uma variante da linguagem S (laboratrios Bell, desenvolvida por John Chambers e seus colegas). Surge pela criao da R Foundation for Statistical Computing, com o objetivo de criar uma ferramenta gratuita e de utilizao livre, para anlise de dados e construo de grficos. O software estatstico R trouxe novas formas de explorar a Estatstica proporcionando maior rapidez na resoluo de problemas. Este programa conquistou vrios adeptos no meio acadmico, empresarial e administrativo que desta forma puderam passar a utilizar a Estatstica como uma ferramenta eficaz na resposta aos seus problemas. O R compatvel com diversas plataformas: UNIX, Windows e MaCOS e permite a ligao a interfaces de diferentes formatos: Excel, Access, SPSS, SAS, SQL Server. Sendo Open Source, permite ao utilizador alterar funcionalidades existentes, bem como criar novas funcionalidades para responder aos seus problemas especficos de forma mais eficaz. A interao com o utilizador baseada numa janela de comandos e exige o recurso da programao, embora existam packages grficos que permitem a interao atravs de menus. Por que usar o R? 1. O programa computacional R gratuito e pode ser utilizado para anlises estatsticas. 2. Roda em vrias plataformas: Windows, Unix e MacOS. 3. Contm rotinas bsicas e avanadas disponveis em pacotes. 4. Possui grande capacidade grfica. Como obter o R? A instalao do R gratuita e pode ser feita diretamente a partir da pgina principal do R Project for Statistical Computing em http://cran.r-project.org/. Esta rea conhecida como Comprehensive R Archive Network (CRAN). Veja na figura 1 a tela inicial do Site. Figura 1: Site: http://cran.r-project.org/

rea de trabalho (The Workspace) A rea de trabalho a tela inicial do R (Figura 2). Nela trabalhamos com diferentes tipos de objetos (vetores, matrizes, data fames, arrays, listas e funes). No final da sesso o usurio pode salvar tudo o que fez e na prxima vez em que for usar o R basta recarregar a rea de trabalho j salva. Os comandos so executados atravs do prompt da rea de trabalho. Figura 2: Workspace do R

Professor: Roberto Campos Leoni

Inicialmente vamos mostrar o R como calculadora. Por exemplo, tente fazer uma adio simples: > 3 + 5 # digite 3 + 5 no prompt! > # Obs: tudo o que aparece depois do smbolo # reconhecido como texto e no executado pelo R. [1] 8 # olhe o resultado. Vamos praticar com outros exemplos: > 2 + 3*4 # prioridade da operao multiplicao [1] 14 > 3/2+1 # prioridade da operao diviso [1] 2.5 >2*3^2 # potncias so indicadas por ^ ou ** [1] 18 Principais funes disponibilizadas pelo R > sqrt(2) # Encontra a raiz quadrada de 2 [1] 1.414214 > sin(pi/6) # Encontra o seno de 30 [1] 0.5 A seguir, apresentamos uma lista das principais funes e operadores aritmticos: Funo Descrio Operadores sqrt( ) raiz quadrada + abs( ) valor absoluto exp( ) exponencial de base e * log10( ) logaritmo na base 10 / log( ) logaritmo na base e ** ou ^ sin()cos() tan() funes trigonomtricas asin( ) acos( ) atan( ) funes trigonomtricas inversas Exemplos > log(8,2) # calcula o logaritmo de 8 na base 2 [1] 3 > log10(2) # calcula o logaritmo de 2 na base 10 [1] 0.30103 > log(2) # calcula o logaritmo de 2 na base "e" [1] 0.6931472

Descrio adio subtrao multiplicao diviso potncia

Professor: Roberto Campos Leoni

Para pedir ajuda ao R, por exemplo, para a raiz quadrada, digite uma das opes: > help(sqrt) > ?sqrt Atividades Propostas 1. Faa o download da verso mais recente do R para Windows (2.14.X); 2. Faa a instalao do programa em sua mquina; 3. Abra o programa clicando no cone do R; 4. Reconhea onde fica o prompt e reproduza o que foi apresentado na aula. 5. Digite o comando q( ) para fechar o programa R (responda sim a pergunta para salvar a rea de trabalho - worspace); 6. Agora ele estar pronto para ser usado na segunda aula. BOA SORTE!

Professor: Roberto Campos Leoni

Aula 2 Aprenda a administrar a sua rea de trabalho


Para manter diferentes projetos preciso saber administrar rea de trabalho. ATENO: USURIO DO WINDOWS. O R interpreta "\" com espao, logo no possvel usar a notao padro para diretrio, Por exemplo: c:\mydocuments\myfile.txt. Portanto, devemos usar c:\\my documents\\myfile.txt ou c:/mydocuments/myfile.txt Alguns comandos para administrar a rea de trabalho: DICA: Digite os comandos a seguir no prompt do R e acompanhe os resultados em sua tela. getwd() # apresenta o diretrio corrente. Tudo o que fizer ser salvo aqui. Ex: > getwd() [1] "c:/Users/Usurio/Documents" veja o resultado do comando! Para mudar a rea onde deseja salvar seus dados primeiro crie o diretrio no Windows e depois mude o local de trabalho. Veja como se faz: > dir.create('c:/estatistica') > setwd("c:/estatistica") # muda o diretrio de trabalho para c:/estatistica. > getwd() # veja o novo diretrio de trabalho. [1] "c:/estatistica" IMPORTANTE: caso o diretrio no seja criado com o comando dir.create(), primeiro crie o diretrio no Windows (faa isso fora do R). Para ilustrar como podemos salvar o que fazemos no R, vamos usar a forma mais simples para armazenar informao no R. Imagina que suas notas na disciplina foram: 8, 5 , 6 e 9. > notas=c(8,5,6,8) > notas [1] 8 5 6 8 Veja o que h armazenado na rea de trabalho. ls() # lista objetos da rea de trabalho

Todos os objetos criados podem ser salvos permanentemente em um arquivo denominado .RData, no diretrio de trabalho do R. Veja: > save.image() # salva o workspace em arquivo do tipo .RData no diretrio de trabalho corrente. > dir() # veja os arquivos que existem no diretrio E para carregar o que foi salvo em outro momento, faa: Obs: Supomos aqui que voc saiu do R e voltou em outro momento. Lembre-se que o arquivo foi salvo no diretrio "c:\\estatistica\\.RData" . > load("c:\\estatistica\\.RData") Podemos ainda salvar somente o histrico dos comandos utilizados. > savehistory(file="meuscomandos") # salvar os comandos utilizados - default ".Rhistory" > loadhistory(file=" meuscomandos ") # carregar na rea de trabalho comandos salvos - default ".Rhistory"

Professor: Roberto Campos Leoni

Atividades Propostas 1. Crie o seu diretrio. 2. Mude a rea de trabalho do R para o diretrio que criou. 3. Crie objetos 4. Salve sua rea de trabalho. 5. Envie o arquivo .RData que salvou para o professor pelo link disponibilizado na aula 2. BOA SORTE!

Professor: Roberto Campos Leoni

Aula 3 Criando objetos no R: vetor


O R uma linguagem orientada a objetos. Um objeto para o R significa tanto um banco de dados, como uma tabela, variveis, vetores, matrizes, funes, etc., armazenados na memria ativa do computador. Para criar um objeto qualquer no R, voc dever sempre usar o operador de atribuio <- , gerado pela digitao do sinal de menor e menos. possvel usar tambm o sinal de igualdade, ou seja, =. DICAS: Uma das regras importantes do R o fato de ser case sensitive. Por esta razo as letras a e A podem corresponder a diferentes variveis. O R ignora espaos, ou seja, os resultados 8+3 e 8+ 3 do origem exatamente ao mesmo resultado. Podemos agrupar comandos, para serem executados em simultneo, se estiverem entre chaves { } e separados por ; O # utilizado para comentrios; Quando um comando no est completo, o R coloca o sinal de + na linha seguinte, permitindo que este seja terminado. Saber as diferenas entre os diversos tipos de objetos importante para um uso mais adequado do R. Apresentaremos a partir desta aula os objetos: vetor, matriz, data.frame, array e listas. Cada cubo da Figura 3 representa um espao/posio em que um dado ser armazenado. Figura 3: Objetos do R

Criando vetores Vetores so os tipos mais simples de objeto para armazenar dados no R. Digite cada linha a seguir no Prompt do R e analise o que acontece. > a <- c(1, 2, 5, 3, 6, -2, 4) >a [1] 1 2 5 3 6 -2 4 > b <- c("um", "dois", "trs") >b [1] "um" "dois" "trs" > c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE) >c [1] TRUE TRUE TRUE FALSE TRUE FALSE > > a[3] # terceiro valor do vetor a [1] 5 > a[c(1, 3, 5)] # valores que esto na posio 1, 3 e 5 [1] 1 5 6 > a[2:6] # valores de 2 a 6 [1] 2 5 3 6 -2

Usando a funo scan() para criar um vetor

Professor: Roberto Campos Leoni

> x<-scan() 1: 10.4 5.6 3.1 6.4 21.7 # aperte a tecla ENTER duas vezes. 6: Read 5 items >x [1] 10.4 5.6 3.1 6.4 21.7 # usamos ponto no lugar de vrgula. Ex: 10.4 significa 10,4 > frutas<-scan(what=" ", sep=",") 1: banana,uva,manga 4: Read 3 items > frutas [1] "banana" "uva" "manga" Veja outras opes. O que acontece em cada comando? > x<-rep('a',5) [1] "a" "a" "a" "a" "a" > x<-rep(2,6) >x [1] 2 2 2 2 2 2 > x<-rep(c('s','n'), c(2,4)) >x [1] "s" "s" "n" "n" "n" "n" > x<-rep(c(4, 5, 6), 2) >x [1] 4 5 6 4 5 6 > x<-seq(-1,1,0.4) >x [1] -1.0 -0.6 -0.2 0.2 0.6 1.0 > x<-seq(-1,1,length=6) >x [1] -1.0 -0.6 -0.2 0.2 0.6 1.0 > x<-seq(-1, by=0.4, length=6) >x [1] -1.0 -0.6 -0.2 0.2 0.6 1.0 > a<-gl(2,3) >a [1] 1 1 1 2 2 2 Levels: 1 2 > b<-gl(2,2, label=c("m","f")) >b [1] m m f f Levels: m f Podemos realizar operaes aritmticas com vetores, elemento a elemento, caso estes tenham a mesma dimenso. Considere os vetores relativos ao peso e altura de um grupo de 6 pessoas. > peso<-c(62, 70, 52, 98, 90, 70) > altura<-c(1.70, 1.82, 1.75, 1.94, 1.84, 1.61) Vamos calcular o ndice de massa corporal (i.m.c) para essas pessoas? peso i.m.c . altura2

Professor: Roberto Campos Leoni

> i.m.c<-peso/altura^2 > i.m.c [1] 21.45329 21.13271 16.97959 26.03890 26.58318 27.00513 Tente calcular o seu IMC! O que acontece se utilizamos os comandos a seguir? > max(peso) [1] 98 > min(peso) [1] 52 > range(peso) [1] 52 98 Para finalizar, perceba que objetos a, b e c so diferentes: > data.class(a) [1] "numeric" > data.class(b) [1] "character" > data.class(c) [1] "logical" Variveis nominais e ordinais No R uma varivel reconhecida como nominal usando-se o a funo factor(). Para variveis ordinais, usa-se o comando ordered( ). Vejam os exemplos: # uso do comando fator() # varivel sexo com 20 "masculino" e 30 "feminino" sexo <- c(rep("masculino ",20), rep("feminino ", 30)) sexoqual <- factor(sexo) summary(sexoqual) # uso do comando ordered() tamanho <- c("p", "g", "p", "m", "p", "g", "p", "g", "m") tamanho.ord <- ordered(tamanho, levels = c("p", "m", "g"), labels = c("pequeno", "mdio", "grande")) summary(tamanho.ord) Atividades Propostas 1. Crie o vetor: x<-c(0, 8, 9, 7, 4, 2, 10, 0, 2, 1) 2. Selecione via comando apenas o sexto elemento e o salve em um objeto chamado x1 x1<-x[6] 3. Agora selecione do segundo ao sexto elemento e o salve em um objeto chamado x2 x2<-x[2:6] 4. Tente isso: xa<-x[x > 4]. O que acontece? 5. Tente agora: xb<-x[x > 2 & x <= 8]. O que significa? 6. Crie uma varivel que contenha 100 dados qualitativos. 7. Use o comando factor() para transform-lo em qualitativo. 8. Crie um exemplo usando o comando ordered()

Professor: Roberto Campos Leoni

Aula 4 Criando objetos no R: matriz e array


Criando Matrizes Em uma matriz os elementos so organizados em duas dimenses (linhas e colunas). Todas as colunas possuem o mesmo de dados (numrico, caracter, etc.) e o mesmo tamanho. Usaremos o comando matrix > y<-matrix(1:20, nrow=5,ncol=4) #nrow = nmero de linhas e ncol=nmero de colunas >y [,1] [,2] [,3] [,4] [1,] 1 6 11 16 [2,] 2 7 12 17 [3,] 3 8 13 18 [4,] 4 9 14 19 [5,] 5 10 15 20 > valores <- c(1,26,24,68) > nomelinhas <- c("R1", "R2") > nomecolunas <- c("C1", "C2") > minhamatriz<- matrix(valores, nrow=2, ncol=2, byrow=TRUE, dimnames=list(nomelinhas, nomecolunas)) > minhamatriz C1 C2 R1 1 26 R2 24 68 Outras formas de criar uma matriz Suponha que voc tenha as notas de cinco alunos em trs provas em uma determinada disciplina. Aqui, as linhas representam os alunos e as colunas representam as notas das provas p1 p2 p3 7.5 6.9 8.2 8.1 7.3 6.7 5.9 6.8 9.0 7.8 7.0 7.5 8.8 7.9 6.4 # Entrada da matriz diretamente pelo comando scan() notas.matrix<-matrix(scan(), ncol=3, byrow=T) 7.5 6.9 8.2 8.1 7.3 6.7 5.9 6.8 9.0 7.8 7.0 7.5 8.8 7.9 6.4 > notas.matrix [,1] [,2] [,3] [1,] 7.5 6.9 8.2 [2,] 8.1 7.3 6.7 [3,] 5.9 6.8 9.0 [4,] 7.8 7.0 7.5 [5,] 8.8 7.9 6.4 Observe que o preenchimento da matriz foi feito por linhas, ou seja, byrow=T. Assim como nos vetores, uma matriz pode ser criada usando-se a funo c() para combinar os valores: # Empregando o comando c() notas.matrix<-matrix(c(7.5,6.9,8.2,8.1,7.3,6.7,5.9,6.8, 9.0,7.8,7.0,7.5,8.8,7.9,6.4), ncol=3, byrow=T) Criando matrizes usando a funo rbind e cbind

Professor: Roberto Campos Leoni

Uma matriz tambm pode ser construda pela combinao de dois ou mais vetores de mesmo comprimento (length). Do exemplo anterior, usando a funo cbind() e rbind(), a matriz, notas.matrix, pode ser definida por: # Definindo os vetores das notas e usando cbind notas.p1<-c(7.5, 8.1, 5.9, 7.8, 8.8) notas.p2<-c(6.9, 7.3, 6.8, 7.0, 7.9) notas.p3<-c(8.2, 6.7, 9.0, 7.5, 6.4) notas.matrix<-cbind(notas.p1, notas.p2, notas.p3) # Listando a matriz notas.matrix notas.p1 notas.p2 notas.p3 [1,] 7.5 6.9 8.2 [2,] 8.1 7.3 6.7 [3,] 5.9 6.8 9.0 [4,] 7.8 7.0 7.5 [5,] 8.8 7.9 6.4 Usando a funo rbind() para combinar os vetores como linhas da matriz. # Definindo os vetores das notas, usando rbind aluno1<-c(7.5, 6.9, 8.2) aluno2<-c(8.1, 7.3, 6.7) aluno3<-c(5.9, 6.8, 9.0) aluno4<-c(7.8, 7.0, 7.5) aluno5<-c(8.8, 7.9, 6.4) notas.matrix<-rbind(aluno1,aluno2,aluno3,aluno4,aluno5) # Listando a matriz notas.matrix [,1] [,2] [,3] aluno1 7.5 6.9 8.2 aluno2 8.1 7.3 6.7 aluno3 5.9 6.8 9.0 aluno4 7.8 7.0 7.5 aluno5 8.8 7.9 6.4 Podemos atribuir nomes s linhas e colunas de uma matriz. Para tanto, faa: > # Definindo os vetores das notas e usando cbind > c1<-c(7.5, 8.1, 5.9, 7.8, 8.8) > c2<-c(6.9, 7.3, 6.8, 7.0, 7.9) > c3<-c(8.2, 6.7, 9.0, 7.5, 6.4) > notas.matrix<-cbind(c1, c2, c3) > # Listando a matriz > notas.matrix c1 c2 c3 [1,] 7.5 6.9 8.2 [2,] 8.1 7.3 6.7 [3,] 5.9 6.8 9.0 [4,] 7.8 7.0 7.5 [5,] 8.8 7.9 6.4 > # Atribuindo os nomes s linhas e colunas > colnames(notas.matrix)<-c("Prova.1","Prova.2","Prova.3") > rownames(notas.matrix)<-c("Adriano","Pedro","Joana","Mario","Cintia")

Professor: Roberto Campos Leoni

> # Listando a matriz > notas.matrix Prova.1 Prova.2 Prova.3 Adriano 7.5 6.9 8.2 Pedro 8.1 7.3 6.7 Joana 5.9 6.8 9.0 Mario 7.8 7.0 7.5 Cintia 8.8 7.9 6.4 Agora voc deve estar se perguntando como possvel visualizar um elemento (ou um grupo de elementos) contido numa matriz. A lgica a mesma que com vetores, sendo que no caso das matrizes, os elementos possuem 2 coordenadas: uma para a linha e outra para a coluna, usando ainda os nossos colchetes lembra? > x<-matrix(1:20, nrow=5,ncol=4) >x [,1] [,2] [,3] [,4] [1,] 1 6 11 16 [2,] 2 7 12 17 [3,] 3 8 13 18 [4,] 4 9 14 19 [5,] 5 10 15 20 > x[,4] # 4 coluna de uma matriz [1] 16 17 18 19 20 > x[3,] # 3 linha de uma matriz [1] 3 8 13 18 > x[2:4,1:3] # linhas 2,3,4 e colunas 1,2,3 [,1] [,2] [,3] [1,] 2 7 12 [2,] 3 8 13 [3,] 4 9 14 Criando Array O conceito de array generaliza a ideia de matriz. Enquanto em uma matriz os elementos so organizados em duas dimenses (linhas e colunas), em um array os elementos podem ser organizados em um nmero arbitrrio de dimenses. Para maiores detalhes consulte help(array). Atividades Propostas 1. Crie a matriz e execute os comandos a seguir: x x[2, ] x[, 2] x[1, 4] x[1, c(4, 5)] O que significa cada resultado?

x <- matrix(1:10, nrow = 2)

2. Execute o comando notas <- round(rnorm (20,6,1), 2) # este comando simula 20 valores. No se preocupe em entend-lo agora. Agora transforme o vetor notas em uma matriz com 5 linhas e 4 colunas e d nomes as linhas e colunas (qualquer nome).

Professor: Roberto Campos Leoni

Aula 5 Criando objetos no R: data.frame e listas


Criando Data frame Um data.frame (folha de dados) uma estrutura na forma de uma tabela, na qual as colunas representam variveis (como idade, sexo, nome, etc.) e as linhas representam as observaes. Vetores, matrizes e arrays foram todos os elementos a serem do mesmo tipo, i.e., numrico ou caracter. O data-frame uma estrutura semelhante uma matriz porm com cada coluna sendo tratada separadamente. Desta forma podemos ter colunas de valores numricos e colunas de caracteres no mesmo objeto. Note, entretanto, que dentro de uma mesma coluna todos os elementos ainda sero forados a serem do mesmo tipo. # Cria uma tabela (objeto denominado pessoas) > pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo"), sexo=c("m","m","f","m","f","f","m","f","m","m"), idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) # Lista a tabela (objeto) > pessoas nomes Adriano Pedro Joana Mario Cintia Maria Antonio Marta Jos Joo sexo idade altura m 17 1.65 m 18 1.70 f 19 1.68 m 20 1.69 f 21 1.71 f 22 1.67 m 23 1.67 f 24 1.66 m 25 1.72 m 26 1.73

1 2 3 4 5 6 7 8 9 10

# Lista o nmero de variveis (colunas) length(pessoas) # Mostra o nome das colunas names(pessoas) # Mostra a classe do objeto class(pessoas) # Mostra que a varivel sexo um fator class(pessoas$sexo) # Mostra a numerao das linhas row.names(pessoas) Outro exemplo: O R vem com vrios bancos de dados para ser usado como exemplo. Experimente digitar data(). Vamos usar um data.frame chamado ris. Para evitar alter-lo, vamos guardar o ris em um objeto denominado dados e trabalhar apenas com dados. >data(iris) >dados <- ris >dados # olhando tudo >dados[1:10, 1:5] #olhando apenas as 10 primeiras linhas e 5 primeiras colunas > dados[1:10, ] #idem >names(iris) # quais so as variveis?

Professor: Roberto Campos Leoni

[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species" Dica: A descrio dessas variveis so: Sepal.Length Tamanho da spala Sepal.Width Largura da spala Petal.Length Tamanho da ptala Petal.Width Largura da ptala Species Espcie observada Entrando com dados atravs do teclado Uma opo para criar um data.frame usar o comando edit(). Experimente! meusdados <- data.frame(idade=numeric(0), sexo=character(0), peso=numeric(0)) meusdados <- edit(meusdados) DICA: Quer mudar o nome de alguma varivel ou algum valor digitado errado? pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo"), sexo=c("m","m","f","m","f","f","m","f","m","m"), idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) # altere o nome que desejar e feche a janela de dados que aparece na tela. pessoas <- fix(pessoas) Criando Lista Uma lista o tipo de objeto mais flexvel do R, pois os componentes de uma lista podem ser de qualquer modo ou tipo, incluindo outras listas. Voc pode combinar, por exemplo, um vetor numrico com 10 valores e uma matriz de ordem 4 x 4. Exemplo Vamos construir e explorar uma lista com os dados de uma famlia: nome do pai, da me, nmero de filhos e idade dos filhos. # Trabalhando com Listas # Criando uma Lista dados1<-list(pai="Jose", esposa="Maria", n.filhos=3, idade.filhos=c(4, 7, 9)) # Apresentando a Lista dados1 # Extraindo as componentes com os seus respectivos valores dados1[1] dados1[2] dados1[3] dados1[4] # Extraindo elementos da lista dados1[[1]] dados1[[2]] dados1[[3]] dados1[[4]] # Ou com o nome da lista e da componente na lista dados1$pai dados1$esposa dados1$n.filhos

Professor: Roberto Campos Leoni

dados1$idade.filhos # Extraindo a idade do 2 filho dados1[[4]][2] # Criando uma nova lista com a nacionalidade nac<-list(nacionalidade="Brasileira") nac # Criando uma nova lista, com as duas listas "dados1" e "nac" dados2<-list(dados1,nac) dados2 # Adicionando uma nova componente a lista "dados1" dados1[[5]]<-list(nacionalidade="Brasileira") dados1 Atividades Propostas 1. Com o conjunto de dados ris execute os comandos a seguir e relate o que obtemos como resposta. >data(iris) >dados <- ris > dados[,5] >dados$Species > dados[dados$Petal.Length>6,]

Professor: Roberto Campos Leoni

Aula 6 Packages (pacotes) e importao de dados


Pacotes so colees de funes, dados e cdigos compilados que ficam armazenados em um lugar chamado library. Alguns pacotes bsicos j so automaticamente instalados com o R, porm outros precisam ser instalados caso tenha necessidade. Depois da instalao, para us-los, necessrio carregar tais pacotes na rea de trabalho. > .libPaths() # local do library em sua mquina. > library() # veja os pacotes instalados em sua mquina. > search() # veja os pacotes que esto em uso na area de trabalho Como instalar novos Packages? Existe uma lista com todos os pacotes no site: http://cran.r-project.org/web/packages/ Para instalar um pacote basta acessar o boto no menu do R ou digitar o comando: > install.packages()

Para usar um pacote, depois de instalado, basta usar o comando: > library (nomedopacote) Dica: O pacote denominado Rcmdr cria uma interface grfica para usar o R, ou seja, ele disponibiliza botes (como no excel) para executar muitas tarefas usuais. Exemplo: > install.packages(Rcmdr) #instala o pacote > library (Rcmdr) # carrega o pacote para ser usado > ??Rcmdr # help sobre o pacote Importao de dados Existem diversas formas de importar dados no R. Uma forma simples de transferir dados de uma planilha (Excel, Calc, etc.) para o R atravs da rea de transferncia (clipboard ou o famoso ctrl + c) atravs da seguinte funo: read.delim("clipboard",dec=",",header=T). clipboard indica que os dados esto na rea de transferncia, dec=, que utilizada a vrgula como separador decimal e header=T que a primeira linha contm ttulos das colunas. Considere que em uma planilha voc tem os dados A 186 192 195 197 199 199 200 200 202 B 81,0 88,7 78,4 101,2 77,6 92,3 90,3 91,3 87,6 Sexo M F M F M M M M M

Selecione a rea da planilha com os dados e copie (Ctrl C). No prompt do R escreva (no copie o comando a seguir porque assim os dados sairo da memria): > dados <- read.delim("clipboard", dec="," ,header=TRUE) # Os dados sero armazenados em dados. > dados

Professor: Roberto Campos Leoni

muito comum encontrar arquivos com dados no formato Excel ou Calc. Nesse caso, se salvarmos o arquivo com a extenso *.csv podemos importar os dados para R. Veja como: > dados2 <- read.table(file="c:/nomedoarquivo.csv", header=TRUE, sep=",", row.names="id") #ou ainda > dados3 <- read.csv("nomedoarquivo.csv") # Se quiser procurar o arquivo, uma terceira possibilidade : > data<-read.table(file.choose(),header=T, sep=",", row.names="id") Atividades Propostas 1. Salve o arquivo PIB.csv que est no site: http://dl.dropbox.com/u/32673292/curso%20R/PIB.csv 2. coloque o arquivo em seu diretrio de trabalho do R. lembra como? 3. importe os dados usando o comando read.table() > PIB <- read.table(file="PIB.csv", header=TRUE, sep=",", row.names="id") > PIB

Professor: Roberto Campos Leoni

Aula 7 Tabelas de frequncia (contagem)


Pode-se gerar tabelas usando a funo table( ), tabelas com propores usando prop.table( ) e frequncias marginais usando margin.table( ). Varivel aleatria (VA) qualitativa nominal # VA Sexo sexo = c("m","f","m","m","m","m","f","f","m","m","m","m","f","f","m","f","m","m","m","m","m","m","m") table (sexo) # ou ainda sexo <- factor(sexo) summary(sexo) Varivel aleatria (VA) qualitativa ordinal tamanho = c("p", "g", "p", "m", "p", "g", "p", "g", "m") table(tamanho) #ou ainda tamanho = factor(tamanho) summary(tamanho) # levando-se em conta a ordem de grandeza tamanho.ord = ordered(tamanho, levels = c("p", "m", "g"), labels = c("pequeno", "mdio", "grande")) summary(tamanho.ord) # ou table(tamanho.ord) VA quantitativa discreta ou VA quantitativa contnua #VA Distncia percorrida, em metros, durante 12 minutos. Alunos de 18 a 25 anos. g18a25 = c(3004, 3041, 3085, 3111, 3166, 3269, 3005, 3049, 3091, 3114, 3178, 3273, 3009, 3065, 3102, 3122, 3242, 3287, 3013, 3073, 3106, 3127, 3258, 3292, 3030, 3076, 3107, 3139, 3265, 3297) Vamos classificar de acordo com o quadro: Faixa Etria / Meno E MB B R I 18 a 25 >3299 3100 a 3299 2600 a 3099 2300 a 2599 <2300 mencao18a25 = ifelse(g18a25 >= 3300, "E", ifelse(g18a25 >= 3100,"MB",ifelse(g18a25 >= 2600,"B",ifelse(g18a25 >= 2300,"R" ,"I")))) tabmencao18a25=table(mencao18a25) tabmencao18a25 Outra forma: Juntando o comando table() com o comando cut(). Para ver a sintaxe completa e outras possibilidades digite ?cut no R. Esta a maneira mais fcil de criar distribuies de frequncias com classes de valores. table(cut(g18a25, breaks=4, include.lowest = TRUE, right = FALSE, dig.lab = 4)) # outro exemplo table(cut(g18a25, breaks=c(3000,3100,3200,3300), include.lowest = TRUE, right = FALSE, dig.lab = 4)) Tabulao cruzada Quando h o interesse em obter informaes cruzadas, tpicas para tabelas com dupla entrada, faamos assim: sexo = c(rep("masculino ",25), rep("feminino ", 27)) sexo evasao = c(rep("sade ",4), rep("interesse prprio", 15), rep("reprovao", 33) )

Professor: Roberto Campos Leoni

evasao tabela = table(sexo,evasao) margin.table (tabela) margin.table(tabela, 1) # total por sexo margin.table(tabela, 2) # total por evaso prop.table(tabela) prop.table(tabela, 1) # por linha prop.table(tabela, 2) # por coluna # com trs variveis cruzadas idade = c(rep("jovem",19), rep("idoso", 33) ) tabela<- table(sexo,evasao, idade) ftable(tabela) #ftable apresenta uma sada mais organizada At o momento os exemplos foram criados usando vetores. Vamos usar data.frame: pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo"), sexo=c("m","m","f","m","f","f","m","f","m","m"), idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) table(pessoas$sexo, pessoas$idade) # o smbolo $ acessa os dados de uma coluna especfica # por exemplo, pessoas$sexo indica que queremos a varivel sexo do data.frame pessoas. #vamos separar idade em duas faixas? idade.classificada = ifelse(pessoas$idade>20, "maior que 20","menor ou igual a 20") table(pessoas$sexo, idade.classificada) prop.table(table(pessoas$sexo, idade.classificada)) Usando o pacote gmodels library(gmodels) sexo = c(rep("masculino ",15), rep("feminino ", 27)) sexo evasao = c(rep("sade ",4), rep("interesse prprio", 15), rep("reprovao", 23) ) evasao CrossTable(sexo,evasao)

Professor: Roberto Campos Leoni

Aula 8 Grficos
Algumas configuraes para construir grficos so controladas pela funo par(). Veja o quadro com algumas funes disponveis. mfrow ps bg fg col.main, col.lab, col.sub, col.axis cex.main, cex.lab, cex.sub, cex.axis font.main, font.lab, font.sub, font.axis divide a janela onde os grficos sero construdos, cujo valor do tipo c(nl, nc), em que nl o nmero de linhas e nc o nmero de colunas em que a janela ser dividida controla o tamanho de todos os textos nos grficos, cujo valor deve ser um nmero inteiro controla a cor de fundo da janela dos grficos. Vejas as cores com o comando colors() controla a cor dos eixos e das bordas dos smbol os dos grficos controla as cores do ttulo, dos nomes dos eixo, do rodap e dos valores dos eixos, respectivamente

controla o tamanho da fonte, do ttulo, dos nomes d os eixos, do rodap e dos valores dos eixos, respectivamente, sendo que os valores positivos menores ou maiores do que 1, diminuem ou aumentam o tamanho, respectivamente

controla a fonte a ser usada, com base em nmeros inteiros de 1 a 20, sendo que o nmero 1 indica texto normal, o 2 negrito, o 3 itlico e o 4 negrito + itlico

Exemplos: par(mfrow=c(1,2)) # Dividir a janela dos grficos em uma linha e duas colunas colors() par(bg="grey") # Modificar a cor de fundo para cinza Setor (pizza) #dados j tabulados. vendas <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12) names(vendas) <- c("Blueberry", "Cherry","Apple", "Boston Cream", "Other", "Vanilla Cream") vendas pie(pie.sales, main="Vendas") #quer mudar as cores? pie(pie.sales, col = c("purple", "violetred1", "green3","cornsilk", "cyan", "white")) #dados tabulados na hora pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo") , sexo=c("m","m","f","m","f","f","m","f","m","m") , idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) pie(table(pessoas$sexo), main="Sexo dos alunos....") slices <- c(10, 12,4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pie(slices, labels = lbls, main="Pie Chart of Countries")

Professor: Roberto Campos Leoni

# com Porcentagem slices <- c(10, 12, 4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pct <- round(slices/sum(slices)*100) lbls <- paste(lbls, pct) # add percents to labels lbls <- paste(lbls,"%",sep="") # ad % to labels pie(slices,labels = lbls, col=rainbow(length(lbls)), main="Pie Chart of Countries") # 3D Explodido library(plotrix) slices <- c(10, 12, 4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pie3D(slices,labels=lbls,explode=0.1, main="Pie Chart of Countries ") Coluna (barras) barplot(vendas) barplot(table(pessoas$sexo), main="Sexo dos alunos....", xlab="Sexo", ylab="Frequncia") # velocidade de veculos que passaram na Av Duque de Caxias em 15-03-2004. vel=c(21,21,21,22,23,24,29,30,30,30,31,32,32,33,34,34,34,34,34,35,35,35,36,37,38,38,38,38,38,38,39,39,40 ,41,43,43,43,43,44,44,44,45,45,46,46,47,47,47,48,49,49,50,50,50,51,51,51,51,53,53,53,55,56,56,57,57,58,5 8,58,60,60,60,61,61,62,62,62,62,63,63, 63,63,64,64,64,64,65,65,66,66,67,68,68,68,70,70,70,71,71,75) #transformando para varivel qualitativa vel2=ifelse(vel<=36,"veloc baixa",ifelse(vel<=44,"veloc normal","veloc alta")) vel2 vel.tab=table(vel2) #tabulando os dados vel.tab # grfico de coluna barplot(vel.tab,col=c(4,2,5),legend.text=T,main="Velocidade de 100 veculos \n Av Duque de Caxias - 1503-04", sub="Fonte:PRF") Mais um exemplo. Vamos copiar os dados abaixo do clipboard. Copie o quadro (ctrl + c) a seguir e digite: dados <- read.delim("clipboard",dec=",",header=T) cat produo unid.prod Fab 1 17,5 9 Fab 2 15,2 20 Fab 3 10,3 500 Fab 4 8,4 150 Fab 5 20,3 900 produo = dados$produo nomes = dados$cat names(produo) <- nomes barplot(produo, main="Ttulo.", col.main=c("red")) Outros exemplos: counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", xlab="Number of Gears")

Professor: Roberto Campos Leoni

counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", horiz=TRUE, names.arg=c("3 Gears", "4 Gears", "5 Gears")) par(las=2) # texto perpendicular a y par(mar=c(5,8,4,2)) # aumenta margem de y. counts <- table(mtcars$gear) barplot(counts, main="Car Distribution", horiz=TRUE, names.arg=c("3 Gears", "4 Gears", "5 Gears"), cex.names=0.8) Grfico de colunas (barras) para tabelas cruzadas (dupla entrada) Copie o quadro (ctrl + c) a seguir e digite: va <- read.delim("clipboard",row.names=1) Local C Local B Local A G1 3 10 50 G2 G3 30 70 80 30 15 5

# veja que va um data.frame vamos trata-lo como matriz com o comando as.matrix barplot(as.matrix(va), ylim=c(0,140), xlab="grupos",ylab="n de viagens", sub="Fonte: Empresa ECT", legend.text=row.names(va), args.legend=list(x = "topleft", bty="n")) Dicas: para transpor a matriz: t(as.matrix(va)) para obter a frequncia relativa: prop.table(as.matrix(va),2) para barras justapostas: beside=T para barras horizontais: horiz=T adiciona uma linha abaixo das barras (Opo ao box): axis.lty=1 Exemplos modificados: barplot(t(prop.table(as.matrix(va),2)), xlab="grupos",ylab="n de viagens", beside=T, legend.text=row.names(va), args.legend=list(x = "topleft", bty="n")) barplot(as.matrix(va), xlab="grupos",ylab="n de viagens", beside=T, legend.text=row.names(va), args.legend=list(x = "topright", bty="n"), horiz=T) Outros exemplos: counts <- table(mtcars$vs, mtcars$gear) barplot(counts, main="Car Distribution by Gears and VS", xlab="Number of Gears", col=c("darkblue","red"), legend = rownames(counts)) counts <- table(mtcars$vs, mtcars$gear) barplot(counts, main="Car Distribution by Gears and VS", xlab="Number of Gears", col=c("darkblue","red"), legend = rownames(counts), beside=TRUE) Dot Plots # Dotplot Simples #Vamos usar o banco de dados mtcars que vem no R.

Professor: Roberto Campos Leoni

dotchart(mtcars$mpg,labels=row.names(mtcars),cex=.7, main="Gas Milage for Car Models", xlab="Miles Per Gallon") # Dotplot: por grupos e colorido # ordenar pela varivel mpg, agrupar e colorir pela varivel cylinder x <- mtcars[order(mtcars$mpg),] # ordenando por mpg x$cyl <- factor(x$cyl) # tem que ser um factor x$color[x$cyl==4] <- "red" x$color[x$cyl==6] <- "blue" x$color[x$cyl==8] <- "darkgreen" dotchart(x$mpg,labels=row.names(x),cex=.7,groups= x$cyl, main="Gas Milage for Car Models\ngrouped by cylinder", xlab="Miles Per Gallon", gcolor="black", color=x$color) Grfico de linha (temporal) O comando plot(x, y) produz o grfico. Funo lines( ) adiciona linha ao grfico. dia=c(1:10) venda = c(7,6,5,7,6,8,9,8,10,12) plot(dia,venda) lines(dia,venda)

#consumo de energia eltrica no 1o. sem de 2003 e 2004 no perodo fora da ponta (horrio de pico). sem1.2003=c(579.744,614.952,683.640,618.300,721.980,776.736) sem1.2003 sem1.2004= c(631.476,564.084,689.904,786.564,715.284,835.272) sem1.2004 # construindo os grficos de linha ou tendncia plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo") plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo") # olhando os dois na mesma tela par(mfrow=c(1,2)) plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo") plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo") par(mfrow=c(1,1)) # vamos coloc-los na mesma escala para comparaes par(mfrow=c(1,2)) menor= min(sem1.2003,sem1.2004) maior= max(sem1.2003,sem1.2004) par(mfrow=c(1,2)) plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo", ylim=c(menor,maior)) plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo", ylim=c(menor,maior)) par(mfrow=c(1,1))

Professor: Roberto Campos Leoni

# vamos manipular os grficos! par(mfrow=c(1,2)) plot(sem1.2003,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2003 ",xlab="meses",ylab="consumo", ylim=c(0,2000)) plot(sem1.2004,type="b",main="Consumo de energia eltrica (fora da ponta)\n 1 Sem 2004 ",xlab="meses",ylab="consumo", ylim=c(0,2000)) par(mfrow=c(1,1)) # tudo em apenas um grfico plot(sem1.2003,col="red",type="l",main="Consumo de energia eltrica \n (fora da ponta) 1 Sem 2003 e 1 Sem 2004",xlab="meses",ylab="consumo",ylim=c(500,900)) lines(sem1.2004,col="blue") text(c(5,5),c(600,650),c("1 sem 2003","1 sem 2004"),col=c("red","blue"))

Usando plot() com parmetro type type p l o s, S h Descrio Pontos Linhas Pontos e linhas escada histograma

x <- c(1:5) y <- x par(pch=22, col="red") # plotting symbol and color par(mfrow=c(2,3)) # all plots on one page opts = c("p","l","o","s","S","h") for(i in 1:length(opts)){ heading = paste("type=",opts[i]) plot(x, y, type="n", main=heading) lines(x, y, type=opts[i]) } #um exemplo mais complexo #conjunto de dados Orange Orange #saiba mais sobre este conjunto de dados do R ?Orange # converte factor para numrico Orange$Tree <- as.numeric(Orange$Tree) arvores <- max(Orange$Tree) # amplitude de x e y xrange <- range(Orange$age) yrange <- range(Orange$circumference) # alguns parmetros do grfico plot(xrange, yrange, type="n", xlab="Idade (dias)", ylab="Circunferncia (mm)" ) colors <- rainbow(arvores) linetype <- c(1: arvores)

Professor: Roberto Campos Leoni

plotchar <- seq(18,18+ arvores,1) # adicionar linhas for (i in 1:ntrees) { tree <- subset(Orange, Tree==i) lines(tree$age, tree$circumference, type="b", lwd=1.5, lty=linetype[i], col=colors[i], pch=plotchar[i]) } # adicionar ttulo e subttulo title("crescimento da rvore", "exemplo grfico de linha ") # adicionar legenda legend(xrange[1], yrange[2], 1: arvores, cex=0.8, col=colors, pch=plotchar, lty=linetype, title="rvore") Histograma set.seed(12345) #gera sempre o mesmo conjunto de dados (semente) y1<-rnorm(50,150,20) # Primeira simulao y2<-rnorm(50,100,20) # Segunda simulao hist(y1, main="Histograma de y1", ylab=" Frequncia", xlab="Varivel y1") #vamos comparar os dois grficos na mesma janela par(mfrow=c(1,2)) # Dividir a janela dos grficos em uma linha e duas colunas hist(y1, xlim=c(50,200), ylab=" Frequncia") hist(y2, xlim=c(50,200), ylab=" Frequncia") par(mfrow=c(1,1)) notas4=data.frame(GrupoA=c(36,51,52,56,61,65,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74, 79,79,82)) par(mfrow=c(1,2)) color=c("red") hist(notas4$GrupoA,main="GrupoA",xlab="notas",ylab="frequncia",col.main=color) color=c("blue") hist(notas4$GrupoB,main="GrupoB",xlab="notas",ylab="frequncia",col.main=color) par(mfrow=c(1,1)) # velocidade de veculos que passaram na Av Duque de Caxias em 15-03-2004. vel=c(21,21,21,22,23,24,29,30,30,30,31,32,32,33,34,34,34,34,34,35,35,35,36,37,38,38,38,38,38,38,39,39,40 ,41,43,43,43,43,44,44,44,45,45,46,46,47,47,47,48,49,49,50,50,50,51,51,51,51,53,53,53,55,56,56,57,57,58,5 8,58,60,60,60,61,61,62,62,62,62,63,63, 63,63,64,64,64,64,65,65,66,66,67,68,68,68,70,70,70,71,71,75) hist(vel,main="Velocidade de 100 veculos \n Av Duque de Caxias - 15-0304",xlab="Classes",ylab="Frequncias",labels=T,col="4",sub="Fonte:PRF") Grfico de Ramos e Folhas stem(y1) stem(y2)

Box-plot

Professor: Roberto Campos Leoni

set.seed(12345) #gera sempre o mesmo conjunto de dados (semente) y1<-rnorm(50,150,20) # Primeira simulao y2<-rnorm(50,100,20) # Segunda simulao boxplot(y1,main="Ttulo", xlab="Varivel y1") par(mfrow=c(1,2)) boxplot(y1,y2 ) #ou boxplot(y1,y2 ,notch=TRUE) # veja como muda o grfico par(mfrow=c(1,1))

notas=data.frame(GrupoA=c(8,51,52,56,61,63,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74,79 ,79,82)) par(mfrow=c(2,2)) color=c("red","blue") boxplot(notas,col=color) notas2=data.frame(GrupoA=c(51,52,56,61,63,65,67,74,76,82,89),GrupoB=c(43,55,61,62,63,67,68,74,79,79, 82)) boxplot(notas2,col=color) notas3=data.frame(GrupoA=c(39,51,52,56,61,63,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74, 79,79,82)) boxplot(notas3,col=color) notas4=data.frame(GrupoA=c(36,51,52,56,61,65,65,67,74,76,82,89),GrupoB=c(41,43,55,61,62,63,67,68,74, 79,79,82)) boxplot(notas4,col=color) par(mfrow=c(1,1))

pessoas<-data.frame(notasA=c(37, 28, 19,30, 21, 22, 23, 24, 25, 26), notasB=c(65,79,68,69,27,67,67,66,52,42)) boxplot(pessoas$notasA, pessoas$notasB )

Grfico de Pareto O grfico de Pareto pode ser construdo tanto para efeitos como para causas, cujo objetivo destacar os nveis prioritrios da varivel estudada. As variveis so, normalmente, expressas em nmero de ocorrncias ou em unidades monetrias. Como exemplo, considere que uma indstria girou o ciclo PDCA com o objetivo de diminuir o nmero de televisores defeituosos. A amostragem foi feita sobre a produo de um ms de acordo os tipos de defeitos e estratificada em funo dos locais 1 e 2 de produo. No estudo, foram analisadas duas variveis: nmero de ocorrncia de cada tipo de defeito e custo devido ao tipo de defeito. dados= data.frame(local=gl(2,5), defeito=c("def.A", "def.B", "def.C","def.D","def.E","def.A","def.B","def.C","def.D","def.E"),ocorrencias=c(15,12,6,4,7,6,16,12,6,2), custo=c(30,60,120,40,25,12,80,240,60,15)) library(qcc) # Ativar o pacote qcc. Instale-o, caso no tenha em sua mquina. names(dados$ocorrencias)<- dados$defeito # Atribuir os nomes dos t ratamentos aos valores de Y par(mfrow=c(1,2)) # Ver os dois grficos na mesma janela pareto.chart(dados$ocorrencias [dados$local==1], las=1)

Professor: Roberto Campos Leoni

pareto.chart(dados$ocorrencias [dados$local==2], las=1) par(mfrow=c(1,1)) Diagrama de causa e efeito library(qcc) # Ativar o pacote qcc cause.and.effect(cause = list(Mtodo.de.foto.cpia = c("Colocao do Original", "Tempo de secagem"), Liquido = c("Qualidade", "Qualidade quando novo", "Sujeira"), Papel.de.cpia = c("Qualidade do papel", "Foto sensibilidade"), Condies.ambientais = c("Mesa suja", "Mos sujas"), Papel.original = c("Dobras", "Nitidez", "Transparncia"), Copiadora = c(" Velocidade", "Condies do enrolamento", "Potncia da lmpada")) , effect = " Cpia de m qualidade", cex = c(1.2, 1.0, 1.5)) #maximize a janela do grfico para ver melhor

Professor: Roberto Campos Leoni

Aula 9 Medidas numricas


Alguns comandos bsicos: table( ) Cruzamento de variveis mean( ) Mdia aritmtica median( ) Mediana sum( ) Soma summary( ) Sumarizao de dados var( ) Varincia sd( ) Desvio padro quantile( ) Quartis com descrio IQR( ) Amplitude inter-quartil cor( ) Coeficiente de correlao range( ) Amplitude total notas=c(3,4,3,5,4,5,6,7,8,6,4,3,6,7,6,2) mean(notas) median(notas) var(notas) sd(notas) quantile(notas) Vamos ilustrar o uso de algumas medidas com um conjunto de dados j includo no R, o conjunto mtcars que descreve caractersticas de diferentes modelos de automvel. Primeiro vamos carregar e inspecionar os dados. #mtcars um data.frame! data(mtcars) mtcars # mostra todo o conjunto de dados dim(mtcars) # mostra a dimenso dos dados mtcars[1:5,] # mostra as 5 primeiras linhas names(mtcars) # mostra os nomes das variveis help(mtcars) # mostra documentao do conjunto de dados Medidas: mdia e mediana sapply(mtcars, mean) sapply(mtcars, median) multi.fun <- function(x) {c(min = min(x), mean = mean(x), max = max(x))} sapply(cars, multi.fun) Medidas: sumrio summary(mtcars) # mnimo, quartil 1, 2 e 3, mdia e mximo summary(mtcars$mpg) #s da varivel mpg Medidas: percentis quantile(mtcars$mpg , c(0.1, 0.15, 0.615, 0.89999, 0.99)) # alguns percentis quantile(mtcars$mpg , seq(from = 0, to = 1, by =0.1)) # percentis de 10 em 10%. Medidas: assimetria, curtose Podemos obter vrias medidas descritivas usando o pacote psych. #skew significa assimetria

Professor: Roberto Campos Leoni

library(psych) #instale o pacote caso no tenha em sua mquina describe(mtcars$mpg) Sumrio por grupos library(psych) describe.by(mtcars$mpg, mtcars$cyl) pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario", "Cintia","Maria","Antonio","Marta","Jos","Joo") , sexo=c("m","m","f","m","f","f","m","f","m","m") , idade=c(17, 18, 19, 20, 21, 22, 23, 24, 25, 26), altura=c(1.65,1.70,1.68,1.69,1.71,1.67,1.67,1.66,1.72,1.73)) describe.by(pessoas$altura, pessoas$sexo) # outra forma, usando outro pacote library(doBy) summaryBy(mpg ~ cyl , data = mtcars, FUN = function(x) { c(media = mean(x), desvio.padro = sd(x)) } ) # produces mpg.m wt.m mpg.s wt.s for each combination of the levels of cyl and vs

Professor: Roberto Campos Leoni

Aula 10 Descrevendo um conjunto de dados


O livro Estatstica Bsica de W. Bussab e P. Morettin traz no primeiro captulo um conjunto de dados hipottico de atributos de 36 funcionrios da companhia ``Milsa''.
Funcionrio Est.civil Instruo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 solteiro casado casado solteiro solteiro casado solteiro solteiro casado solteiro casado solteiro solteiro casado casado solteiro casado casado solteiro solteiro casado solteiro solteiro casado casado casado solteiro casado casado casado solteiro casado casado solteiro casado casado 1o Grau 1o Grau 1o Grau 2o Grau 1o Grau 1o Grau 1o Grau 1o Grau 2o Grau 2o Grau 2o Grau 1o Grau 2o Grau 1o Grau 2o Grau 2o Grau 2o Grau 1o Grau Superior 2o Grau 2o Grau 2o Grau 1o Grau Superior 2o Grau 2o Grau 1o Grau 2o Grau 2o Grau 2o Grau Superior 2o Grau Superior Superior 2o Grau Superior Filhos Salrio Ano Ms Regio 0 1 2 0 0 0 0 0 1 0 2 0 0 3 0 0 1 2 0 0 1 0 0 0 2 2 0 0 5 2 0 1 3 0 2 3 4.00 4.56 5.25 5.73 6.26 6.66 6.86 7.39 7.59 7.44 8.12 8.46 8.74 8.95 9.13 9.35 9.77 9.80 10.53 10.76 11.06 11.59 12.00 12.79 13.23 13.60 13.85 14.69 14.71 15.99 16.22 16.61 17.26 18.75 19.40 23.30 26 32 36 20 40 28 41 43 34 23 33 27 37 44 30 38 31 39 25 37 30 34 41 26 32 35 46 29 40 35 31 36 43 33 48 42 3 interior 10 capital 5 capital 10 outro 7 outro 0 interior 0 interior 4 capital 10 capital 6 outro 6 interior 11 capital 5 outro 2 outro 5 interior 8 outro 7 capital 7 outro 8 interior 4 interior 9 outro 2 capital 0 outro 1 outro 5 interior 0 outro 7 outro 8 interior 6 interior 10 capital 5 outro 4 interior 7 capital 7 capital 11 capital 2 interior

Professor: Roberto Campos Leoni

milsa <- read.delim("clipboard", dec="." ,header=TRUE) A planilha ainda no est pronta. Precisamos informar para o programa que as variveis: civil, instruo e regio, NO so numricas e sim categricas. milsa$Est.civil <- factor(milsa$Est.civil) milsa$Regio <- factor(milsa$Regio) milsa$Instruo <- ordered(milsa$Instruo, levels = c("1o Grau", "2o Grau", "Superior")) milsa Agora que os dados esto prontos podemos comear a anlise descritiva. Inspecionem os comandos a seguir. Alm disto, precisamos definir uma varivel nica idade a partir das variveis Ano e Ms que foram digitadas. Para gerar a varivel idade (em anos) fazemos: milsa$Idade <- milsa$Ano + milsa$Ms/12 milsa$Idade milsa is.data.frame(milsa) # conferindo se um data-frame names(milsa) # vendo o nome das variveis dim(milsa) # vendo as dimenses do data-frame #para facilitar o uso dos dados podemos usar o comando attach( ). Veja attach(milsa) # anexando ao caminho de procura. # Tanto faz digitar: milsa$Idade #ou Idade

## A seguir so apresentadas algumas possibilidades de uso da Estatstica Descritiva #Variveis: Funcionrio Est.civil Instruo ## Anlise Univariada ## ## 1. Varivel Qualitativa Nominal Est.civil is.factor(Est.civil) ## 1.1 Tabela: Est.civil.tb <- table(Est.civil) Est.civil.tb ## ou em porcentagem 100 * table(Est.civil)/length(Est.civil) ## ou ento prop.table(Est.civil.tb) ## 1.2 Grfico pie(table(Est.civil)) ## 1.3 Medidas ## encontrando a moda Est.civil.mo <- names(Est.civil.tb)[Est.civil.tb == max(Est.civil.tb)] Est.civil.mo Filhos Salrio Ano Ms Regio

Professor: Roberto Campos Leoni

## 2 Qualitativa Ordinal Instruo is.factor(Instruo) ## 2.1 Tabela: Instruo.tb <- table(Instruo) Instruo.tb prop.table(Instruo.tb) ## 2.2 Grfico: barplot(Instruo.tb) ## 2.3 Medidas Instruo.mo <- names(Instruo.tb)[Instruo.tb == max(Instruo.tb)] Instruo.mo median(as.numeric(Instruo)) # s calcula mediana de variveis numricas levels(milsa$Instruo)[median(as.numeric(milsa$Instruo))] ## 3 Quantitativa discreta Filhos ## 3.1 Tabela: Filhos.tb <- table(Filhos) Filhos.tb Filhos.tb/sum(Filhos.tb) # frequncias relativas ## 3.2 Grfico: plot(Filhos.tb) # grfico das frequncias absolutas Filhos.fac <- cumsum(Filhos.tb) Filhos.fac # frequncias acumuladas plot(Filhos.fac, type="s") # grfico das frequncias acumuladas ## 3.3 Medidas ## De posio Filhos.mo <- names(Filhos.tb)[Filhos.tb == max(Filhos.tb)] Filhos.mo # moda Filhos.md <- median(Filhos, na.rm=T) Filhos.md # mediana Filhos.me <- mean(Filhos, na.rm=T) Filhos.me # mdia ## Medida de disperso range(Filhos, na.rm=T) diff(range(Filhos, na.rm=T)) # amplitude Filhos.dp <- sd(Filhos, na.rm=T) # desvio padro Filhos.dp var(Filhos, na.rm=T) # varincia 100 * Filhos.dp/Filhos.me # coeficiente de variao

Professor: Roberto Campos Leoni

Filhos.qt <- quantile(Filhos, na.rm=T) Filhos.qt[4] - Filhos.qt[2] # amplitude interquartlica summary(Filhos) # vrias medidas

## 4. Quantitativa Contnua Salrio ## 4.1 Tabela range(Salrio) # mximo e mnimo nclass.Sturges(Salrio) # nmero de classes pelo critrio de Sturges args(cut) # ver os argumentos de uma funo args(cut.default) # ver os argumentos padro de uma funo table(cut(Salrio, seq(3.5,23.5,len=8))) ## 4.2 Grfico hist(Salrio) hist(Salrio, br=seq(3.5,23.5,len=8)) boxplot(Salrio) stem(Salrio) ## 4.3 Medidas ## De posio Salrio.md <- median(Salrio, na.rm=T) Salrio.md # mediana Salrio.me <- mean(Salrio, na.rm=T) Salrio.me # mdia ## Medida de disperso range(Salrio, na.rm=T) diff(range(Salrio, na.rm=T)) # amplitude Salrio.dp <- sd(Salrio, na.rm=T) # desvio padro Salrio.dp var(Salrio, na.rm=T) # varincia 100 * Salrio.dp/Salrio.me # coeficiente de variao Salrio.qt <- quantile(Salrio, na.rm=T) Salrio.qt[4] - Salrio.qt[2] # amplitude interquartlica summary(Salrio) # vrias medidas

## ## Anlise Bivariada ## ## 1. Qualitativa vs Qualitativa ## Ex. estado civil e grau de instruo ## 1.1 Tabela civ.gi.tb <- table(Est.civil, Instruo) # frequncias absolutas civ.gi.tb civ.gi.tb/as.vector(table(Est.civil)) # frequncias por linha ## 1.2 Grfico

Professor: Roberto Campos Leoni

plot(civ.gi.tb) barplot(civ.gi.tb) barplot(t(civ.gi.tb))

## 2. Qualitativa vs Quantitativa ## Ex. grau de instruo vs salrio ## 2.1 Tabela quantile(Salrio) ins.sal.tb <- table(Instruo, cut(Salrio, quantile(Salrio))) ins.sal.tb ## 2.2 Grfico plot(Instruo, Salrio) plot(Salrio, Instruo) ## 2.3 Medidas ## calculando as mdias para cada grau de instruo tapply(Salrio, Instruo, mean) ## e as varincias tapply(Salrio, Instruo, var) ## e ainda os mnimo, mximo e quartis tapply(Salrio, Instruo, quantile) ## 3. Quantitativa vs Quantitativa ## Ex. salrio e idade ## 3.1 Tabela table(cut(Idade, quantile(Idade)), cut(Salrio, quantile(Salrio))) table(cut(Idade, quantile(Idade, seq(0,1,len=4))), cut(Salrio, quantile(Salrio, seq(0,1,len=4)))) ## 3.2 Grfico plot(Idade, Salrio) ## 3.3 Medidas cor(Idade, Salrio) detach(milsa) # desanexando do caminha de procura

Professor: Roberto Campos Leoni

Aula 11 Projeto prtico


Em janeiro do corrente ano 90 pessoas foram submetidas a testes fsicos em um estabelecimento de ensino (ETF) e os resultados parciais encontram-se abaixo. Resultado, em m, da corrida de 12 minutos grupo 18 a 25 anos. 3004 3041 3085 3111 3166 3269 3005 3049 3091 3114 3178 3273 3009 3065 3102 3122 3242 3287 3013 3073 3106 3127 3258 3292 3030 3076 3107 3139 3265 3297 Resultado, em m, da corrida de 12 minutos - grupo 26 a 33 anos. 2808 2839 2889 2944 2979 3063 2816 2840 2902 2949 2992 3088 2832 2862 2908 2951 2999 3090 2835 2863 2918 2953 3008 3098 2837 2889 2920 2966 3062 3100 Resultado, em m, da corrida de 12 minutos - grupo 34 a 39 anos. 2032 2264 2371 2490 2563 2700 2093 2269 2383 2510 2587 2705 2183 2316 2444 2517 2632 2741 2206 2355 2456 2539 2650 2783 2240 2369 2476 2540 2685 2800 Os ndices estabelecidos pelo manual so. Faixa Etria / Meno E MB 18 a 25 >3299 3100 a 3299 26 a 33 >2999 2800 a 2999 34 a 39 >2799 2600 a 2799

B 2600 a 3099 2300 a 2799 2100 a 2599

R 2300 a 2599 2000 a 2299 1800 a 2099

I <2300 <2000 <1800

Escreva um relatrio contendo uma anlise descritiva dos dados. Modelo de Relatrio: Ttulo: ______________________________________________________________________________ Introduo: Deve dar ao leitor a informao necessria para entender de que assunto trata o seu trabalho, sem precisar recorrer a outras fontes. Para escrev-la, as seguintes perguntas devero ser respondidas: 1) De que assunto trata o seu trabalho? 2) Por que importante tratar esse assunto? 3) Como tratou o assunto? 4) Qual o seu objetivo? Desenvolvimento: 5) Populao, amostra, V.A., Tipo de V.A. Clculo de medidas Sumrio Estatstico Faixas Etrias Medidas 18 a 25 26 a 33 34 a 39 Mdia Varincia Desvio padro

Professor: Roberto Campos Leoni

Coef de assimetria Mediana Mnimo 1o. quartil 3o. quartil Mximo Coeficiente de variao Discusso: o captulo em que voc explica seus resultados. Voc dever abordar os seguintes tpicos: 6) Comparar as medidas de tendncia central e o desvio padro das trs amostras. 7) Analisar a assimetria considerando os resultados das medidas de tendncia central (mdia, mediana e moda) e o coeficiente de assimetria. 8) Justificar o uso do coeficiente de variao (CV) e comentar sobre os resultados obtidos. 9) Comparar as separatrizes entre as amostras considerando as seguintes metas: a) No mais do que 30% tenham ndice inferior a 2400 metros. b) Pelo menos 75% tenham ndice superior a 2900 metros 10) Comparar os trs histogramas, ou boxplots, indicando posio, variabilidade e forma. Concluso: As concluses decorrem da discusso, ou seja, at certo ponto, elas devem estar contidas no captulo de discusso. Ento, verifique se concluiu com base no que discutiu, havendo coerncia entre o objetivo proposto e a concluso alcanada. Fique atento para no se sentir possuidor da grande verdade, porque, afinal, voc tem apenas um fragmento de evidncia, uma vez que seu trabalho apenas descritivo e no inferencial. 11) Estabelea propostas com as concluses obtidas e atente para ser bastante claro ao estabelecer suas concluses.

obs: qualquer comando digitado aps o smbolo # no executado no R. obs: os arquivos utilizados no presente trabalho devem estar no "diretrio de trabalho" do R. Tal escolha pode ser feita alterando a opo File -> Change Dir... (barra de menu do R). Como proceder? 1) Copie os arquivos de dados para o "diretrio de trabalho" (crie o diretrio que deseja trabalhar no Windows). 2) Execute o programa R. 3) Selecione a opo File -> Change Dir... (barra de menu do R). 4) Clique no boto BROWSE e selecione a pasta que criou. obs: o R usa ponto no lugar de virgula ex: 32,8 -> 32.8 Ateno: Na construo de alguns grficos foram omitidos propositalmente seus elementos complementares (ttulo, fonte, etc).

#Vamos comear o trabalho... DICA: V copiando e colando as linhas de comando a seguir. # Entre com os valores do 1o Grupo. (logo aps o prompt >) g18a25 = c(3004, 3041, 3085, 3111, 3166, 3269, 3005, 3049, 3091, 3114, 3178, 3273, 3009, 3065, 3102, 3122, 3242, 3287, 3013, 3073, 3106, 3127, 3258, 3292, 3030, 3076, 3107, 3139, 3265, 3297) # vamos ver o contedo g18a25 g26a33=c(2808,2839,2889,2944,2979,3063,2816,2840,2902,2949,2992,3088,2832,2862,2908,2951,2999,30 90,2835,2863,2918,2953,3008,3098,2837,2889,2920,2966,3062,3100) g26a33

Professor: Roberto Campos Leoni

g34a39=c(2032,2264,2371,2490,2563,2700,2093,2269,2383,2510,2587,2705,2183,2316,2444,2517,2632,27 41,2206,2355,2456,2539,2650,2783, 2240,2369,2476,2540,2685,2800) g34a39 #criar um data.frame grupos=data.frame(g18a25 , g26a33 ,g34a39) # Clculo de medidas dos Grupos library(psych) #instale o pacote caso no tenha em sua mquina describe(grupos) # conhea este ndice de assimetria (conhecido por terceiro momento centrado na mdia) #vamos calcular fazendo calculus usando os vetores criados g18a25, g26a33, g34a39 sum((g18a25-mean(g18a25))^3)/(length(g18a25)*sd(g18a25)**3) sum((g26a33-mean(g26a33))^3)/(length(g26a33)*sd(g26a33)**3) sum((g34a39-mean(g34a39))^3)/(length(g34a39)*sd(g34a39)**3) #todas as separatrizes (percentis) quantile(grupos$g18a25,seq(0,1,0.01)) quantile(grupos$g26a33,seq(0,1,0.01)) quantile(grupos$g34a39,seq(0,1,0.01)) # sumrio (mnimo, Q1 ,mediana, Q3 ,mximo e mdia) summary(grupos) # construo de grficos boxplot(grupos) # grfico dos 5 pontos (mn, Q1 ,mediana, Q3 ,mx) boxplot(grupos,horizontal =T) hist(grupos$g18a25) # histograma com classes automticas hist(grupos$g26a33) hist(grupos$g34a39) #todos juntos na mesma tela par(mfrow=c(1,3)) # desenha at 3 grficos ao mesmo tempo na tela (1 linhas,3 colunas) hist(grupos$g18a25) # histograma com classes automticas hist(grupos$g26a33) hist(grupos$g34a39) par(mfrow=c(1,1)) #desfaz a tela para mltiplos grficos #se quiser escolher a quantidade de classes e amplitude, faa assim: hist(grupos$g18a25,breaks=c(3004,3053,3102,3151,3200,3249,3298),right=F) # histograma com classes especficas # vamos explorar mais um pouco os grficos! # vamos ver a capacidade de cor do R colors() # cores do R cores = colors() # guardado os nomes de cores em uma varivel pie(rep(1,30),c(cores[1:30]),col=c(cores[1:30]),radius=1) # algumas cores com seus nomes #usando a tabela de meno como referncia mencao18a25 = ifelse(g18a25 >= 3300, "E", ifelse(g18a25 >= 3100,"MB",ifelse(g18a25 >= 2600,"B",ifelse(g18a25 >= 2300,"R" ,"I")))) #classificar os dados como varivel qualitativa mencao18a25

Professor: Roberto Campos Leoni

tabmencao18a25=table(mencao18a25) # tabular os dados tabmencao18a25 # grfico atravs dos dados tabulados pie(tabmencao18a25,main="Meno dos corredores na corrida de 12 min \n Faixa etria 18 a 25 anos - Jan 2011", sub="Fonte: Escola de Treinamento Fsico" , col=c("red","blue")) mencao26a33 = ifelse(g26a33 >= 3000, "E", ifelse(g26a33 >= 2800,"MB",ifelse(g26a33 >= 2300,"B",ifelse(g26a33 >= 2000,"R" ,"I")))) mencao26a33 tabmencao26a33=table(mencao26a33) tabmencao26a33 tabmencao26a33/30 pie(tabmencao26a33,main="Meno dos corredores na corrida de 12 min \n Faixa etria 26 a 33 anos - Jan 2011", sub="Fonte: Escola de Treinamento Fsico") mencao34a39 = ifelse(g34a39 >= 2800, "E", ifelse(g34a39 >= 2600,"MB",ifelse(g34a39 >= 2100,"B",ifelse(g34a39 >= 1800,"R" ,"I")))) mencao34a39 tabmencao34a39=table(mencao34a39) tabmencao34a39 tabmencao34a39/30 pie(tabmencao34a39,main="Meno dos corredores na corrida de 12 min \n Faixa etria 34 a 39 anos - Jan 2011", sub="Fonte: Escola de Treinamento Fsico" col=c("orange","blue","red","green") )

Das könnte Ihnen auch gefallen