Você está na página 1de 67

Noes bsicas sobre o

Oswaldo G Cruz & Antonio G. Pacheco G Programa de Computao Cientfica PROCC/FIOCRUZ

O que o R
O R uma sistema desenvolvido a partir da p linguagem S que tem suas origens nos laboratrios da AT&T no final dos anos 80. Posteriormente o S f i vendido e deu origem P t i t foi did d i a uma verso comercial o S-Plus. Em 1995 dois professores de estatstica da Universidade de Auckland, na Nova Zelndia, iniciaram o Projeto R, com o intuito de Projeto R desenvolver um programa estatstico p poderoso baseada na linguagem S, e de g g , domnio pblico. Pode ser baixado gratuitamente em g

http://www.r-project.org

Por que R? o qu ?
O R uma excelente linguagem para modelagem estatstica e confeco grficos t t ti f fi R desenvolvido e utilizado por pesquisadores de diversas reas no mundo inteiro inteiramente grtis (GNU) e atualizado frequentemente em univ. ao redor do mundo. Roda em vrios sistemas operacionais, Windows, Linux, Mac, Unix. Pode-se utilizar ate em maquinas antigas como por exemplo um 486. E Fcil de instalar, e pequeno ( o modulo bsico so somente 25 Mb) Centenas de mdulos adicionais para diversos tipos de analises. Excelente suporte (help documentao , listas de (help, discusso)

Alguns pontos fracos e possveis solues.


Por ser uma linguagem, a curva de aprendizado tende t d a ser um pouco dif diferente d que um programa t do operado por menus. (ex: SPSS), no entanto uma vez dominada a linguagem, pode-se expandi-la, e g g ,p p , operacionalizar os conceitos estatsticos de uma maneira muito mais completa. A sintaxe para o gerenciamento de dados complexa e grandes massas de dados exigem memria RAM disponvel. No entanto diversas mdulos permitem integrar o R a Bancos d Dados, seja importando os i t B de D d j i t d dados ou fazendo querys (SQL,ODBC) permitindo assim que o GBD seja feito em um programa q j p g externo.

Iniciando o R
Menus do GUI

Prompt

Clculos e Funes no R
O R pode ser usado como uma simples calculadora onde os operadores podem ser matemticos (+,d d d t ti ( ,*,/,^) Lgicos ( >, <, ==, !=) e funes (log, sqrt, etc..) Alguns exemplos: ) g p
> 2+2 [1] 4 > 3*7 [1] 21 > 4^2 [1] 16 > 6/5 [1] 1.2 > 5/3 [1] 1.666667 > 1:10 [1] 1 2 3 4 5 6 7 8 9 10 > sqrt(2) [1] 1.414214 > log(3) [1] 1 098612 1 1.098612 (1:10) ^2 [1] 1 4 9 16 25 36 49 64 81 100
>3>2 [1] TRUE > 5 == 7 [1] FALSE

Funo: uma conjunto de instrues que retorna um valor ou uma lista de valores, , usualmente depois de realizar alguma operao

Caractersticas bsicas de uma funo


toda a funo tem um nome e normalmente recebe argumentos, argumentos que devem ser passados entre parnteses e parnteses, separados por virgulas.
Funcao ( arg1, arg2, argn ) TODA A FUNO RETORNA UM VALOR Nome da funo Argumentos

Por exemplo:
> > > > > log (2) log ( 2, base=10) log (,base=3 ) log (3 10) l (3,10) log(base=3,x=2187)

Note que existem argumentos obrigatrios. Caso o nome do argumento seja empregado, pode-se utilizar qq ordem. d tili d Caso contrario deve obedecer a ordem.

Acessando a ajuda do R
Existem varias maneiras de pedir ajuda de um p j comando ou funo no R, a mais simples : >help(log) ou >? log l Uma janela ser aberta com os seguintes itens:
1. 2. 3. 3 4. Description (Descrio) Usage (Sintaxe) Arguments (A A t (Argumentos) t ) Details (Detalhes) 5. 6. 7. 7 8. Value (Valores) References (referencias bib) See Al (Ver tambm) S Also (V t b ) Examples (Exemplos)

Acessando a ajuda do R
A instalao default do R disponibiliza tambm um help em formato HTML >help.start() Em alguns segundos seu navegador estar aberto na pagina de help de onde voc poder acessar vrios manuais, FAQ, documentao sobre a linguagem as funes do modulo base linguagem, e dos mdulos adicionais que so instalados por default (ver Packages). Tambm poder fazer um search na search documentao. Outra facilidade que o R nos permite e a busca de informaes na base das listas de discusso e nos documentos atravs da internet. Para isso basta usar a funo RSiteSearch() Exemplo >RSiteSearch(logistic regression) Somente funciona se a internet estiver disponvel

Acessando exemplos do R
Existem ainda example(funcao) tente example(plot) data() a funo data se no usarmos nenhum argumento lista os dados disponveis como exemplo no R. para carregar algum exemplo basta data(dados) ( ) demo() a funo demo funciona da mesma forma sendo usada para listar as demonstraes disponveis. Ao usarmos o nome de uma delas como parmetro, parmetro poderemos assistir algumas das capaciades do R ou de algum assistir pacote. Vamos experimentar o demo graphics . >demo(graphics) vignette() uma funo recentemente incorporada ao R, e sua inteno e poder mostra um tutorial, e o cdigo fonte para que possamos executar os e aprender determinadas funes ou pacotes. Vamos experimentar o vignette sids que faz parte do modulo spdep, destinado a estatstica espacial.
> v1 <- vignette("sids") > print(v1) i t( 1) > edit(v1)
A funo print (neste caso) chama o leitor de PDF instalado Para exibir o arquivo. J a funo edit abre um pequeno editor existente no R para que possamos ver e editar os comandos.

R - Comandos de atribuio o a do d a bu o
Para P comear veremos como a f forma d um comando d de d de Atribuio (asignment) no R. Ou seja, como fazemos para atribuir a asignment) alguma varivel x (por exemplo) o valor 4. varivel, exemplo), 4

H duas opes: 1. x <- 4 2. 2 x=4


Experimente atribuir a uma varivel x1 um valor qualquer, a outra varivel x2 outro valor qualquer e finalmente, atribua a z o valor da soma de x1 e x2.

Obj o Objetos
Objeto: toda e qualquer informao armazenada no R, tal j q q , como: funes, vetores, matrizes, listas, data frames; Para criar um objeto, deve-se usar sempre o operador asignment <- ( pode ser tambm usar = , no entanto nesse curso adotaremos o operador <-);

Exemplo:
> x <- 3 >x [1] 3 >Y = x^2 >Y [1] 9

para visualizar todos os objetos existentes, existentes use a funo ls: ls : > ls ( )

OBS: o R uma linguagem case sensitive, ou seja, x e diferente de X , isto e valido para o nome de qq objeto. Tambm no e permitido comear o nome de um objeto por um numero. 1X um nome de objeto invalido, no entanto, X2 um nome valido.

Tipos po
Os i O tipos podem ser numrico (integer, double), d i (i d bl ) g p caractere, lgico ou complexo
> x <- 1.5 > resp <- is.numeric(x) > resp [ ] [1] TRUE > is.numeric(resp) [1] FALSE > is.logical(resp) [1] TRUE > is.character(resp) [1] FALSE x <- pi * c(-1:1) c( 1:1) >x [1] -3.141593 0.000000 3.141593 > as.integer(x) as integer(x) [1] -3 0 3 > as.double(x) [1] -3.141593 0.000000 3 141593 3 141593 0 000000 3.141593

G Gerenciando o obj o a do os objetos


Para listar os objetos : >ls() >ls(pat= a ) >ls(pat=a") >ls(pat= a ) >ls(pat="^a")
lista os objetos que tem a letra a no nome a

lista os objetos que comeam com a letra a a

Utilize a funo rm() para remover os objetos. () p j

Armazenando os Objetos a a do o Obj o


Ao sair o R pode salvar todos os objetos num mesmo arquivo com extenso .Rdata; Assim, o R salva apenas os OBJETOS, no salvando dessa maneira os resultados de funes e sadas grficas (mais i l d d f d fi ( i tarde veremos como salvar essas sadas); Podemos tambm salvar um histrico com os comandos tambm, que usados anteriormente; Existem duas maneiras de se sair do R Utilizando a R. funo q() Ou o no menu file -> exit Ao sair ser dada a possibilidade de salvar todos os seus objetos No diretrio de trabalho corrente.
A funo setwd(c://curso) seta o diretrio corrente para c:/curso setwd( c://curso ) Tambm pode-se mudar o diretrio corrente no menu file -> change dir

Armazenando os Objetos a a do o Obj o


EXERCCIO:
a) Salvar todos os objetos que estamos trabalhando no diretrio Meus Documentos, com o nome de aluno.RData b) Salvar os comandos j utilizados na aula tambm em Meus Documentos, como aluno.Rhistory.

As verses mais recentes do R salvam sempre o history junto com os dados na hora de sair. Veja tambm o help para as funes save, save.image, e sair save save image savehistory.

Vetores o
Vetor: Vetor: uma seqncia, em uma ordem especfica de valores de um mesmo tipo de dados; Esses valores podem ser: numricos, E l d i lgicos, caracteres ou complexos; Exemplos: Exemplos:
> > > > y <- 25 <logico <- TRUE <z <-1:10 <fruta<fruta<- banana O R no encontrou o objeto banana, tente ento: , > fruta <- banana

Vetores o
ATENO!
> x <- aluno <>x [1] aluno > x <- 25 <>x [1] 25

Repare que o R faz todas as substituies que pedimos, b i i di sem nos notificar de que estamos substituindo o contedo de um objeto. Por isso, devemos ficar sempre atentos aos nomes dos nomes objetos que estamos trabalhando... b lh d

Vetores o
Para entrar com seqncias que tenham mais de um valor, basta usar a funo de concatenao c( ) tal que: ),
> vec1 <- c(1, 3, 5,7,9,11,13,NA) <> vec2 <- c(Ana, Pedro, Lo, Joana) <Uma outra forma atravs de seqncias: > vec3 <- 1:12 ou ainda a forma vec3 <- seq(1,12) <<> vec4 <- seq (from=1, to=12,by=2) <NA e o valor no informado missing value

Vetores o
Ou ainda: > vec5 <- rep (c(1,2), c(10,20))
Valores a repetir N de vezes a repetir

C(1,2) # retorna os valores 1 e 2 C(10,20) # retorna os valores 10 e 20


A funo esta recebendo vetores como parmetros! p E muito comum nas linguagem atuais, a chamada de funes dentro de funes. funes Veja no exemplo acima Procure entender o que cada pedao do acima. cdigo esta retornando!

Op a Operaes com Vetores o o


Alm disso, podemos realizar operaes com vetores, cuidados devem ser tomados com o tamanho e a precedncia dos operadores. operadores
> > > > > p peso <- c(62.5, 70.3, 52.1, 98.0, 90.2, 70.6) <- ( , , , , , ) altura <- c(1.70, 1.82, 1.75, 1.94, 1.84, 1.61) <imc <- peso/altura^2 <- p / Peso/(altura^2) teria o mesmo valor? Pq? ( ) q soma <- peso + altura <altura+1:3 Comente esse resultado Co e te esu tado

Indexando Vetores d a do o
Podemos acessar o contedo de um elemento do vetor pela sua posio: >peso[3] # retorna o 3 elemento do vetor >altura[3:5] # retorna os elementos de 3 a 5 >peso [-4] #todos elementos menos o 4 [> Para visualizar parte de um vetor p >vec1[3] ; vec2[2:3] #(; comando na mesma linha) >vec3[c(7,4,1)] #(inclui os elementos 7, 4 e 1) >vec3[>vec3[-c(1,3)] #(exclui os elementos 1 e 3)
O smbolo # significa comentrio e o texto apos um # no ser interpretado pelo R

Op a Operaes com Vetores o o


Para particionar um vetor em dois
> peso1 <- peso[1:3]; peso2 <- peso[4:6] 1 <[1 3] 2 <[4 6]

Para trocar valores em um vetor:


>altura[4] <- 5 <[ ] ( , ) >altura[1:2] = c(2, 2)

Para incluir um elemento


> vet <- 10:1 <> vet[11] <- 0 <-

Nomeando Vetores o a do o
Podemos tambm acessar o contedo de um elemento do vetor pela seu nome > taxa <- c(2.85,3.10,10.13,11.86,8.15) <>names(taxa) names(taxa) >names(taxa) <- c("Norte","Nordeste","Sudeste","Sul","C.Oeste") <>taxa taxa >names(taxa) > taxa[Sul] taxa[ Sul ] >taxa[c("Sudeste","Sul")] # no possvel usar o p/ excluir

Nomeando Vetores o a do o
> taxa[2] ; taxa [-3] #continua sendo possvel usar o ndice [> taxa[Cent Oeste] # o nome tem de ser exato taxa[ Cent.Oeste ]
Repare no Exemplo como a Existncia do Nome do vetor pode Facilitar varias tarefas

>pie(taxa) > title("Taxa de incidncia de neoplasias malignas \n Segundo regio - 2003") i

Op a Operaes com Vetores o o


Quais valores so maiores que 1.80 m? > altura[altura>1.80] Tente explicar esse comando Qual a media do peso? A funo sum retorna o somatrio de um vetor > sum(peso)/length(peso) E a funo length retorna o tamanho do vetor (p ) g (p ) Ou simplesmente (p ) >mean(peso) Vamos inserir um valor NA na 2a posio do vetor peso p p
> peso[2] <- NA Agora repita os dois comandos acima. O que aconteceu?

TODA OPERAO COM NA RETORNA NA Deve se Deve-se usar ou paramentos de funes ou a funo na.omit() ou na.exclude. Veja tambm o parmetro na.rm na funo mean

O d ao d dado Ordenao de dados


Abaixo, algumas funes que so utilizadas para realizar operaes com vetores:
sort:ordena os valores de um vetor rev:coloca os valores de um vetor na ordem inversa order:retorna um vetor de inteiros contendo a permutao que ir ordenar o objeto de entrada em ordem crescente rank:retorna os postos dos valores de um vetor > rank (c( 2,4,5,1,7,6)) k > sort (c( 2,4,5,1,7,6)) > order (c( 12,14,15,11,17,16)) > rank (c( 2,2,5,1,7,6)) k > rev (c( 2,4,5,1,7,6))

Fatores ao
Fatores (factor) so usados para armazenar dados categricos > sexo <- sample(0:1,20,T) > fsexo <- factor(sexo,lab=c("Masculino","Feminino")) > fsexo

[[1] Feminino Masculino Feminino Feminino [5] Masculino Feminino Masculino Feminino [9] Feminino Feminino Masculino Masculino [13] Feminino Masculino Feminino Masculino [17] Masculino Masculino Masculino Feminino Levels: Masculino Feminino
>levels(fsexo) [1] "Masculino" "Feminino" > table(fsexo) # teste esse comando t bl (f ) t t d

Fatores so extremamente importantes nas especificaes de modelos

Fatores Ordenados ao O d ado


Fatores ordenados (ordered) so usados para armazenar dados categricos > escola <- sample(0:4,20,rep=T) > escola <- ordered(escola, labels = c("analf", "primario", "1grau", "2grau","sup")) "2 "" ")) > escola [1] [ ] analf 1grau 2grau superior 1grau 2grau 1grau primario g g p g g g p [9] primario 2grau superior superior 2grau primario 1grau analf [17] superior 2grau 1grau primario Levels: analf < primario < 1grau < 2grau < sup
> levels(escola) [1] "analf" < "primario" < "1grau" < "2grau" < "superior > t bl ( table(escola) # teste esse comando l ) t t d Fatores so extremamente importantes nas especificaes de modelos

Fatores ao
A funo cut permite criar pontos de corte em uma varivel continua, retornando um fator. > idade <- rnorm(20,mean=40,sd=18) #criando 20 pontos media 40 dp=18 > fetar <- cut(idade,breaks=c(0,20,40,60,80,100)) ( , ( , , , , , )) > fetar
[1] (40,60] (0,20] (0,20] (20,40] (60,80] (40,60] <NA> (20,40] (60,80] [10] (60,80] (0,20] (20,40] (40,60] (20,40] (40,60] (40,60] (40,60] (40,60] (60 80] (0 20] (20 40] (40 60] (20 40] (40 60] (40 60] (40 60] (40 60] [19] (40,60] (20,40] Levels: (0,20] (20,40] (40,60] (60,80] (80,100]

Repare que nesse caso um ponto fico de fora do intervalo e recebeu NA intervalo,

Matrizes
Matrizes tem como atributo dimenso [i,j] muitas funes e procedimentos necessitam deste tipo de objeto: Para criara uma matriz exitem as funes: matrix();rbind();cbind() i () bi d() bi d() >v1 <- (1:3)^2
>v2 <- (1 3)^3 2 (1:3)^3 >pot.mat <- matrix(c(v1,v2),ncol=3,byrow=T) >pot.mat >pot mat

[,1] [,2] [,3] [1,] [2,] 1 1 4 9 8 27

>dim(pot.mat)

[1] 2 3

Matrizes
> t(pot.mat) # transposta de pot.mat > mean(pot.mat) > summary(pot.mat) > res <- pot.mat > 1 #qual o resultado? comente > res >mcar <- matrix(c("a","b","c","d"),2) # qual o tipo dessa matriz? >dim(mcar) > is.numeric(mcar) >summary(mcar) ; table(mcar)
Use is.matrix() para verificar se um obj e uma matriz

Indexando Matrizes
> pot.mat[1,2] #lista elemento da 1 linha 2 coluna >pot.mat [-2,] # suprime a 2 linha > mean(pot.mat[1,]) #media da 1 linha > mcar[1,] # lista a primeira linha > dimnames(pot.mat) > rownames(pot.mat) <- c("Quadrado","Cubo") > dimnames(pot.mat) > colnames(pot.mat) <- c(1,2,3) As funes colnames e rownames podem ser usadas, mas tambm > pot.mat poderamos usar dimnames. dimnames > pot.mat[Cubo,] Verifique o que a funo names retorna, comente! > dimnames(pot.mat)
Pode-se indexar pelo nome da mesma forma que um vetor, s que com duas dimenses [i,j]

Matrizes
exemplo:
> phs <- matrix(c(189,10845,104,10933),byrow=TRUE,ncol=2) >dimnames(phs) <- list(Grupo=c("Placebo","Aspirina"), Infarto=c("Sim","Nao")) >phs > dimnames(phs)
Infarto Grupo G Si Sim N Nao Placebo 189 10845 Aspirina 104 10933 > phs[1,1] * phs[2,2] / ( phs[2,1] * phs[1,2] )
Que valor o comando acima deve retornar? Algum sentido epidemiolgico nele?

Operaes com Matrizes


> x1 <- matrix(1:6,ncol=2) #uma matriz 3x2 > x2 <- matrix(6:1 ncol=3) # uma matriz 2x3 matrix(6:1,ncol=3) > x1 %*% x2 # e o produto uma matriz 3x3... [,1] [,2] [,3] Repare no operador % % %*% [1,] 26 16 6 [2,] 37 23 9 [3,] [ ] 48 30 12 > x <- matrix(10:1,ncol=2) matriz x foi adicionado uma coluna > y < cbind(x 1:5) <- cbind(x,1:5) com o vetor 1:5. >y [,1] [,2] [,3] > [1,] 10 5 1 >[2,] 9 4 2 >[3,] 8 3 3 As funes rbind e cbind pode ser usadas p/ adicionar linhas ou colunas a uma / di i li h l >[4,] 7 [4 ] 2 4 matriz >[5,] 6 1 5

Arrays
Arrays so matrizes multidimencionais. Enquanto em uma matrix os elementos so organizados em duas dimenses (linhas e colunas), em colunas) um array os elementos podem ser organizados em um numero qualquer de dimenses. No R para se criar um array utilizanda a funco array(). f ()

>ar3d <- array(1:24, dim=c(3,4,2)) >dim(ar3d)


Veja tambm um exemplo do R chamado Titanic, descubra suas dimenses Inspecione o banco, use as funes dim e ftable. Selecione os passageiros somente da 1a classe. classe Selecione os tripulantes adultos.

Data Frames
Data Frames so muito parecidos com matrizes - eles
tem linha e colunas, e portanto tem duas dimenses. Entretanto, diferentemente de matrizes, cada coluna pode armazenar elementos de diferentes tipos. Por exemplo: a primeira coluna pode ser numrica enquanto a segunda pode ser constituda de caracteres. Ou seja, como nossos bancos de dados que utilizamos em outros pacotes. Nos Data Frames as colunas tem nomes, e podemos , p referencia-las por esse nome.

Data Frames
Alguns exemplos j disponveis no R, >Vejamos o dataframe rabbit >V j d t f bbit >names(rabbit) > Rabbit$Dose # listar a coluna com a varivel Dose > Rabbit[ , c(1,2,4)] # lista somente as colunas 1,2 e 4 > grupo <- Rabbit$Treatment # qual ser o tipo do obj grupo? > is.data.frame(grupo) # explique o resultado >ctr1 <- Rabbits[Rabbits$Treatment==Control, ] # esta correto? > ctr2 <- Rabbits[Rabbits[,4]!=MDL,] # esta correto? crt1==crt2? < Rabbits[Rabbits[,4]! MDL ,] crt1 crt2? Como vc geraria um DF com o grupo experimento?

Data Frames - EXERCICIOS


Criando um Simples DataFrame: >altura <- c(150 135, 210, 140, 170, 168, 175) < c(150, 135 210 140 170 168 >peso <- c(65, 61, 70, 65, 82, 77, 86) >sexo <- c("F","F","M","F","M","F","M") >estudo <- data.frame(altura,peso,sexo) # cria o data frame >names(estudo) >edit(estudo) # tente adicionar uma nova coluna com nomes 1. Crie uma nova coluna no DF estudos, contendo o IMC 2. Calcule a media do peso das mulheres no dataframe estudos usando exemplos j disponveis no R, d l di i R Veja os dataframes birthwt, swiss (pea help) 1. Descubra o tamanho,numero de colunas , e o nome delas. 2. Descubra no DF birthwt quantos % das mulheres fumam (dica use table) 3. Qual a media de fertilidade nas cidades com mais e com menos de 50% catlicos?

Agregando e Separando dados


Para Agregar dados, usamos a funo aggregate Veja os exemplo abaixo: > aggregate(state.x77, list(Region = state.region), mean) > aggregate(birthwt,list(fumo=birthwt$smoke==1),mean) Para extrair um subconjunto de dados usamos a funo subset. # seleciona fumantes com mais de 21 anos.
> subset(birthwt, smoke == 1 & age >21 , select = c(age,bwt, )) # seleciona ozonio e temp p/ os dias com temp maior que 80F > subset(airquality, Temp > 80, c(Ozone, Temp)) subset(airquality 80 c(Ozone

As funes Aggregate e S b t operam sobre vetores, A f A t Subset b t matrizes e data frames.

Agregando e Separando dados


Pode-se ainda usar a funo by Possui o formato geral by (objeto,ndice,funo) onde objeto um data frame, ndice um fator ou uma lista de fatores e funo o nome da funo a ser aplicada! Ex:

by(birthwt,birthwt$smoke,summary) b (bi th t bi th t$ k ) by(birthwt,list(fumo birthwt$smoke,idade bi by(birthwt,list(fumo=birthwt$smoke,idade=bi rthwt$age >21),summary)


A f b opera sobre matrizes e data frames. funo by b ti d t f

Listas
Lista um tipo de objeto, que permite combinar diferentes objetos em um nico objeto. Podemos juntar vetores, bj t i bj t P d j t t matrizes,nmeros e/ou caracteres e at mesmo outras listas um nico objeto lista. Aqui vai um exemplo simples: lista Criando um Simples Listas:
l1 <- list(A=1:10, B="um texto qq", C=matrix(1:9, ncol=3), D=as.formula("x~y")) A Maioria dos resultados de modelos e testes e na forma de Lista

> > > >

x<- rnorm(100);y<-rnorm(100,0.5) tt <- t test(x y) < t.test(x,y) summary(tt) is.list(tt) ; names(tt) is list(tt)

Listas
Para acessar o contedo de uma listas podemos: > l1$C > l1[3] >l1[[3]] # verifique se as 3 formas acima so iguais. Veja o nome dos objetos gerados pelo comando abaixo, tente explicar de onde veio a formula empregada. L2 <- lm(l1$D)
Aprenda a conhecer as listas e verifique na documentao das funes o que retornado por cada uma f t d d

Importando Dados po a do ado


O R permite facilmente a importao e exportao d D d t de Dados. A funo scan permite a importao de vetores sendo uma maneira rpida e fcil de importar dados. > malaria <- scan(c:\\curso\\malaria.dat)
Observe a utilizao da dupla barra invertida \\ , isso e necessrio pois o R utiliza a barra invertida \ como seqncia \ de comando e caracteres especiais.

Importando Dados po a do ado


Lendo Tabelas: A funo read.table permite a leitura de diversos tipos de dados no formato ASCII di ti d d d f t
O arquivo ao lado e facilmente importado Com a funo abaixo: poprj <- read.table(c:\\curso\\pop-rj.dat) Pode-se posteriormente nomear as colunas, Deletar l D l t colunas desnecessrias etc.. d i t
1 330010 79 16268.853 2 330010 80 16762.959 3 330010 81 17272.071 4 330010 82 17796.647 5 330010 83 18337.156

...

Importando Dados po a do ado


Lendo tabelas que possuem separador e cabealho :
Para ler arquivos que possuem linhas de cabealho, cabealho separadores e outras caractersticas, devemos informar a funo read.table para que a leitura possa ser efetuada corretamente. f d
dados <- read table("c:\\curso\\tabela dat",header=T,sep= ,") < read.table( c:\\curso\\tabela.dat header=T sep=" ) O parametro header=TRUE informa que o arquivo possui uma linha com nome das colunas, e sep=, informa que os campos f esto separados por virgulas.

Importando Dados po a do ado


Lendo Tabelas:
A funo read.table e muito versaltil, possui diversos parametros que permite mudar delimitador pular delimitador, linhas, especificar qual o caractere usado para , delimitar numero decimal, linhas de comentarios a ser ignoradas etc... As funoes read.csv, read.csv2, read.delim so usadas para ler dados csv, csv com , como delimitador decimal e dados delimitados por TAB (\t). Essas funes so construidas a partir da funao read.table.

Importando Dados po a do ado


O R atravs do pacote f i permite l t d t foreign it ler f formatos t dos seguintes programas: Minitab, S, SAS, SPSS, Stata, EpiInfo
>library(foreign) >oswego <-read.epiinfo(c:\\curso\\oswego.rec", g guess.broken.dates=TRUE, thisyear="1972") , y )

A linha acima importa o arquivo oswego do epiinfo e corrige o formato de armazenamento de data usado pelo epiinfo.

Importando Dados po a do ado


Lendo Tabelas:
A funo read.table permite a leitura de diversos tipos de dados no formato ASCII A funo read.fwf le dados com formato fixo (ver caixa de texto)
>fixo <- read.fwf(dados_fixo.txt", fi d f f(d d fi t t" width = c(2, 2, 2, 1, 2, 2, 1)) >names(fixo) <- c("id", "a1", "t1", s1", "a2", "t2", s2") dados_fixo.dat
195 094951 26386161941 38780081841 479700 870 56878163690 66487182960 786 069 0 88194193921 98979090781 107868180801

Importando Dados po a do ado


O pacote RODBC implementa conectividade com bases de dados nativas do Windows como o access excell e dbase A maneira que access, excell, dbase.A essa conectividade e implementada e utilizando interface SQL SQL. O pacote RSQLite possibilita querys SQL diretos ao SQLit P SQLite. Pacotes como RM SQL , Roracle t RMySQL R l etc... Permitem interfaces diretas com diversos bancos de Dados. di b d D d

Importando Dados SQL Via Sqlite


>library(RSQLite) # Bilbioteca RODBC >drv <- dbDriver("SQLite") >canal <- dbConnect(drv, aula.db") # Estabalce um CANAL >dbListTables(canal) # Ve as tabelas disponiveis > Muni <- sqlFetch(canal,"munirj") # Importa a Tabela #O comando abaixo somo os dados por UF d b i d d > soma <-dbGetQuery(canal,paste("SELECT sigla.sigla, sum(sud.casos) FROM sud, sigla WHERE sud.uf=sigla.uf group by sigla.uf")) , g g g p y g )) # este comando totaliza os casos por UF e ANO >sud <-dbGetQuery(canal,paste("SELECT sigla.sigla, sud.ano, sum(sud.casos) s m(s d casos) FROM s d sigla WHERE s d f sigla f g o p b sud, sud.uf=sigla.uf group by sigla.uf,sud.ano ")) >names(sud) <- c("uf","ano","casos") ( ) ( )

Gerando Grficos
Podemos gera grficos bem complexos! options(graphics.record=TRUE) options(graphics record TRUE) # seta a opo de guardar os grfico Alguns exemplos j dispniveis no R g j >example(barcode)

>demo(graphics) >demo(image) >library(lattice) >example(bwplot) >example(matplot)

O R pode salvar os grficos em Vrios tipos de formatos, formatos ate mesmo em PDF, Para Serem incorporadas a outros p Documentos, paginas na web etc..

Gerando Grficos
No R, podemos gerar facilmente grficos A funo plot() inicia um novo grfico Em sua forma mais simples a funo recebe valores grfico. de coordenadas x e y: >x < 1:20 <> y <- x**3 > plot(x,y) Este ltimo comando faz com que o R abra uma nova janela. Novos grficos iro sobrescrever o grfico na mesma janela. g p p Grficos com linhas ligando os pontos podem ser obtidos utilizando o argumento opcional type="l" na funo plot(): > plot(x,y,type="l") H vrias outras opes para os grficos. Examine estes exemplos: > plot(x,y,type="b") ; plot(x,y,type="o") ; plot(x,y,type="s") p ( ,y, yp plot(x,y,type="c") ; plot(x,y,type="h") ) p ( ,y, yp )

Gerando Grficos
Pode-se adicionar pontos ou linhas a um grfico j existente usando as funes points e li i t t d f i t lines: > > > > > x<- rnorm(30) ; y <- rnorm(30) plot(0,type="n",xlim=c(-4,4),ylim=c(-4,4)) points(rnorm(30),rnorm(30),col=2) es( o ess( ,y),co 3) lines(lowess(x,y),col=3) points(x,y,col=4)

Diversos parmetros nas funes grficas podem ser empregados, veja help(plot) . Varias outras funes adicionam informaes a grficos, veja titl , axis , text, mtext, etc... A f par controla fi j title i t t t t t funo t l diversos aspectos dos grficos, veja tambm o help dela.

Gerando Grficos
Ex1 > sarampo <read.table(file="http://www.medepi.net//data//measles.txt",head=T) >plot(sarampo,type=l,col=2,lwd=2) >arrows(1963, 700000, 1963, 450000, length=.15, angle=10) (1963 700000 1963 450000 l th 15 l 10) >text(1964, 710000, 'Vacinao (1963)', cex=.75) Ex2 > barplot(VADeaths, beside = TRUE, col = c("lightblue", "mistyrose", "lightcyan", "lavender", "cornsilk"), legend = y , g y , , ), g rownames(VADeaths), ylim = c(0, 100)) Ex3 >plot(pam(ruspini, 4), ask = TRUE) p (p ( p , ), ) Ex4 >hist(x, col='light blue', probability=T) > lines(density(x), col red , lwd 3) col='red', lwd=3)

Exemplos de Grficos po d G o
> > > # > library(Epi) data( blcaIT ) attach(blcaIT) Tabela de taxas bl.rate <- tapply( D, list(age,period), sum ) / tapply( Y, list(age,period), sum ) bl.rate bl rate # The four classical plots: >par( mfrow=c(2,2) ) >rateplot( bl.rate*10^6 )
1 e+03 1 e+02 Rates 1 e+01 1 e+00 1 e-01

1 e+03 1 e+02 1 e+01 1 e+00 1 e-01 30 40 50 60 70 30 40 50 60 70 Rates

Age at diagnosis

Age at diagnosis

1 e+03 1 e+02 Rates 1 e+01 1 e+00 1 e-01 1955 1960 1965 1970 1975 Date of diagnosis

1 e+03 1 e+02 1 e+01 1 e+00 1 e-01 1880 1900 1920 1940 Rates

Date of birth

Exemplos de Modelos po d od o
Como j foi dito o R apresenta mais de 500 mdulos cobrindo diversos tipos de analises, modelos e grficos, b i d di ti d li d l fi voltados para praticamente todas as reas da estatstica, epidemiologia, ecologia, gentica e biologia molecular. p g , g ,g g Apresentaremos alguns desses modelos para

Exemplos de Modelos Linear po d od o a


Vamos utilizar um exemplo j disponvel no R veja o help p/ o state.x77 (veja dimnames) j h l / t t 77 ( j di ) > pairs(state.x77) #observe as associaes lineares > State <- as data frame(state x77) #tranf Em DF as.data.frame(state.x77) #tranf. > scatterplot(state$Murder , state$LifeExp ,label=rownames(state)) # carregue a library car >modelo <- lm(state$Life~state$Murder ) > summary(modelo) > plot(modelo) l ( d l ) >modelo <- update(modelo,.~.+log(state$Population)) > summary(modelo) > plot(modelo) lm (Life~Murder+Population,data=state) # em DF

Exemplos Cluster & componentes principais


Cluster utilizando o dado iris que foi trabalhado por Fisher na dcada d d d de 30 > plot(agnes(iris)) #cluster hierrquico e os grficos > plot(pam(iris,3) # cluster de partio 3 grupos plot(pam(iris 3) Componentes principais , dados state.x77 x77 <- princomp(state.x77[,1:5], cor = TRUE) summary(x77) # sumario do modelo loadings(x77) l di ( 77) # cargas plot(x77) # grafico da biplot(x77) # comp1xcomp2 x77$scores # score p/ cada estado

> > > > > >

Exemplos de Modelos Series Temporais


Vamos utilizar um exemplo j disponvel no R veja o help p/ o dados ldeaths j h l / d d ld th > > > > ldeaths plot(ldeaths) # existe tendencia? Sazonalidade? acf(ldeaths) ; pacf(ldeaths) #veja as acf e pacf plot(diff(ldeaths)) #diferenciando a serie

Vamos explorar a sazonalidade e tendncia l ld d d > boxplot(ldeaths~cycle(ldeaths),names=month.abb) > boxplot(ldeaths~trunc(time(ldeaths))) boxplot(ldeaths trunc(time(ldeaths))) Veja tambm as funes spectrum, decompose, spectrum decompose e na modulo MASS stl , cpgram

Exemplos de Modelos Series Temporais


Funo de Correlao cruzada > ccf(mdeaths,ldeaths) >acf(ts.union(mdeaths,ldeaths)) >acf(ts nion(mdeaths ldeaths)) Modelo AR Use a serie lh hormnio luteinizante plote a serie, veja a acf, pacf, que modelo lhe parece? > ar(lh); #modelo AR , retorna ordem def. pelo AIC

Exemplos de Modelos Series Temporais


Modelo ARIMA
> ajuste <- arima(serie, order=c(p,d,q), list(order=c(P,D,Q), period=freq) ) <> tsdiag(ajuste) ( j ) > names(ajuste) >aj1 <- arima(ldeaths, order=c(1,1,0), list(order=c(1,0,0), period=12 ) ) aj a a( deat s, o de c( ,0,0), st(o de c( , ,0), period=12 ) ) >aj2 <- arima(ldeaths, order=c(1,0,0), list(order=c(1,1,0), pe od >aj1 >tsdiag(aj1) aj2 >aj2 > tsdiag(aj2) > predict(aj2) > predict(aj2,3)

Exemplos de Modelos Regresso logstica


>library(MASS) y( ) >data(birthwt) >birthwt$race < as factor (birthwt$race) <- as.factor >birthwt$ptl <- as.factor (birthwt$ptl) >resp.glm <- glm (low ~ age + lwt p , + race + smoke + ptl + ht + ui + ftv, data=birthwt, family="binomial") >summary (resp.glm,conditional=T,digits=2) (resp glm conditional=T digits=2)

Exemplos de Modelos Survival po d od o u a


>library(survival) >leukemia.surv <- survfit(Surv(time, status) ~ x, data = aml) l k i fit(S (ti t t ) d t l) >plot(leukemia.surv, lty = 2:3) >legend(100, .9, c("Maintenance", "No Maintenance"), lty = 2:3) >title("Kaplan-Meier Curves\nfor AML Maintenance Study")
Kaplan-Meier Kaplan Meier Curves for AML Maintenance Study
1.0

0.0

0.2

0.4

0.6

0.8

Maintenance No Maintenance N M i t

50

100

150

Novas Interfaces p/ o R o a a
Rcmdr

Tutorias na Internet (Links) uo a a ( )


No CRAN http://cran.r-project.org/other-docs.html Portugus http://www.est.ufpr.br/Rtutorial/ Espanhol http://www.ub.es/stat/docencia/EADB/Curso%20basico%20de%20R.htm Ingls I l http://socserv.mcmaster.ca/jfox/Courses/UCLA/index.html http://www.math.csi.cuny.edu/Statistics/R/simpleR/index.html http://www.psych.upenn.edu/~baron/rpsych/rpsych.html p p y p p y p y

Bibliografia b og a a
William N. Venables and Brian D. Ripley. Modern Applied Statistics with p y pp S. Fourth Edition. Springer, 2002. ISBN 0-387-95457-0. Peter Dalgaard. Introductory Statistics with R. Springer, 2002. ISBN 0g y p g , 387-95475-9. Frank E. Harrell. Regression Modeling Strategies, with Applications to g g g , pp Linear Models, Survival Analysis and Logistic Regression. Springer, 2001 John Fox. An R and S-Plus Companion to Applied Regression. Sage Publications, Thousand Oaks, CA, USA, 2002. ISBN 0761922792.