R Este material é um auxílio de consulta rápida, o conhecimento aqui apresentado deve ser fundamentado pelas atividades de aula e principalmente pelas bibliografias fornecidas. Cada disciplina demanda parte do conhecimento aqui resumido, devendo o aluno estar apto a distingui-la. > x [1] 1 2 3 4 5 > a <- x>3 > a [1] FALSE FALSE FALSE TRUE 5.4) Informações sobre valores nulos estatisticamente, NA=valor faltando. NaN=não é numero. 1.1) Inicie seu trabalho sempre em uma pasta nova e automaticamente o r salva os dados e historico dos comandos - se ao sair vc salvar o workspace. > y<-c(1:3,NA,NaN) > y [1] 1 2 3 NA NaN > is.na(y) [1] FALSE FALSE FALSE TRUE > is.nan(y) [1] FALSE FALSE FALSE FALSE 1.2) Para acessar o octave via terminal linux digite: 5.5) Transformar vetor em matriz 1) Introdução $ R > options(editor='gedit') > d<-1:6 > d [1] 1 2 3 4 5 6 > x<-matrix(x,3,2) [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 > x [,1] [,2] [1,] 7 7 [2,] 2 5 [3,] 3 6 1.7) Abre editor de dados ou funções, depende do tipo de objeto 5.6) Obter tamanho do vetor 1.3) Para acessar ajuda de qualquer função, digite “?funcao”. > ?sum 1.4) Listar os objetos usadas no momento > ls() 1.5) Apague os objetos desnecessários > rm(x,y) 1.6) Configurar editor de funções e dados > fix(objeto) 1.8) feche o programa. > q() #tecle 'y' para salvar os comandos e dados digitados na tela 1.9) instalação de pacotes. Obtenha os pacotes em: http://cran.r-project.org/ > install.packages('tseries_0.10-26.tar.gz') 2.1) Adotamos uma letra minúscula como prefixo do nome da variável para indicar seu tipo. enumero <- 1.123 # um escalar inteiro ou decimal. ttexto <- “texto” vvetor <- c(1,2,3,4,5,6) #vetor nao tem prefixo dfdados <- data.frame(x=c(1,2),y=c(3,4))# para dados tipo dataframe ldados <- list(nome1=valor1,..,nomeN=valorN)# dados tipo lista > length(c(10,20,NA)) [1] 3 > length(na.omit(c(10,20,NA))) [1] 2 6) Objeto: Data Frames > dados <- data.frame(x=1:5,y=2*1:5) > dados x y 1 1 2 2 2 4 3 3 6 4 4 8 5 5 10 6.2) Acessando a um item do dataframe > dados$x [1] 1 2 3 4 5 > names(dados) [1] 'x' 'y' 3.1) Operações básicas. “+” Soma; “-” Subtração; “*” Multiplicação; “/” Divisão; “^” Potenciação; “%%” resto da divisão; “%/%” quociente da divisao 3.2) Operações matemáticas. sin(x); cos(x); tan(x); asin(x); acos(x); atan(x); exp(x); logaritmo na base e: log(x); logaritmo na base 10: log10(x); valor absoluto: abs(x); menor numero inteiro (não menor que o passado como parâmetro): ceil(x); maior numero inteiro (nao maior do que o passado como parâmetro): floor(x); arredenda corretamente: round(x,digits=2); exibe numero de digitos: signif(x,digits=2); raiz quadrada: sqrt(x); pi valor de pi=3,14.... Use NA para valores em falta e NaN para valores não é numero. 4) Operadores | == 6.4) Calculando valores de linhas > rowSums(dados) [1] 3 6 9 12 15 7) Objetos: Lista Muito usado para saida de funçoes 7.1) Construindo uma lista > saida<-list(x=10,arq='dados') > saida $x [1] 10 Teste 1 Teste 2 true true true true true true false false true false false true false true false > saida$arq [1] 'dados' false false false false true 7.3) lendo os campos de uma lista 5) Objeto: Vetor 5.1) Criar vetor rápido. > x<-c(1,2,3) > x [1] 1 2 3 > x<-c(1:5) > x [1] 1 2 3 4 5 > x[-(2:3 )] # o indice negativo exclui valores do vetor [1] 1 4 5 5.2) Criar sequencia. seq(from,to,by,length). #by=incremento, length=comprimento. 5.3) Vetores lógicos TRUE 6.3) lendo os campos de um data frame 3) Operações Matemáticas > seq(1,10,by= 2) [1] 1 3 5 7 9 > seq(from=1,length=10,by= 2) [1] 1 3 5 7 9 11 13 15 17 19 TRUE 6.1) Construindo um data frame 2) Nomes de variáveis & TRUE $arq [1] 'dados' 7.2) Acessando a um item de uma lista > names(saida) [1] 'x' 'arq' 8) Programando com Script Para programação no R, usa-se toda a capacidade de processamento disponível. Use #... para comentário simples. if(F){} para comentário em bloco. 8.1) Estrutura do Script /ea_catalunha_tarefa/exercicio1/exercicio1.sr sink('resultados.txt') # Codigo do Script sink() 8.2) Executando o Script de dentro do R > source('relatorio01.sr',echo=T) 8.3) Estrutura básica de arquivos e pastas de uma tarefa ea_catalunha_tarefa |-- .RData |-- .Rhistory Resumo R. Prof. Dr. Catalunha - Versão atualizada em 12/11/2013 às 16:13 hs Página 1 de 4 |-|-|-`-- relatorio01.sr dados.txt resultados.txt graficoA.png Obs.: o arquivo sublinhado será criado automaticamente pelo script. 8.4) Estrutura do arquivo padrão de entrada. Primeira linha é o cabeçalho. Separador por espaço e Use # para comentário deste arquivo. /ie_catalunha_tarefa/dados.txt #Autor: Prof. Dr. Catalunha #Fonte do dado x y 1 4 2 5 3 6 9) Programando com Funções Para programação no R, usa-se toda a capacidade de processamento disponível. Use #... para comentário simples while (condicao){ # executa codigo enquanto condicao for verdadeira } 12.4) Lê valor do teclado. > num <- scan() 1: 10 2: 20 3: > txt<-scan(what='character') 1: aaa 2: bbb 3: 13) Estatísticas Descritiva 13.1) Funções estatísticas básicas.Verifique sempre a presença de valores NULOS=NA > x <- c(1:5) > x [1] 1 2 3 4 5 > mean(x) [1] 3 > max(x) [1] 5 > var(x) [1] 2.5 > min(x) [1] 1 > sd(x) [1] 1.581139 > range(x) [1] 1 5 > summary(x) ... > length(x) [1] 5 > sort(x,decreasing=TRUE) [1] 5 4 3 2 1 > sum( x) [1] 15 na.exclude(c(2,NA,1)) [1] 2 1 > paramSaida <- ffuncao(entrada01,entrada02) > hist(x) > boxplot(x) O objetos paramSaida contém todos os objetos da lista de return, além da saida natural da função > plot(x) 9.1) Cria e editar uma função > fix(ffuncao) 9.2) Estrutura da função function(entrada01=valor,...,entradaN=”valor”){ # codigo da função ParamSaida<-list(param01=valor,...,paramN=”valor”) return(ParamSaida) } 9.3) O nomes dos parametros de retorno da função podem ser lidos com > names(ffuncao) 9.4) Executando funções 9.5) Exportar funcao como objeto > save(ffuncao,file='ffuncao.objr') 9.6) Importar função salva como objeto >load(“ffuncao.objr”) 10) Leitura em arquivo 10.1) Ler dados ascii de arquivo salvando em DataFrame > dados<-read.table('dados.txt',head=T) > dados x y 1 1 4 2 2 5 3 3 6 11) Escrita em arquivo 11.1) Escreve DataFrame em arquivo ascii. dados =um dataframe. >write.table(dados,file='resultados') 11.2) Associar o arquivo a um objeto. “a” = adicionar. “w” = escrever. >arq<-file('resultados','a') 11.3) Envia texto e valores para arquivo >cat(“texto”,objvetor,”\n”,file=arq) 11.4) Captura saida de comando R e envia para arquivo >capture.output(summary(modelo),file=arq) 14) Distribuições de probabilidade As distribuições mais usadas são, com respectivo nome usado no R Distribuição Função no R Parâmetros e configurações Normal ?norm Média, Desvio Padrão,... t ?t GL ?chisq GL χ 2 f ?f GL1, GL2 Observação: No R para cada distribuição de probabilidade implementada há 4 prefixos básicos para indicar funções diferentes para o mesmo modelo de probabilidade, são elas: d: Calcula a densidade de probabilidade, f(x) no ponto x. p: Calcula a probabilidade,(entre 0 a 1), acumulada F(x) no ponto x=? q: Calcula o quantil, x=?, correspondente a uma dada probabilidade (entre 0 a 1) r: retira uma amostra da distribuição Exemplo para distribuição normal: dnorm(2.3,3,0.5) 0.2994549 pnorm(2.3,3,0.5) qnorm(0.08,3,0.5) 2.297464 rnorm(5,3,0.5) 3.904574 2.618711 3.119791 3.432854 2.459779 11.5) Junta texto para formar string >paste(dados,'_resultados',sep='') 11.6) fechar arquivo 0.08075666 >close(arq) 15) Testes estatísticos z,t,f, χ 2 11.7) Redirecionando saída do R para arquivo. Em que teste é a estatistica do teste em questão podendo ser z,t,f, > sink('resultados') Rejeita H0 Região Crítica 11.8) Retorna saída do R para tela > sink() 12) Decisão e Iteração 12.1) Estrutura de controle if if (condicao){ #caso verdadeiro }else if(condicao){ #caso verdadeiro }else{ #caso falso } 12.2) Estrutura de repetição for for (variavel in inicio:fim){ # executa codigo } p-value< Não Rejeita H0 α p-value> 2 Rejeita H0 Região Crítica α p-value< teste teste< teste α χ α teste> teste α Existem ampliações deste quadro, veja na pag 221 Situação H0: 2 σ =σ 2 0 # testando a variância σ 21=σ 22 # testando duas variâncias Teste 2 χ (qui-quadrado) Não simétrico, bi e unicaudal f (teste f) Não simétrico, bi e unicaudal Equação χ 2=∑ X i− ̄X σ 2 F= Exemplo 2 = (n−1) s 2 σ0 S 21 /σ 21 S 22 /σ 22 Pág 162, exp 8.10 Pág 233, exp 10.13 Pág 233, exp 10.14 12.3) Estrutura de repetição while Resumo R. Prof. Dr. Catalunha - Versão atualizada em 12/11/2013 às 16:13 hs Página 2 de 4 μ=μ0 # testando a média σ # sendo conhecido μ=μ0 # testando a média μ1 =μ 2 # amostras comparativas de médias σ # desconhecido z (normal) Simétrico, bi e unicaudal t (teste t de Student) Simétrico, bi e unicaudal ̄x−μ z= σ 0 √n Pág 155, exp 8.6 Pág 215, exp 10.4 ̄x −μ 0 S √n Pág 164, exp 8.14 Pág 217, exp 10.5 t= aov1 <- aov(obs ~ trat, data=quadro) #Análise de Variancia CAB aov1 <- aov(obs ~ trat + bloco, data=quadro) #Análise de Variancia FAT aov1 <- aov(obs ~ fa*fb, data=quadro) summary(aov1) 18) Gerar Graficos 16) Regressão Linear e Não-Linear 16.1) Estrutura do arquivo padrão de entrada. Primeira linha é o cabeçalho. Separador por espaço y 1 2 3 x1 x2 4 6 5 7 6 9 18.1) Envia gráficos para arquivo. Se plot mostra vários gráficos use %d para numerar as saida automaticamente. Após voltar dispositivo para tela. >png(file=“graficoA%d.png”) Após voltar dispositivo para tela. >dev.off() 18.2) Exemplos de gráficos. 16.2) Script para análise Regressão Linear eqreg<-"y~x" ou "y~x+I(x^2)" ou "y~x1+x2" dados<-read.table(file='dados',head=T) coefreg<-lm(eqreg,data=dados) cor(dados) confint(coefreg) plot(coefreg) summary(coefreg) anova(coefreg) influence(coefreg) predict.lm(coefreg,newdata=data.frame(x=c(...)),interval="confi dence",se.fit=T) predict.lm(coefreg,newdata=data.frame(x=c(...)),interval="predi ction",se.fit=T) invisible(library(MASS)) stepAIC(coefreg,direction="both") invisible(library(MPV)) PRESS(coefreg) invisible(library(wle)) mle.cp(coefreg) x<-c(1,2,3,4,5,6,7,8,9) y1<-3*log(x) y2<-10/x y3<-log(x) plot(x,y1,ann=FALSE,type='o', col='red',lty=1,lwd=1,pch=22,cex=1,ylim=c(0,10),xlim=c(0,10)) lines(x,y2,col='blue',lty=2,lwd=3) points(x,y3,col='green',lwd=5,pch=21,cex=5) title(main='Grafico', col.main='blue', font.main=1) title(xlab='xXxX', col.lab='black', font.lab=2) title(ylab='yYyY', col.lab='black', font.lab=3) legend('topright',legend=c('simbolo+linha','linha','simbolo'),c ol=c('red','blue','green'),lwd=c(1,3,5),lty=c(1,2,0),pch=c(22,N A,21)) Em que: ann=FALSE(sobrescreve título dos eixos x e y). type=Tipo de grafico (p=ponto;l=linhas;o= ponto e linha). col=cor do grafico(red;blue;green;...). lty=tipo de linha, veja ilustração. lwd=espessura da linha. pch=tipo do ponto,veja ilustração. cex=tamanho do ponto. xlim=limites de x. ylim=limites de y. main=título do grafico. xlab=texto do eixo x. ylab=texto do eixo y. col.main=cor do texto do titulo. col.lab=cor do texto do eixo. font.main=tipo da fonte do título (1=simples;2=negrito;3=italico;4=negrito e itálico). 16.3) Script para análise Regressão Não-Linear eqreg<-"y~1/x1+x2" dados<-read.table(file=”dados”,head=T) coefreg<-nls(eqreg,data=dados,start=list(x1=0.1,x2=0.2)) … Apesar de bastante otimizado, este procedimento não-linear de ajustamento/regressão depende do número de dados, do tipo de equação a ser ajustada e das estimativas iniciais dos coeficientes, podendo não convergir satisfatoriamente em alguns casos. 17) Delineamento Experimental 17.1) Estrutura do arquivo padrão de entrada. Primeira linha é o cabeçalho. Separador por espaço. Os Delineamentos Esperimentais serão: (1) Inteiramente Casualizado – IC. (2) Completamente Aleatorizado em Bloco – CAB. (3) Fatoriais – FAT. A tabela a seguir apresenta a estrutura dos dados de entrada para cada um, em que: coluna “trat”, “bloco”,”fa” e “fa” do tipo factor, “obs” do tipo numérica. As observações podem ter tamanhos diferentes para cada tratamento IC CAB FAT trat obs trat bloco obs fa fb obs 1 y 1 1 y 1 1 y 1 y 1 2 y 1 1 y 1 y 1 3 y 1 2 y 2 y 2 1 y 1 2 y 2 y 2 2 y 2 1 y 2 y 2 3 y 2 1 y 2 y 2 2 y 2 2 y 17.2) Script de análise #Leitura dos dados IC quadro <read.table(file='dados',head=T,colClasses=c(trat='factor',obs=' numeric')) #Leitura dos dados CAB quadro <read.table(file='dados',head=T,colClasses=c(trat='factor',bloco ='factor',obs='numeric')) #Leitura dos dados FAT quadro <read.table(file='dados',head=T,colClasses=c(fa='factor',fb='fac tor',obs='numeric')) #Análise de Variancia IC Resumo R. Prof. Dr. Catalunha - Versão atualizada em 12/11/2013 às 16:13 hs Página 3 de 4 resultado dos comandos. /ie_catalunha_tarefa/resultados > dados <- read.table("dados", head = T) > summary(dados) x y Min. :1.0 Min. :4.0 1st Qu.:1.5 1st Qu.:4.5 Median :2.0 Median :5.0 Mean :2.0 Mean :5.0 3rd Qu.:2.5 3rd Qu.:5.5 Max. :3.0 Max. :6.0 > sink() 21.4) Processando a analise a partir de um script shell, considere o script /cn_catalunha_tarefa/estatistica.sh #!/bin/bash Rscript estatistica.sr 21.5) Mudando a permissão do script para execução, caso necessário $ chmod 777 estatistica.sh 19) Letras Gregas e Equações matemáticas Use os nomes das letras assim: Α α alpha Β β beta 21.6) Processando o script shell, teremos o mesmo resultado do item 21.2 $ ./estatistica.sh Γ γ gamma Δ δ delta Ε ε epsilon Ζ ζ zeta Η η eta Θ θ theta Ι ι iota Κ κ kappa Λ λ lambda Μ μ mu Ν ν nu Ξ ξ xi Ο ο omicron Π π pi Ρ ρ rho Σ σ sigma Ττ tau Υ υ upsilon Φ φ phi Χ χ chi Ψ ψ psi Ωω omega 20) Testes de Hipoteses 22) Referências Bibliograficas Maior parte deste material foi escrito com base no estudo e entendimento da teoria matemática e do software. Contudo algumas partes foram contribuições adaptadas dos seguintes autores. (1) http://www.statmethods.net/advgraphs/axes.html (2) http://stat.ethz.ch/R-manual/ 2 Em que teste é a estatistica do teste em questão podendo ser z,t,f, χ se H0: μ = 0 e H1: μ ≠ 0 Rejeita H0 Não Rejeita H0 Rejeita H0 Região Crítica Região Crítica p-value< α teste< teste α p-value> α teste p-value< α teste> teste α 21) Via terminal e Script Shell 21.1) Considere o seguinte programa /ie_catalunha_tarefa/estatistica.sr sink('resultados') dados<-read.table('dados',head=T) summary(dados) sink() /ie_catalunha_tarefa/dados x 1 2 3 y 4 5 6 21.2) Processando programa via terminal, modo 1. $ Rscript estatistica.sr Neste caso o script r é processado mas não mostra os comandos de entrada, apenas resultado do comando. /ie_catalunha_tarefa/resultados x Min. :1.0 1st Qu.:1.5 Median :2.0 Mean :2.0 3rd Qu.:2.5 Max. :3.0 y Min. :4.0 1st Qu.:4.5 Median :5.0 Mean :5.0 3rd Qu.:5.5 Max. :6.0 21.3) Processando programa via terminal, modo 2. $ Rscript -e "source('estatistica.sr',echo=T)" estatistica.sr Neste caso o script r é processado e mostra todos os comandos de entrada e o Resumo R. Prof. Dr. Catalunha - Versão atualizada em 12/11/2013 às 16:13 hs Página 4 de 4