Você está na página 1de 22

Anlise de Dados

LINGUAGEM R
ESTATSTICA DESCRITIVA INFERNCIA ESTATSTICA
Intervalos

de confiana Testes de hipteses Anlise de varincia Regresso


APRENDIZAGEM AUTOMTICA
Processo Previso Anlise

de aprendizagem

de aglomerados (Clustering) Regras de associao


Joo Mendes Moreira Linguagem R FEUP

Linguagem R:
Uma linguagem para anlise de dados
2

HTTP://WWW.R-PROJECT.ORG/

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
3

ndice
Conceitos bsicos O R como mquina de calcular Objectos Importao/exportao de dados Outras funes de uso comum Ajuda Bibliografia aconselhada
Variveis Vetores Matrizes Arrays Listas Dataframes Funes adicionais sobre objectos

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
4

Conceitos bsicos
R um software gratuito para estatstica computacional, anlise de dados e muito mais Instalao: http://cran.es.r-project.org/ , escolher o sistema operativo (Windows, MacOS X ou Linux) e optar pela verso binria de base mais recente. Utilizar as opes de instalao que aparecem por defeito. Esta opo garante a instalao dos principais pacotes da linguagem R. Ao todo, existem mais de 1000 pacotes! Algumas funes que vamos utilizar requerem a instalao de pacotes adicionais (a ver mais tarde )
Joo Mendes Moreira Linguagem R

O ambiente de trabalho

FEUP

Linguagem R
5

O R como mquina de calcular


A vermelho: as instrues A azul: os resultados #: o texto a seguir ao smbolo # so comentrios, s servem para documentar o cdigo

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
6

Objetos
Variveis Vetores
Sequncias Fatores

Matrizes Arrays Listas Dataframes Funes adicionais sobre objetos


Joo Mendes Moreira Linguagem R FEUP

Linguagem R
7

Objetos: variveis
possvel guardar valores ou resultados de operaes em objectos que se chamam variveis. Experimente as seguintes instrues: x<-2 # Para atribuir um valor a uma varivel utiliza-se a instruo <- x # Cuidado: x e X so objetos diferentes. A linguagem R sensvel s # maisculas/minsculas. x+x x<-x+x x texto<-'ol' # Uma varivel pode guardar valores no numricos.

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
8

Objetos: vetores
Os vetores so conjuntos ordenados de valores: peso <- c(60, 72, 57, 90, 95, 72) altura <- c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91) imc <- peso/altura^2 # altura^2 = altura*altura names(imc) <- c('Ana','Rui','Isabel','Paulo','Eva','Diogo') imc length(imc) # tamanho do vector typeof(peso)# tipo de dados: logical", "integer, "double", "character", "NULL", peso <- as.integer(peso)
Sequncias so vectores de inteiros no negativos: x <- 0:10 x seq(0,10,1) seq(1,10,2)
Joo Mendes Moreira

Fatores so vetores cujos valores possveis so enumerveis, i.e., um conjunto finito: classif <- factor(c('insuf,'suf,'insuf','bom','suf')) levels(classif) levels(classif) <- c(levels(classif),'muito bom) classif
Linguagem R FEUP

Linguagem R
9

Objetos: vetores (ndices e ordenao)


Podem-se usar ndices para aceder aos valores dos vetores. Experimente: imc[3] imc[-3] imc[1:3] imc[c(1,3)] imc["Rui"] imc[imc>=22.5] imc[imc>=20 & imc <=25] # & o operador lgico E imc[imc<20 | imc>25] # | o operador lgico OU A funo order l os ndices dos vetores por uma dada ordem: idx<-order(imc) # por defeito a ordem crescente idx imc[idx] order(imc, decreasing=TRUE) # ordem decrescente A funo sort ordena o vetor de acordo com uma ordem (crescente ou decrescente): sort(imc) # por defeito, a ordem crescente sort(imc, decreasing=TRUE) # ordem decrescente
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
10

Exerccios sobre R (1)


1. Uma empresa tem 2 agncias: uma no Porto outra em Lisboa. As receitas mensais (em milhares de euros) em cada uma das agncias foram:
Jan Porto Lisboa Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez

35 62

38 70

40 74

38 76

42 75

37 65

33 58

25 50

36 70

39 73

40 75

45 78

Usando instrues em linguagem R: a) Guarde esta informao de forma adequada e construa um objeto com a receita global por cada ms do ano. b) Quais os meses cuja receita global foi inferior a 100 mil euros? c) Quais os meses cuja receita global foi inferior a 100 mil euros ou superior a 120 mil euros? d) Quais os meses cuja receita global foi superior a 100 mil euros e inferior a 120 mil euros? e) Ordene os meses por ordem decrescente da receita global.
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
11

Exerccios sobre R (2)


2. Construa uma sequncia de nmeros mpares entre 0 e 20. 3. Construa um vetor com as notas que obteve no primeiro semestre e atribua os nomes das disciplinas a essas notas.

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
12

Objetos: matrizes
As matrizes podem ser vistas como vetores de duas dimenses: notas <- matrix(c(15,17,15,16,15,18,15,16,12,17,14,12),3,4) notas # Vejam a ordem de preenchimento rownames(notas) <- c('Mrio','Lcio','Amaro') N de linhas colnames(notas) <- c('SI','EC','AD','IA') N de colunas notas notas <- rbind(notas, c(15,13,13,14)) # acrescenta uma linha notas notas <- notas[-nrow(notas),] # remove a ltima linha notas A indexao de matrizes parecida com a indexao de vetores: notas[1,2] notas[1,] notas[,2] notas['Amaro','AD']
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
13

Objetos: arrays
Os arrays podem ser vistos como matrizes com mais de duas dimenses. Exemplo de um array com 3 dimenses: notas <- array(c(15,17,15,16,15,18,15,16,12,17,14,12, 13,14,15,16,14,12,15,16,10,15,14,12), c(3,4,2)) notas # Vejam a ordem de preenchimento dimnames(notas) <- list(c('Mrio','Lcio','Amaro'), c('SI','EC','AD','IA'), c('Melhoria','Frequncia')) notas A indexao de arrays parecida com a indexao de matrizes: notas[2,3,2] notas[,2,] notas[1,2,] notas['Amaro', 'AD', 'Melhoria']
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
14

Objetos: listas
Uma lista um conjunto ordenado de objectos. Os objectos que constituem uma lista podem ser de diferentes tipos: variveis, vetores, matrizes, etc. aluno1 <- list(nome='Mrio', curso='CEI', notas=c(15,16,15,17)) aluno2 <- list(nome='Lcio', curso='CEI', notas=c(17,15,16,14)) aluno3 <- list(nome='Amaro', curso='CEI', notas=c(15,18,12,12)) alunos <- list(aluno1, aluno2, aluno3) alunos Indexao de listas: alunos[[1]] alunos[[1]]$nome alunos[[2]]$notas[3] alunos[[1]]$ano.lectivo <- 3 # acrescenta o campo 'ano.lectivo' ao aluno 1 alunos
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
15

Exerccios sobre R (3)


1. Acrescente a disciplina Engenharia de Software (ES) matriz notas sabendo que as notas do Mrio, do Lcio e do Amaro foram de 16, 17 e 15, respectivamente. Use a funo cbind ( idntica funo rbind, mas para colunas). 2. Apresente todas as notas do aluno Lcio. 3. Construa uma matriz com as distncias entre Lisboa, Guarda e Porto, sabendo que Porto dista 317 km de Lisboa e 203 km da Guarda, e ainda que Lisboa fica a 317 km da Guarda.

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
16

Objetos: dataframes (1)


Um dataframe uma estrutura de dados em formato tabela. Ao contrrio das matrizes, cada coluna pode ser de um tipo de dados diferente do das restantes colunas: alunos <- data.frame(nome=c('Mrio', 'Lcio', 'Amaro'), curso=c('CEI', 'CEI', 'CEI'), SI=c(15,17,17), EG=c(16,15,18), AD=c(15,16,12), IA=c(17,14,12)) alunos Indexao de dataframes: alunos[1,3] alunos[alunos$nome=='Mrio', 'SI'] alunos[alunos$nome=='Mrio',]$SI alunos[alunos$AD<15,] alunos[alunos$SI<15 | alunos$EG<15 | alunos$AD<15 | alunos$IA<15,] attach(alunos) alunos[SI<15 | EG<15 | AD<15 | IA<15,]
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
17

Objetos: dataframes (2)


alunos <- rbind(alunos,c('Antnio', 'CEI',14,14,13,15)) # acrescenta uma linha Warning message: In `[<-.factor`(`*tmp*`, ri, value = "Antnio") : invalid factor level, NAs generated alunos$nome <- as.character(alunos$nome) levels(alunos$nome)<-c(levels(alunos$nome), 'Antnio') alunos[4,]$nome <- 'Antnio' alunos$nome<-as.character(alunos$nome) alunos <- rbind(alunos,c('Celso', 'CEI',15,13,13,14)) # acrescenta outra linha length(which(alunos$AD>14)) alunos <- cbind(alunos, c(16,17,15,15,14)) # acrescenta uma coluna colnames(alunos)[ncol(alunos)] <- 'ES' nrow(alunos) # n de linhas Complicado? Para facilitar a vida ... alunos <- edit(alunos)
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
18

Exerccios sobre R (4)


1. 2. 3. 4. 5. Quais os alunos com nota superior a 14 valores a AD? Quantas notas maiores do que 14 houve a AD? Quis as notas obtidas pelo Lcio? Quem teve notas entre 16 e 18, inclusiv? Qual o nome dos alunos e respectiva nota a SI de entre os que tiveram nota superior a 14 a AD?

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
19

Objetos: funes adicionais sobre objetos


ls(): lista todos os objetos existentes. rm(obj1, obj2, ): remove o(s) objeto(s) especificado(s).

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
20

Importao/exportao de dados
No menu do R: File -> Change dir ... Nesta diretoria tem de existir o ficheiro <ficheiro>.csv. Pode-se criar com o Excel ...

df <- read.csv('<ficheiro.csv>', sep = ",") Este smbolo tem de ser igual ao utilizado no ficheiro <ficheiro>.csv para separar colunas. Basta abrir o ficheiro e ver qual ...

Joo Mendes Moreira

Linguagem R

FEUP

Linguagem R
21

Ajuda
help.start() # pgina inicial da documentao online do R help(lm) # ajuda sobre um comando, neste exemplo: lm. Equivalente a fazer ?lm lm(formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset, ...) # Nas ajudas a funes, <var> = <valor> significa que essa varivel toma por defeito # o valor dado. help(package=stats) #ajuda sobre, neste exemplo, o pacote stats help.search('regression') # procura comandos que estejam relacionados com um dado tpico, neste exemplo regression. Equivalente a fazer ??regression. mais abrangente que a funo help. apropos('lm') # comandos que contenham no seu nome, neste exemplo, lm example(lm) # executa os exemplos que esto na documentao sobre o comando, neste caso, lm
Joo Mendes Moreira Linguagem R FEUP

Linguagem R
22

Bibliografia aconselhada
Textos introdutrios linguagem R (um destes 3): Lus Torgo, Introduo programao em R, http://cran.r-project.org/doc/contrib/Torgo-ProgrammingIntro.pdf, 2006. Peter Dalgaard, Introductory Statistics with R, 2nd edition, Springer, 2008. W. N. Venables, D. M. Smith, R Development Core Team, An introduction to R, 2009. Este livro est disponvel de forma gratuita no site do R-project http://www.r-project.org/ , na opo Manuals do tpico Documentation. Textos resumo de apoio linguagem R: Tom Short, R Reference Card, http://cran.r-project.org/doc/contrib/Short-refcard.pdf, 2004 Motor de pesquisa para R: http://www.rseek.org/.
Joo Mendes Moreira Linguagem R FEUP

Você também pode gostar