apostila de introdução ao software r leoni

39
Apostila de introdução ao Software R AEDB Prof: Roberto C. Leoni

Upload: marco-costa

Post on 08-Aug-2015

74 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Apostila de introdução ao Software R  LEONI

Apostila de

introdução

ao Software

R AEDB

Prof: Roberto C. Leoni

Page 2: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Statistical Data Analysis

Sumário 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 Variáveis 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 através do teclado ...................................................................................................................... 14 Criando Lista ............................................................................................................................................................... 14 Atividades Propostas ................................................................................................................................................... 15

Aula 6 – Packages (pacotes) e importação de dados ...................................................................................................... 16 Como instalar novos Packages? .................................................................................................................................. 16 Importação de dados ................................................................................................................................................... 16 Atividades Propostas ................................................................................................................................................... 17

Aula 7 – Tabelas de frequência (contagem).................................................................................................................... 18 Tabulação cruzada ...................................................................................................................................................... 18

Aula 8 – Gráficos ............................................................................................................................................................. 20 Setor (“pizza”) ............................................................................................................................................................ 20 Coluna (barras) ............................................................................................................................................................ 21 Gráfico de colunas (barras) para tabelas cruzadas (dupla entrada) ............................................................................. 22 Dot Plots...................................................................................................................................................................... 22 Gráfico de linha (temporal) ......................................................................................................................................... 23 Histograma .................................................................................................................................................................. 25 Gráfico de Ramos e Folhas ......................................................................................................................................... 25 Box-plot ...................................................................................................................................................................... 25 Gráfico de Pareto ........................................................................................................................................................ 26 Diagrama de causa e efeito ......................................................................................................................................... 27

Aula 9 – Medidas numéricas ........................................................................................................................................... 28 Medidas: média e mediana .......................................................................................................................................... 28 Medidas: sumário ....................................................................................................................................................... 28 Medidas: percentis ...................................................................................................................................................... 28 Medidas: assimetria, curtose ....................................................................................................................................... 28 Sumário por grupos ..................................................................................................................................................... 29

Aula 10 – Descrevendo um conjunto de dados .............................................................................................................. 30 Aula 11 – Projeto prático ................................................................................................................................................ 35

Page 3: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 1 – Instalando o Software R O R é uma linguagem e ambiente de computação estatística e construção de gráficos; é considerada

uma variante da linguagem S (laboratórios Bell, desenvolvida por John Chambers e seus colegas). Surge

pela criação da R Foundation for Statistical Computing, com o objetivo de criar uma ferramenta gratuita e

de utilização livre, para análise de dados e construção de gráficos.

O software estatístico R trouxe novas formas de explorar a Estatística proporcionando maior rapidez

na resolução de problemas. Este programa conquistou vários adeptos no meio acadêmico, empresarial e

administrativo que desta forma puderam passar a utilizar a Estatística como uma ferramenta eficaz na

resposta aos seus problemas.

O R é compatível com diversas plataformas: UNIX, Windows e MaCOS e permite a ligação 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 específicos de forma mais eficaz.

A interação com o utilizador é baseada numa janela de comandos e exige o recurso da programação,

embora existam packages gráficos que permitem a interação através de menus.

Por que usar o R?

1. O programa computacional R é gratuito e pode ser utilizado para análises estatísticas.

2. Roda em várias plataformas: Windows, Unix e MacOS.

3. Contém rotinas básicas e avançadas disponíveis em pacotes.

4. Possui grande capacidade gráfica.

Como obter o R?

A instalação do R é gratuita e pode ser feita diretamente a partir da página 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

funções).

No final da sessão o usuário pode salvar tudo o que fez e na próxima vez em que for usar o R basta

recarregar a área de trabalho já salva.

Os comandos são executados através do prompt da área de trabalho.

Figura 2: Workspace do R

Page 4: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Inicialmente vamos mostrar o R como calculadora. Por exemplo, tente fazer uma adição simples:

> 3 + 5 # digite 3 + 5 no prompt!

> # Obs: tudo o que aparece depois do símbolo # é reconhecido como texto e não é executado pelo R.

[1] 8 # olhe o resultado.

Vamos praticar com outros exemplos:

> 2 + 3*4 # prioridade da operação multiplicação

[1] 14

> 3/2+1 # prioridade da operação divisão

[1] 2.5

> 2 * 3 ^ 2 # potências são indicadas por ^ ou **

[1] 18

Principais funções 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 funções e operadores aritméticos:

Função Descrição Operadores Descrição

sqrt( ) raiz quadrada + adição

abs( ) valor absoluto - subtração

exp( ) exponencial de base “e” * multiplicação

log10( ) logaritmo na base 10 / divisão

log( ) logaritmo na base “e” ** ou ^ potência

sin()cos() tan() funções trigonométricas

asin( ) acos( ) atan( ) funções trigonométricas

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

Page 5: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Para pedir ajuda ao R, por exemplo, para a raiz quadrada, digite uma das opções:

> help(sqrt)

> ?sqrt

Atividades Propostas

1. Faça o download da versão mais recente do R para Windows (2.14.X);

2. Faça a instalação do programa em sua máquina;

3. Abra o programa clicando no ícone do R;

4. Reconheça 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!

Page 6: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 2 – Aprenda a administrar a sua área de trabalho Para manter diferentes projetos é preciso saber administrar área de trabalho.

ATENÇÃO: USUÁRIO DO WINDOWS.

O R interpreta "\" com espaço, logo não é possível usar a notação padrão para diretório, 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 diretório corrente. Tudo o que fizer será salvo aqui.

Ex:

> getwd()

[1] "c:/Users/Usuário/Documents" veja o resultado do comando!

Para mudar a área onde deseja salvar seus dados primeiro crie o diretório no Windows e depois mude

o local de trabalho. Veja como se faz:

> dir.create('c:/estatistica')

> setwd("c:/estatistica") # muda o diretório de trabalho para c:/estatistica.

> getwd() # veja o novo diretório de trabalho.

[1] "c:/estatistica"

IMPORTANTE: caso o diretório não seja criado com o comando dir.create(), primeiro crie o

diretório no Windows (faça isso fora do R).

Para ilustrar como podemos salvar o que fazemos no R, vamos usar a forma mais simples para

armazenar informação 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

diretório de trabalho do R. Veja:

> save.image() # salva o workspace em arquivo do tipo .RData no diretório de trabalho corrente.

> dir() # veja os arquivos que existem no diretório

E para carregar o que foi salvo em outro momento, faça:

Obs: Supomos aqui que você saiu do R e voltou em outro momento. Lembre-se que o arquivo foi salvo no

diretório "c:\\estatistica\\.RData" .

> load("c:\\estatistica\\.RData")

Podemos ainda salvar somente o histórico dos comandos utilizados.

> savehistory(file="meuscomandos") # salvar os comandos utilizados - default é ".Rhistory"

> loadhistory(file=" meuscomandos ") # carregar na área de trabalho comandos salvos - default é

".Rhistory"

Page 7: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Atividades Propostas

1. Crie o seu diretório.

2. Mude a área de trabalho do R para o diretório 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!

Page 8: Apostila de introdução ao Software R  LEONI

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, variáveis, vetores, matrizes, funções, etc., armazenados na memória ativa do computador.

Para criar um objeto qualquer no R, você deverá sempre usar o operador de atribuição ‘“<-“ , gerado

pela digitação do sinal de menor e menos. É possível usar também o sinal de igualdade, ou seja, =.

DICAS:

Uma das regras importantes do R é o fato de ser case sensitive. Por esta razão as letras ‘a’ e ‘A’

podem corresponder a diferentes variáveis.

O R ignora espaços, ou seja, os resultados ‘8+3’ e ‘8+ 3’ dão origem exatamente ao mesmo

resultado.

Podemos agrupar comandos, para serem executados em simultâneo, se estiverem entre chaves ‘{ }’

e separados por ‘;’

O ‘#’ é utilizado para comentários;

Quando um comando não está completo, o R coloca o sinal de ‘+’ na linha seguinte, permitindo que

este seja terminado.

Saber as diferenças 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 ‘espaço/posição’ em que um dado será armazenado.

Figura 3: Objetos do R

Criando vetores

Vetores são 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", "três")

> b

[1] "um" "dois" "três"

> 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 estão na posição 1, 3 e 5

[1] 1 5 6

> a[2:6] # valores de 2 a 6

[1] 2 5 3 6 -2

Usando a função scan() para criar um vetor

Page 9: Apostila de introdução ao Software R  LEONI

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 vírgula. 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 opções. 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 operações aritméticas com vetores, elemento a elemento, caso estes tenham a

mesma dimensão. 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?

2altura

pesoi.m.c .

Page 10: Apostila de introdução ao Software R  LEONI

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’ são diferentes:

> data.class(a)

[1] "numeric"

> data.class(b)

[1] "character"

> data.class(c)

[1] "logical"

Variáveis nominais e ordinais

No R uma variável é reconhecida como nominal usando-se o a função factor(). Para variáveis

ordinais, usa-se o comando ordered( ). Vejam os exemplos:

# uso do comando fator()

# variável 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", "médio", "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 variável que contenha 100 dados qualitativos.

7. Use o comando factor() para transformá-lo em qualitativo.

8. Crie um exemplo usando o comando ordered()

Page 11: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 4 – Criando objetos no R: matriz e array Criando Matrizes

Em uma matriz os elementos são organizados em duas dimensões (linhas e colunas). Todas as

colunas possuem o mesmo de dados (numérico, caracter, etc.) e o mesmo tamanho. Usaremos o comando

matrix

> y<-matrix(1:20, nrow=5,ncol=4) #nrow = número de linhas e ncol=número 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 três 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 função 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 função “rbind” e “cbind”

Page 12: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Uma matriz também pode ser construída pela combinação de dois ou mais vetores de mesmo

comprimento (length). Do exemplo anterior, usando a função 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 função 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, faça:

> # 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")

Page 13: Apostila de introdução ao Software R  LEONI

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 é possível visualizar um elemento (ou um grupo de

elementos) contido numa matriz. A lógica é 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 são

organizados em duas dimensões (linhas e colunas), em um array os elementos podem ser organizados em

um número arbitrário de dimensões. Para maiores detalhes consulte help(array).

Atividades Propostas

1. Crie a matriz e execute os comandos a seguir: x <- matrix(1:10, nrow = 2)

x

x[2, ]

x[, 2]

x[1, 4]

x[1, c(4, 5)]

O que significa cada resultado?

2. Execute o comando

notas <- round(rnorm (20,6,1), 2) # este comando simula 20 valores. Não 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).

Page 14: Apostila de introdução ao Software R  LEONI

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 variáveis (como idade, sexo, nome, etc.) e as linhas representam as observações.

Vetores, matrizes e arrays forçam todos os elementos a serem do mesmo tipo, i.e., numérico ou

caracter. O data-frame é uma estrutura semelhante à uma matriz porém com cada coluna sendo tratada

separadamente. Desta forma podemos ter colunas de valores numéricos e colunas de caracteres no mesmo

objeto. Note, entretanto, que dentro de uma mesma coluna todos os elementos ainda serão forçados 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é","João"), 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 sexo idade altura

1 Adriano m 17 1.65

2 Pedro m 18 1.70

3 Joana f 19 1.68

4 Mario m 20 1.69

5 Cintia f 21 1.71

6 Maria f 22 1.67

7 Antonio m 23 1.67

8 Marta f 24 1.66

9 José m 25 1.72

10 João m 26 1.73

# Lista o número de variáveis (colunas)

length(pessoas)

# Mostra o nome das colunas

names(pessoas)

# Mostra a classe do objeto

class(pessoas)

# Mostra que a variável sexo é um fator

class(pessoas$sexo)

# Mostra a numeração das linhas

row.names(pessoas)

Outro exemplo:

O R vem com vários 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 são as variáveis?

Page 15: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"

Dica:

A descrição dessas variáveis são:

• Sepal.Length – Tamanho da sépala

• Sepal.Width – Largura da sépala

• Petal.Length – Tamanho da pétala

• Petal.Width – Largura da pétala

• Species – Espécie observada

Entrando com dados através do teclado

Uma opção 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 variável ou algum valor digitado errado?

pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario",

"Cintia","Maria","Antonio","Marta","José","João"), 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 flexível 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 numérico com

10 valores e uma matriz de ordem 4 x 4.

Exemplo

Vamos construir e explorar uma lista com os dados de uma família: nome do pai, da mãe, número 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

Page 16: Apostila de introdução ao Software R  LEONI

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,]

Page 17: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 6 – Packages (pacotes) e importação de dados Pacotes são coleções de funções, dados e códigos compilados que ficam armazenados em um lugar

chamado library. Alguns pacotes básicos já são automaticamente instalados com o R, porém outros precisam

ser instalados caso tenha necessidade. Depois da instalação, para usá-los, é necessário carregar tais pacotes

na área de trabalho.

> .libPaths() # local do library em sua máquina.

> library() # veja os pacotes instalados em sua máquina.

> search() # veja os pacotes que estão 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 botão 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 gráfica para usar o R, ou seja, ele disponibiliza

botões (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

Importação 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 é através da área de transferência (clipboard ou o famoso ctrl + c)

através da seguinte função: read.delim("clipboard",dec=",",header=T). “clipboard” indica que os dados

estão na área de transferência, dec=“,” que é utilizada a vírgula como separador decimal e header=T que a

primeira linha contém títulos das colunas.

Considere que em uma planilha você tem os dados

A B Sexo

186 81,0 M

192 88,7 F

195 78,4 M

197 101,2 F

199 77,6 M

199 92,3 M

200 90,3 M

200 91,3 M

202 87,6 M

Selecione a área da planilha com os dados e copie (Ctrl C). No prompt do R escreva (não copie o

comando a seguir porque assim os dados sairão da memória):

> dados <- read.delim("clipboard", dec="," ,header=TRUE) # Os dados serão armazenados em dados.

> dados

Page 18: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

É muito comum encontrar arquivos com dados no formato Excel ou Calc. Nesse caso, se salvarmos o

arquivo com a extensão *.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 diretório 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

Page 19: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 7 – Tabelas de frequência (contagem) Pode-se gerar tabelas usando a função table( ), tabelas com proporções usando prop.table( ) e

frequências marginais usando margin.table( ).

Variável aleatória (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)

Variável aleatória (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", "médio", "grande"))

summary(tamanho.ord)

# ou

table(tamanho.ord)

VA quantitativa discreta ou VA quantitativa contínua

#VA Distância 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 Etária / Menção 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 fácil de criar distribuições de frequências 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))

Tabulação cruzada

Quando há o interesse em obter informações cruzadas, típicas para tabelas com dupla entrada,

façamos assim:

sexo = c(rep("masculino ",25), rep("feminino ", 27))

sexo

evasao = c(rep("saúde ",4), rep("interesse próprio", 15), rep("reprovação", 33) )

Page 20: Apostila de introdução ao Software R  LEONI

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 evasão

prop.table(tabela)

prop.table(tabela, 1) # por linha

prop.table(tabela, 2) # por coluna

# com três variáveis cruzadas

idade = c(rep("jovem",19), rep("idoso", 33) )

tabela<- table(sexo,evasao, idade)

ftable(tabela) #ftable apresenta uma saída 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é","João"), 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 símbolo $ acessa os dados de uma coluna específica

# por exemplo, pessoas$sexo indica que queremos a variável 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("saúde ",4), rep("interesse próprio", 15), rep("reprovação", 23) )

evasao

CrossTable(sexo,evasao)

Page 21: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 8 – Gráficos

Algumas configurações para construir gráficos são controladas pela função par(). Veja o quadro com

algumas funções disponíveis.

mfrow divide a janela onde os gráficos serão construídos, cujo valor é do tipo c(nl, nc), em

que nl é o número de linhas e nc o número de colunas em que a janela será dividida

ps controla o tamanho de todos os textos nos gráficos, cujo valor deve ser um

número inteiro

bg controla a cor de fundo da janela dos gráficos. Vejas as cores com o comando

colors()

fg controla a cor dos eixos e das bordas dos símbolos dos gráficos

col.main,

col.lab,

col.sub,

col.axis

controla as cores do título, dos nomes dos eixo, do rodapé e dos valores dos eixos,

respectivamente

cex.main,

cex.lab,

cex.sub,

cex.axis

controla o tamanho da fonte, do título, dos nomes dos 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

font.main,

font.lab,

font.sub,

font.axis

controla a fonte a ser usada, com base em números inteiros de 1 a 20, sendo que o

número 1 indica texto normal, o 2 negrito, o 3 itálico e o 4 negrito + itálico

Exemplos:

par(mfrow=c(1,2)) # Dividir a janela dos gráficos 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é","João") , 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")

Page 22: Apostila de introdução ao Software R  LEONI

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="Frequência")

# velocidade de veículos 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 variável qualitativa

vel2=ifelse(vel<=36,"veloc baixa",ifelse(vel<=44,"veloc normal","veloc alta"))

vel2

vel.tab=table(vel2) #tabulando os dados

vel.tab

# gráfico de coluna

barplot(vel.tab,col=c(4,2,5),legend.text=T,main="Velocidade de 100 veículos \n Av Duque de Caxias - 15-

03-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 produção 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

produção = dados$produção

nomes = dados$cat

names(produção) <- nomes

barplot(produção, main="Título…….", col.main=c("red"))

Outros exemplos:

counts <- table(mtcars$gear)

barplot(counts, main="Car Distribution", xlab="Number of Gears")

Page 23: Apostila de introdução ao Software R  LEONI

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)

Gráfico de colunas (barras) para tabelas cruzadas (dupla entrada)

Copie o quadro (ctrl + c) a seguir e digite:

va <- read.delim("clipboard",row.names=1)

G1 G2 G3

Local C 3 30 70

Local B 10 80 30

Local A 50 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 frequência relativa: prop.table(as.matrix(va),2)

para barras justapostas: beside=T

para barras horizontais: horiz=T

adiciona uma linha abaixo das barras (Opção 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.

Page 24: Apostila de introdução ao Software R  LEONI

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 variável mpg, agrupar e colorir pela variável 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)

Gráfico de linha (temporal)

O comando plot(x, y) produz o gráfico. Função lines( ) adiciona linha ao gráfico.

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 elétrica no 1o. sem de 2003 e 2004 no período fora da ponta (horário 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 gráficos de linha ou tendência

plot(sem1.2003,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2003

",xlab="meses",ylab="consumo")

plot(sem1.2004,type="b",main="Consumo de energia elétrica (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 elétrica (fora da ponta)\n 1º Sem 2003

",xlab="meses",ylab="consumo")

plot(sem1.2004,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2004

",xlab="meses",ylab="consumo")

par(mfrow=c(1,1))

# vamos colocá-los na mesma escala para comparações

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 elétrica (fora da ponta)\n 1º Sem 2003

",xlab="meses",ylab="consumo", ylim=c(menor,maior))

plot(sem1.2004,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2004

",xlab="meses",ylab="consumo", ylim=c(menor,maior))

par(mfrow=c(1,1))

Page 25: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

# vamos manipular os gráficos!

par(mfrow=c(1,2))

plot(sem1.2003,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2003

",xlab="meses",ylab="consumo", ylim=c(0,2000))

plot(sem1.2004,type="b",main="Consumo de energia elétrica (fora da ponta)\n 1º Sem 2004

",xlab="meses",ylab="consumo", ylim=c(0,2000))

par(mfrow=c(1,1))

# tudo em apenas um gráfico

plot(sem1.2003,col="red",type="l",main="Consumo de energia elétrica \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 parâmetro type

type Descrição

p Pontos

l Linhas

o Pontos e linhas

s, S escada

h 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 numérico

Orange$Tree <- as.numeric(Orange$Tree)

arvores <- max(Orange$Tree)

# amplitude de x e y

xrange <- range(Orange$age)

yrange <- range(Orange$circumference)

# alguns parâmetros do gráfico

plot(xrange, yrange, type="n", xlab="Idade (dias)", ylab="Circunferência (mm)" )

colors <- rainbow(arvores)

linetype <- c(1: arvores)

Page 26: Apostila de introdução ao Software R  LEONI

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 título e subtítulo

title("crescimento da árvore", "exemplo gráfico 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 simulação

y2<-rnorm(50,100,20) # Segunda simulação

hist(y1, main="Histograma de y1", ylab="Frequência", xlab="Variável y1")

#vamos comparar os dois gráficos na mesma janela

par(mfrow=c(1,2)) # Dividir a janela dos gráficos em uma linha e duas colunas

hist(y1, xlim=c(50,200), ylab="Frequência")

hist(y2, xlim=c(50,200), ylab="Frequência")

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="frequência",col.main=color)

color=c("blue")

hist(notas4$GrupoB,main="GrupoB",xlab="notas",ylab="frequência",col.main=color)

par(mfrow=c(1,1))

# velocidade de veículos 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 veículos \n Av Duque de Caxias - 15-03-

04",xlab="Classes",ylab="Frequências",labels=T,col="4",sub="Fonte:PRF")

Gráfico de Ramos e Folhas

stem(y1)

stem(y2)

Box-plot

Page 27: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

set.seed(12345) #gera sempre o mesmo conjunto de dados (semente)

y1<-rnorm(50,150,20) # Primeira simulação

y2<-rnorm(50,100,20) # Segunda simulação

boxplot(y1,main="Título", xlab="Variável y1")

par(mfrow=c(1,2))

boxplot(y1,y2 )

#ou

boxplot(y1,y2 ,notch=TRUE) # veja como muda o gráfico

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 )

Gráfico de Pareto

O gráfico de Pareto pode ser construído tanto para efeitos como para causas, cujo objetivo é

destacar os níveis prioritários da variável estudada. As variáveis são, normalmente, expressas em número

de ocorrências ou em unidades monetárias. Como exemplo, considere que uma indústria girou o ciclo

PDCA com o objetivo de diminuir o número de televisores defeituosos. A amostragem foi feita sobre a

produção de um mês de acordo os tipos de defeitos e estratificada em função dos locais 1 e 2 de

produção. No estudo, foram analisadas duas variáveis: número de ocorrência 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 não tenha em sua máquina.

names(dados$ocorrencias)<- dados$defeito # Atribuir os nomes dos t ratamentos aos valores de Y

par(mfrow=c(1,2)) # Ver os dois gráficos na mesma janela

pareto.chart(dados$ocorrencias [dados$local==1], las=1)

Page 28: Apostila de introdução ao Software R  LEONI

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(Método.de.foto.cópia = c("Colocação do Original", "Tempo de

secagem"), Liquido = c("Qualidade", "Qualidade quando novo", "Sujeira"), Papel.de.cópia =

c("Qualidade do papel", "Foto sensibilidade"), Condições.ambientais = c("Mesa suja", "Mãos

sujas"), Papel.original = c("Dobras", "Nitidez", "Transparência"), Copiadora = c(" Velocidade",

"Condições do enrolamento", "Potência da lâmpada")) , effect = " Cópia de má qualidade", cex =

c(1.2, 1.0, 1.5))

#maximize a janela do gráfico para ver melhor

Page 29: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 9 – Medidas numéricas Alguns comandos básicos:

table( ) Cruzamento de variáveis

mean( ) Média aritmética

median( ) Mediana

sum( ) Soma

summary( ) Sumarização de dados

var( ) Variância

sd( ) Desvio padrão

quantile( ) Quartis com descrição

IQR( ) Amplitude inter-quartil

cor( ) Coeficiente de correlação

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á incluído no R, o conjunto

mtcars que descreve características de diferentes modelos de automóvel.

Primeiro vamos carregar e inspecionar os dados.

#mtcars é um data.frame!

data(mtcars)

mtcars # mostra todo o conjunto de dados

dim(mtcars) # mostra a dimensão dos dados

mtcars[1:5,] # mostra as 5 primeiras linhas

names(mtcars) # mostra os nomes das variáveis

help(mtcars) # mostra documentação do conjunto de dados

Medidas: média 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: sumário

summary(mtcars) # mínimo, quartil 1, 2 e 3, média e máximo

summary(mtcars$mpg) #só da variável 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 várias medidas descritivas usando o pacote psych.

#skew significa assimetria

Page 30: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

library(psych) #instale o pacote caso não tenha em sua máquina

describe(mtcars$mpg)

Sumário por grupos

library(psych)

describe.by(mtcars$mpg, mtcars$cyl)

pessoas<-data.frame(nomes=c("Adriano","Pedro","Joana","Mario",

"Cintia","Maria","Antonio","Marta","José","João") , 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.padrão = sd(x)) } )

# produces mpg.m wt.m mpg.s wt.s for each combination of the levels of cyl and vs

Page 31: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 10 – Descrevendo um conjunto de dados O livro Estatística Básica de W. Bussab e P. Morettin traz no primeiro capítulo um conjunto de

dados hipotético de atributos de 36 funcionários da companhia ``Milsa''.

Funcionário Est.civil Instrução Filhos Salário Ano Mês Região

1 solteiro 1o Grau 0 4.00 26 3 interior

2 casado 1o Grau 1 4.56 32 10 capital

3 casado 1o Grau 2 5.25 36 5 capital

4 solteiro 2o Grau 0 5.73 20 10 outro

5 solteiro 1o Grau 0 6.26 40 7 outro

6 casado 1o Grau 0 6.66 28 0 interior

7 solteiro 1o Grau 0 6.86 41 0 interior

8 solteiro 1o Grau 0 7.39 43 4 capital

9 casado 2o Grau 1 7.59 34 10 capital

10 solteiro 2o Grau 0 7.44 23 6 outro

11 casado 2o Grau 2 8.12 33 6 interior

12 solteiro 1o Grau 0 8.46 27 11 capital

13 solteiro 2o Grau 0 8.74 37 5 outro

14 casado 1o Grau 3 8.95 44 2 outro

15 casado 2o Grau 0 9.13 30 5 interior

16 solteiro 2o Grau 0 9.35 38 8 outro

17 casado 2o Grau 1 9.77 31 7 capital

18 casado 1o Grau 2 9.80 39 7 outro

19 solteiro Superior 0 10.53 25 8 interior

20 solteiro 2o Grau 0 10.76 37 4 interior

21 casado 2o Grau 1 11.06 30 9 outro

22 solteiro 2o Grau 0 11.59 34 2 capital

23 solteiro 1o Grau 0 12.00 41 0 outro

24 casado Superior 0 12.79 26 1 outro

25 casado 2o Grau 2 13.23 32 5 interior

26 casado 2o Grau 2 13.60 35 0 outro

27 solteiro 1o Grau 0 13.85 46 7 outro

28 casado 2o Grau 0 14.69 29 8 interior

29 casado 2o Grau 5 14.71 40 6 interior

30 casado 2o Grau 2 15.99 35 10 capital

31 solteiro Superior 0 16.22 31 5 outro

32 casado 2o Grau 1 16.61 36 4 interior

33 casado Superior 3 17.26 43 7 capital

34 solteiro Superior 0 18.75 33 7 capital

35 casado 2o Grau 2 19.40 48 11 capital

36 casado Superior 3 23.30 42 2 interior

Page 32: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

milsa <- read.delim("clipboard", dec="." ,header=TRUE)

A planilha ainda não está pronta. Precisamos informar para o programa que as variáveis: civil,

instrução e região, NÃO são numéricas e sim categóricas.

milsa$Est.civil <- factor(milsa$Est.civil)

milsa$Região <- factor(milsa$Região)

milsa$Instrução <- ordered(milsa$Instrução, levels = c("1o Grau", "2o Grau", "Superior"))

milsa

Agora que os dados estão prontos podemos começar a análise descritiva. Inspecionem os comandos a

seguir.

Além disto, precisamos definir uma variável única idade a partir das variáveis Ano e Mês que foram

digitadas. Para gerar a variável idade (em anos) fazemos:

milsa$Idade <- milsa$Ano + milsa$Mês/12

milsa$Idade

milsa

is.data.frame(milsa) # conferindo se é um data-frame

names(milsa) # vendo o nome das variáveis

dim(milsa) # vendo as dimensões 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 são apresentadas algumas possibilidades de uso da Estatística Descritiva

#Variáveis:

Funcionário Est.civil Instrução Filhos Salário Ano Mês Região

## Análise Univariada

##

## 1. Variável 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 então

prop.table(Est.civil.tb)

## 1.2 Gráfico

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

Page 33: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

## 2 Qualitativa Ordinal

Instrução

is.factor(Instrução)

## 2.1 Tabela:

Instrução.tb <- table(Instrução)

Instrução.tb

prop.table(Instrução.tb)

## 2.2 Gráfico:

barplot(Instrução.tb)

## 2.3 Medidas

Instrução.mo <- names(Instrução.tb)[Instrução.tb == max(Instrução.tb)]

Instrução.mo

median(as.numeric(Instrução)) # só calcula mediana de variáveis numéricas

levels(milsa$Instrução)[median(as.numeric(milsa$Instrução))]

## 3 Quantitativa discreta

Filhos

## 3.1 Tabela:

Filhos.tb <- table(Filhos)

Filhos.tb

Filhos.tb/sum(Filhos.tb) # frequências relativas

## 3.2 Gráfico:

plot(Filhos.tb) # gráfico das frequências absolutas

Filhos.fac <- cumsum(Filhos.tb)

Filhos.fac # frequências acumuladas

plot(Filhos.fac, type="s") # gráfico das frequências acumuladas

## 3.3 Medidas

## De posição

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 # média

## Medida de dispersão

range(Filhos, na.rm=T)

diff(range(Filhos, na.rm=T)) # amplitude

Filhos.dp <- sd(Filhos, na.rm=T) # desvio padrão

Filhos.dp

var(Filhos, na.rm=T) # variância

100 * Filhos.dp/Filhos.me # coeficiente de variação

Page 34: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Filhos.qt <- quantile(Filhos, na.rm=T)

Filhos.qt[4] - Filhos.qt[2] # amplitude interquartílica

summary(Filhos) # várias medidas

## 4. Quantitativa Contínua

Salário

## 4.1 Tabela

range(Salário) # máximo e mínimo

nclass.Sturges(Salário) # número de classes pelo critério de Sturges

args(cut) # ver os argumentos de uma função

args(cut.default) # ver os argumentos padrão de uma função

table(cut(Salário, seq(3.5,23.5,len=8)))

## 4.2 Gráfico

hist(Salário)

hist(Salário, br=seq(3.5,23.5,len=8))

boxplot(Salário)

stem(Salário)

## 4.3 Medidas

## De posição

Salário.md <- median(Salário, na.rm=T)

Salário.md # mediana

Salário.me <- mean(Salário, na.rm=T)

Salário.me # média

## Medida de dispersão

range(Salário, na.rm=T)

diff(range(Salário, na.rm=T)) # amplitude

Salário.dp <- sd(Salário, na.rm=T) # desvio padrão

Salário.dp

var(Salário, na.rm=T) # variância

100 * Salário.dp/Salário.me # coeficiente de variação

Salário.qt <- quantile(Salário, na.rm=T)

Salário.qt[4] - Salário.qt[2] # amplitude interquartílica

summary(Salário) # várias medidas

##

## Análise Bivariada

##

## 1. Qualitativa vs Qualitativa

## Ex. estado civil e grau de instrução

## 1.1 Tabela

civ.gi.tb <- table(Est.civil, Instrução) # frequências absolutas

civ.gi.tb

civ.gi.tb/as.vector(table(Est.civil)) # frequências por linha

## 1.2 Gráfico

Page 35: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

plot(civ.gi.tb)

barplot(civ.gi.tb)

barplot(t(civ.gi.tb))

## 2. Qualitativa vs Quantitativa

## Ex. grau de instrução vs salário

## 2.1 Tabela

quantile(Salário)

ins.sal.tb <- table(Instrução, cut(Salário, quantile(Salário)))

ins.sal.tb

## 2.2 Gráfico

plot(Instrução, Salário)

plot(Salário, Instrução)

## 2.3 Medidas

## calculando as médias para cada grau de instrução

tapply(Salário, Instrução, mean)

## e as variâncias

tapply(Salário, Instrução, var)

## e ainda os mínimo, máximo e quartis

tapply(Salário, Instrução, quantile)

## 3. Quantitativa vs Quantitativa

## Ex. salário e idade

## 3.1 Tabela

table(cut(Idade, quantile(Idade)), cut(Salário, quantile(Salário)))

table(cut(Idade, quantile(Idade, seq(0,1,len=4))), cut(Salário, quantile(Salário, seq(0,1,len=4))))

## 3.2 Gráfico

plot(Idade, Salário)

## 3.3 Medidas

cor(Idade, Salário)

detach(milsa) # desanexando do caminha de procura

Page 36: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Aula 11 – Projeto prático

Em janeiro do corrente ano 90 pessoas foram submetidas a testes físicos 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 são.

Faixa Etária / Menção E MB B R I

18 a 25 >3299 3100 a 3299 2600 a 3099 2300 a 2599 <2300

26 a 33 >2999 2800 a 2999 2300 a 2799 2000 a 2299 <2000

34 a 39 >2799 2600 a 2799 2100 a 2599 1800 a 2099 <1800

Escreva um relatório contendo uma análise descritiva dos dados.

Modelo de Relatório:

Título: ______________________________________________________________________________

Introdução:

Deve dar ao leitor a informação necessária para entender de que assunto trata o seu trabalho, sem precisar

recorrer a outras fontes. Para escrevê-la, as seguintes perguntas deverão 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) População, amostra, V.A., Tipo de V.A.

Cálculo de medidas

Sumário Estatístico

Medidas Faixas Etárias

18 a 25 26 a 33 34 a 39

Média

Variância

Desvio padrão

Page 37: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

Coef de assimetria

Mediana

Mínimo

1o. quartil

3o. quartil

Máximo

Coeficiente de

variação

Discussão:

É o capítulo em que você explica seus resultados. Você deverá abordar os seguintes tópicos:

6) Comparar as medidas de tendência central e o desvio padrão das três amostras.

7) Analisar a assimetria considerando os resultados das medidas de tendência central (média, mediana e

moda) e o coeficiente de assimetria.

8) Justificar o uso do coeficiente de variação (CV) e comentar sobre os resultados obtidos.

9) Comparar as separatrizes entre as amostras considerando as seguintes metas:

a) Não mais do que 30% tenham índice inferior a 2400 metros.

b) Pelo menos 75% tenham índice superior a 2900 metros

10) Comparar os três histogramas, ou boxplots, indicando posição, variabilidade e forma.

Conclusão:

As conclusões decorrem da discussão, ou seja, até certo ponto, elas devem estar contidas no capítulo de

discussão. Então, verifique se concluiu com base no que discutiu, havendo coerência entre o objetivo

proposto e a conclusão alcançada. Fique atento para não se sentir possuidor “da grande verdade”, porque,

afinal, você tem apenas um fragmento de evidência, uma vez que seu trabalho é apenas descritivo e não

inferencial.

11) Estabeleça propostas com as conclusões obtidas e atente para ser bastante claro ao estabelecer suas

conclusões.

obs: qualquer comando digitado após o símbolo # não é executado no R.

obs: os arquivos utilizados no presente trabalho devem estar no "diretório de trabalho" do R. Tal escolha

pode ser feita alterando a opção File -> Change Dir... (barra de menu do R). Como proceder?

1) Copie os arquivos de dados para o "diretório de trabalho" (crie o diretório que deseja trabalhar no

Windows).

2) Execute o programa R.

3) Selecione a opção File -> Change Dir... (barra de menu do R).

4) Clique no botão BROWSE e selecione a pasta que criou.

obs: o R usa ponto no lugar de virgula ex: 32,8 -> 32.8

Atenção: Na construção de alguns gráficos foram omitidos propositalmente seus elementos

complementares (título, fonte, etc).

#Vamos começar o trabalho... DICA: Vá copiando e colando as linhas de comando a seguir.

# Entre com os valores do 1o Grupo. (logo após 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 conteúdo 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

Page 38: Apostila de introdução ao Software R  LEONI

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)

# Cálculo de medidas dos Grupos

library(psych) #instale o pacote caso não tenha em sua máquina

describe(grupos)

# conheça este índice de assimetria (conhecido por terceiro momento centrado na média)

#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))

# sumário (mínimo, Q1 ,mediana, Q3 ,máximo e média)

summary(grupos)

# construção de gráficos

boxplot(grupos) # gráfico dos 5 pontos (mín, Q1 ,mediana, Q3 ,máx)

boxplot(grupos,horizontal =T)

hist(grupos$g18a25) # histograma com classes automáticas

hist(grupos$g26a33)

hist(grupos$g34a39)

#todos juntos na mesma tela

par(mfrow=c(1,3)) # desenha até 3 gráficos ao mesmo tempo na tela (1 linhas,3 colunas)

hist(grupos$g18a25) # histograma com classes automáticas

hist(grupos$g26a33)

hist(grupos$g34a39)

par(mfrow=c(1,1)) #desfaz a tela para múltiplos gráficos

#se quiser escolher a quantidade de classes e amplitude, faça assim:

hist(grupos$g18a25,breaks=c(3004,3053,3102,3151,3200,3249,3298),right=F) # histograma com classes

específicas

# vamos explorar mais um pouco os gráficos!

# vamos ver a capacidade de cor do R

colors() # cores do R

cores = colors() # guardado os nomes de cores em uma variável

pie(rep(1,30),c(cores[1:30]),col=c(cores[1:30]),radius=1) # algumas cores com seus nomes

#usando a tabela de menção como referência

mencao18a25 = ifelse(g18a25 >= 3300, "E", ifelse(g18a25 >= 3100,"MB",ifelse(g18a25 >=

2600,"B",ifelse(g18a25 >= 2300,"R" ,"I")))) #classificar os dados como variável qualitativa

mencao18a25

Page 39: Apostila de introdução ao Software R  LEONI

Professor: Roberto Campos Leoni

tabmencao18a25=table(mencao18a25) # tabular os dados

tabmencao18a25

# gráfico através dos dados tabulados

pie(tabmencao18a25,main="Menção dos corredores na corrida de 12 min \n Faixa etária 18 a 25 anos - Jan

2011", sub="Fonte: Escola de Treinamento Físico" , 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="Menção dos corredores na corrida de 12 min \n Faixa etária 26 a 33 anos - Jan

2011", sub="Fonte: Escola de Treinamento Físico")

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="Menção dos corredores na corrida de 12 min \n Faixa etária 34 a 39 anos - Jan

2011", sub="Fonte: Escola de Treinamento Físico" col=c("orange","blue","red","green") )