Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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)
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
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
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
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
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
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
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
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 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
>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?
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 ()
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?
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
...
A linha acima importa o arquivo oswego do epiinfo e corrige o formato de armazenamento de data usado pelo epiinfo.
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)
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
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
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
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
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.