Apostila R - GenMelhor

Apostila R - GenMelhor

(Parte 1 de 4)

Software Livre R: aplicação estatística

Emanuel Fernando Maia de Souza

Luiz Alexandre Peternelli

Márcio Pupin de Mello .

1. Algo sobre o R5
1.1. Introdução5
1.2. O programa5
1.3. Como instalar6
2. Iniciando o R7
2.1. Símbolos ou comandos importantes7
2.2. Obtendo ajuda8
2.3. Algumas operações aritméticas8
2.4. Manipulando objetos9
2.4.1. Criando objetos9
2.4.2. Listando objetos10
2.4.3. Removendo objetos1
2.5. Atributos dos objetos1
3. Alguns objetos especiais13
3.1. Vetores13
3.1.1. Seqüências13
3.1.2. Usando o comando seq()14
3.1.3. Usando rep()14
3.2. Listas15
3.2.1. Algumas funções que retornam listas15
3.3. Matrizes17
3.3.1. Criando matrizes17
3.3.2. Obtendo informações sobre a matriz17
3.3.3. Mais sobre como construir matrizes18
3.3.4. Índices das matrizes19
3.3.5. Mais sobre índices20
3.4. Data.frame21
3.4.1. Lendo um data.frame de um arquivo texto21
3.4.2. Índices como em matrizes e nomes como em listas2
3.4.3. Adicionando Colunas23
3.5. Caracteres e Fatores23
3.6. Arrays23
4. Entrando com dados25
4.1. Uso da função scan()25
4.2. Uso da função edit()25
4.3. Uso da função read.table()26
5.1. Algumas funções disponíveis28
5.1.1. Usando alguns tipos de combinação de operações:29
6. Salvar ou ler arquivos *.R31
7. Criando funções32
7.1. Entendendo o conceito de função32
7.2. Execuções condicionais3
7.3. Funções envolvendo ciclos3
7.3.1. Função para plotar símbolos35
8. Estatística descritiva36
8.1. Algumas notações36
8.1.1. Somatório36
8.1.2. Produtório37
8.2. Medidas de posição amostral37
8.2.1. Média37
8.2.2. Mediana37
8.2.3. Moda38
8.3. Medidas de dispersão amostral39
8.3.1. Variância39
8.3.2. Desvio padrão39
8.3.3. Amplitude total39
8.4. Covariância e Correlação40
9. Sobre probabilidade41
9.1. Algumas Distribuições41
9.1.1. Binomial43
9.1.2. Poisson4
9.1.3. Normal45
9.2. Geração de números aleatórios46
9.2.1. Gerar números em intervalos pré-estabelecidos46
9.2.2. Gerar números de uma distribuição de interesse46
10. Criando gráficos com o R48
10.1. Uso da função plot()48
10.1.1. Um gráfico simples48
10.1.2. Adicionando mais dados a um gráfico49
10.1.3. Mudando o padrão dos pontos50
10.1.4. Mudando as linhas50
10.1.5. Definindo o intervalo dos eixos50
10.1.8. Gráficos múltiplos52
10.1.9. Parâmetros Gráficos53
10.2. Histogramas54
10.2.1. Um exemplo bem simples54
10.2.2. Alterando alguns parâmetros5
10.2.3. Ogiva57
10.3. Gráficos de barras57
1. Testes Estatísticos58
1.1. Teste t (de Student)58
1.1.1. Para uma média58
1.1.2. Para duas médias independentes59
1.1.3. Para duas médias dependentes60
1.2. Teste F60
1.3. Outros testes62
1.3.1. Qui-quadrado62
1.3.2. Kolmogorov-Smirnov62
1.3.3. Teste para a normalidade - shapiro.test()63
12. Análise de Variância (ANOVA)65
12.1. DIC65
12.2. DBC6
12.3. Fatorial69
12.3.1. Experimentos com 2 fatores segundo o DIC69
12.3.2. Fatorial usando o DBC70
12.4. Experimentos em Parcelas Subdivididas71
12.4.1. Um exemplo segundo o DBC71
12.5. Teste de Comparações Múltiplas73
12.5.1. Teste Tukey73
13. Regressão74
13.1. Polinomial Simples74
13.1.1. Linear74
13.1.2. De grau maior que 176
13.2. Polinomiais Múltiplos7
13.2.1. Superfície de Resposta79
13.3. Modelos não lineares80

1. Algo sobre o R

O uso de pacotes estatísticos para a análise de dados é de grande importância no que se refere à análise e a interpretação de resultados. Contudo observa-se que estes apresentam um custo de aquisição relativamente elevado, ou a criação de programas de alternativos. Dentre os softwares de domínio público, livres, que podem ser utilizados para análise de dados em geral, encontra-se o Ambiente R, ou simplesmente R, conforme usualmente chamado pelos seus usuários, apresenta código fonte aberto, podendo ser modificado ou implementado com novos procedimentos desenvolvidos por qualquer usuário a qualquer momento. Além do que, o R com um grande número de colaboradores das mais diversas áreas do conhecimento.

O R torna-se, portanto, uma importante ferramenta na análise e na manipulação de dados, com testes paramétricos e não paramétricos, modelagem linear e não linear, análise de séries temporais, análise de sobrevivência, simulação e estatística espacial, entre outros, além de apresentar facilidade na elaboração de diversos tipos de gráficos, no qual o usuário tem pleno controle sobre o gráfico criado.

O R pode ser obtido gratuitamente em http://cran.r-project.org, onde é apresentado em versões de acordo com o sistema operacional UNIX, Windows ou Macintosh. Além disso, encontra-se neste site mais informação sobre a sua utilização e uma central de correspondências onde profissionais de várias áreas do conhecimento podem contribuir na implementação de novos recursos assim como responder a dúvidas dos demais usuários.. Como o R é uma linguagem de programação orientada a objetos o usuário pode criar suas próprias funções, e sua própria rotina na análise de dados. Outro atributo do R é sua capacidade de interagir com outros programas estatísticos, bem como de banco de dados.

O R é uma linguagem orientada a objetos criada em 1996 por Ross Ihaka e Robert

Gentleman que aliada a um ambiente integrado permite a manipulação de dados, realização de cálculos e geração de gráficos. Semelhante à linguagem S desenvolvida pela AT&T’s Bell Laboratories e que já é utilizada para análise de dados (veja, por exemplo, Crawley, 2002), mas com a vantagem de ser de livre distribuição.

É importante salientar que o R não é um programa estatístico, mas que devido a suas rotinas permite a manipulação, avaliação e interpretação de procedimentos estatísticos aplicado a dados. O R Core Team (“defensores e detentores” do R o classificam como Ambiente R dado a suas características, entretanto, o abordaremos como um sistema integrado que permite a execução de tarefas em estatística).

Além dos procedimentos estatísticos o R permite operações matemáticas simples, e manipulação de vetores e matrizes. Assim como confecção de diversos tipos de gráficos.

Para a instalação do R basta conectar-se ao site http://cran.r-project.org, em CRAN

“Comprehensive R Archive Network” escolher o local mais próximo de onde você encontra-se. No caso de Viçosa-MG: http://www.insecta.ufv.br/CRAN Dar um clique duplo no link que corresponde ao sistema operacional do seu computador, e depois no link base, em seguida escolha o arquivo executável.

Agora basta seguir a rotina de instalação, e após instalado deve-se iniciar o R e clicar na barra de ferramentas em:

Packages, UPDATE PACKAGES FROM CRAN; para receber as versões atualizadas dos principais pacotes (é necessário que o computador esteja conectado na internet).

Com o R iniciado você verá o símbolo “>” em vermelho, que é o prompt do R (conhecido também como R Console) indicando que o sistema está pronto para receber seus comandos. Acima do prompt em cor azul encontram-se algumas informações sobre o sistema e alguns comandos básicos.

As funções disponíveis ficam guardadas em uma livraria localizada no diretório

R_HOME/library (R_HOME é o diretório onde foi instalado o R). Esse diretório contém “pacotes de funções” (conhecidos como packages) que, por sua vez, estão estruturadas em diretórios. Estes são os principais pacotes do R. Todavia existem inúmeros outros pacotes que podem ser encontrados no CRAN. O pacote chamado BASE constitui o núcleo do R, contendo as funções básicas. Cada um desses pacotes instalados possui um diretório próprio, por exemplo, para o pacote BASE existe um caminho R_HOME/library/base/R/base com um arquivo em código ASCII que contém todas as funções desse pacote. Junto com o pacote base existem outros pacotes que já vêem carregados com o R. Essa estrutura permite que o seja necessário menos recursos computacionais para operar com o R. Os pacotes podem ser carregados na memória a qualquer instante através da linha de comando do R digitando library(nome_do_pacote). Para saber quais são os pacotes carregados basta digitar search(). Para se trabalhar com o R são necessários alguns conceitos que serão discutidos neste material e se constitui o foco deste curso.

Ação Comando Sair do programa q()

Salva o trabalho realizado save.image()

Lista todos os objetos da área de trabalho atual ls()

Remove o objeto x rm(x)

Remove os objetos x e y rm(x,y)

Dado ausente (data missing) NA

Mostra todos os pacotes instalados library()

Carregar (p.ex.) o pacote nlme require(nlme)

Para a execução de um linha de comando deve-se pressionar a tecla “Enter”

A ajuda em linha do R pode seu muito útil quando se deseja saber qual função utilizar ou como utilizar uma função determinada função. Na tabela abaixo são listados alguns comandos para realizar buscas no R:

Ação de Ajuda Comando Procurar por “multivariate” em todos os pacotes instalados help.search(“multivariate”)

Obter ajuda sobre o comando X help(comandoX)

Iniciar ajuda no browser padrão instalado help.start() Obter ajuda sobre (p.ex.) o pacote cluster help(package=cluster)

Comando que procura objetos (p.ex.) pelo nome anova apropos(“anova”)

Mostrar exemplos do “comandoX” example(comandoX) Listar as funções e operações contidas no pacote base do R ls(“package:base”)

Uma outra opção para obter ajuda sobre funções, documentos, comandos do R é fazer uma busca rápida no site: http://finzi.psych.upenn.edu/ .

Para saber como uma função foi escrita e a qual classe ela pertence, basta digitar o nome da função completo e teclar entrer.

2.3. Algumas operações aritméticas

Você pode utilizar o R como uma calculadora, inclusive para cálculos com matrizes, como veremos em capítulos subseqüentes. No entanto, agora, nos atemos apenas a cálculos simples.

Exemplos:

Algumas operações podem ser realizadas apenas com os sinais de operação aritmética. 2+3 #somando estes números [1] 5 2+3*2 #observando prioridades: multiplicação primeiro, lembra?! [1] 8 2**4 #potências utilizado ** ou ^ [1] 16

Outras funções são usadas como as encontradas em calculadoras científicas. sqrt(9) #raiz quadrada [1] 3 sin(3.14159) #seno de Pi radianos é zero

[1] 2.65359e-06 sin(pi) #bem mais próximo. [1] 1.224606e-16 factorial(4) #4!=4*3*2*1 [1] 24

A tabela abaixo mostra algumas operações possíveis de ser realizadas no R:

Função Significado log(x) Log de base e de x exp(x) Antilog de x (ex) log(x,n) Log de base n de x Log10(x) Log de base 10 de x sqrt(x) Raiz quadrada de x choose(n,x) Combinação de n por x: n!/(x!(n-z)!) cos(x), sin(x), tan(x) Funções trigonométricas de x em radianos acos(x), asin(x), atan(x) Funções trig. Inversas de x em radianos

Existem outras inúmeras operações no R que não foram citadas aqui por não ser conveniente, porém estão disponíveis e podem ser encontradas em manuais introdutórios, consultar help.search().

Um objeto pode ser criado com a operação de “atribuição”, o qual se denota como uma flecha, com o sinal de menos e o símbolo “>” ou “<”, dependendo da direção em que se atribui o objeto. Ou com um único sinal de igual. É importante dizer que o nome de um objeto deve começar com uma letra qualquer, maiúscula ou minúscula, que pode ser seguida de outra letra, número, ou caracteres especiais como o ponto.

Exemplo:

x<-10 #o objeto x receberá o valor 10 15->y #o objeto y receberá o valor 15 X<-6 #o objeto X receberá o valor 6 Y=15 # o objeto Y receberá o valor 15

Observe que existe diferença entre maiúscula e minúscula (mesmo para o Sistema Operacional Windows©) x [1] 10

X [1] 6

OBS.: O símbolo “#” indica para o R um comentário. Outro Exemplo:

O R pode ser usado para fazer cálculos. Você também pode armazenar o resultado de um cálculo em um objeto qualquer.

t<-sqrt(4) #objeto x irá receber o valor da operação indicada

Para mostrar o conteúdo do objeto criado “t”, digite apenas o nome do objeto na linha de comando do R, como abaixo:

t [1] 2

O número “1” entre colchetes significa que a visualização do objeto inicia-se pelo seu primeiro elemento. Esse comando é um comando implícito do comando print(), ou seja, escrevendo print(t) obteríamos o mesmo resultado que escrevendo apenas t (dentro de funções esse comando deve ser usado explicitamente).

Agora que você já criou alguns objetos você certamente quer ter controle sobre eles. A função ls() mostra os objetos que você tem.

Exemplo:

a<-1; b<-2; c<-3 #observe o uso do “;” para separar os comandos x<-“uso”; y<-“do comando”; z<-“list()” ls() #lista todos os objetos existentes na memória [1] "a" "b" "c" "x" "y" "z"

Note que o resultado é impresso como um vetor - porque de fato é um vetor! No caso, um vetor de caracteres com os nomes dos objetos existentes. Como em qualquer outra função do R você pode armazenar o resultado em um objeto, inclusive a ls(). Veja:

obj<-ls() #armazena a lista de objetos obj #exibe a lista armazenada no objeto “obj”

[1] "a" "b" "c" "x" "y" "z"

Provavelmente você não terá razão para fazer isto com freqüência, ou talvez nunca, mas isto ilustra como o R opera ...

Há uma função para remover objetos: remove() (ou simplesmente rm()). Para usar esta função basta fornecer o objeto a ser removido:

x<-1 #cria o objeto x y<-2 #cria o objeto y a<-10; b<-20 #cria os objetos a e b rm(a) #remove o objeto a remove(b) #remove o objeto b rm(x,y) #remove os objetos x e y

Para remover TODOS os objetos na sua área de trabalho digite:

remove(list=ls())#remove TUDO!!!!!!

OBS.: Tome cuidado ao usar esta função, pois uma vez excluído, o objeto se torna irrecuperável. Além disso, o comando supracitado para remoção de todos os objetos não exibe mensagem de confirmação de exclusão!

Já foi falado várias vezes que o R trabalha com objetos. Esses possuem nome, conteúdo e um atributo associado que especifica qual o tipo de dados representados pelo objeto. Em uma análise estatística, por exemplo, mesmo que dois objetos contenham o mesmo valor, os resultados se diferem quando esses possuem atributos diferentes. A maneira que as funções atuam nos objetos também depende de seu atributo.

Todo objeto possui atributos intrínsecos: tipo e tamanho. Com relação ao tipo ele pode ser: numérico, caractere, complexo e lógico. Existem outros tipos, como por exemplo, funções ou expressões, porém esses não representam dados.

As funções mode() e length() mostram o tipo e tamanho de um objeto, respectivamente.

Exemplo:

x<-c(1,3,5,7,1) mode(x); length(x) #mostra o tipo e tamanho do objeto x

[1] "numeric" [1] 5 a<-“Angela”; b<-TRUE; c<-8i #objetos com tipos diferentes mode(a); mode(b); mode(c) #exibe os atributos “tipo” dos objetos

[1] "character" [1] "logical"

[1] "complex"

Existe uma outra forma de se verificar atributos em um objeto, como por exemplo, usando a palavra “is”, seguida de um ponto e nome do atributo a qual se deseja verificar.

is.numeric(x) #verifica se o objeto x tem atributo de numérico [1] TRUE

Foi retornado “TRUE” (do inglês, VERDADEIRO). Caso o objeto x fosse do tipo caractere, por exemplo, o resultado seria FALSE.

A tabela abaixo sintetiza os objetos e seus possíveis atributos (tipos). Veja:

Objeto Tipos Suporta tipos diferentes vetor numérico, caractere, complexo ou lógico Não fator numérico ou caractere Não matriz numérico, caractere, complexo ou lógico Não array numérico, caractere, complexo ou lógico Sim data.frame numérico, caractere, complexo ou lógico Sim ts numérico, caractere, complexo ou lógico Sim lista numérico, caractere, complexo, lógico, função, expressão, etc Sim

OBS.: ts é uma série temporal e não será abordada neste material

Saber as diferenças entre os diversos tipos de objetos é importante para um uso mais adequado do R. Existem vários tipos de objetos que podem ser criados e manipulados.

O R pode trabalhar com vetores - objetos que armazenam mais de um valor. A função c() é usada para criar um vetor a partir de seus argumentos.

Exemplo:

x<-c(2,3,5,7,1) #os 5 primeiros números primos x #digitando o nome é exibido o conteúdo do objeto

[1] 2 3 5 7 1

y<-c(x,13,17,19)#adicionando mais três números primos

Os argumentos de c() podem ser escalares ou vetores. y

k<-c(‘a’,’b’,’c’,’d’)#ou caracteres alfanuméricos

[1] 2 3 5 7 1 13 17 19 k

[1] "a" "b" "c" "d"

Há ainda outras formas de se gerar um vetor. Por exemplo, para gerar uma seqüência de números inteiros usam-se os “dois pontos”. Veja:

a<-1:10 #cria uma seqüência de inteiros de 1 a 10 a #exibe o conteúdo do objeto “a”

[1] 1 2 3 4 5 6 7 8 9 10

Se o vetor é muito longo e não "cabe" em uma linha o R vai usar as linhas seguintes para continuar imprimindo o vetor.

longo<-100:50 #seqüência decrescente de 100 a 50 longo #exibe o conteúdo do objeto

[1] 100 9 98 97 96 95 94 93 92 91 90 89 8 87 86 85 [17] 84 83 82 81 80 79 78 7 76 75 74 73 72 71 70 69

[3] 68 67 6 65 64 63 62 61 60 59 58 57 56 5 54 53

[49] 52 51 50

Os números entre colchetes não fazem parte do objeto e indica a posição do vetor naquele ponto. Pode-se ver que [1] indica que o primeiro elemento do vetor está naquela linha, [17] indica que a linha seguinte começa pelo décimo sétimo elemento do vetor e assim por diante.

Uma maneira mais geral de produzir seqüências de valores é usando a função seq() que tem como argumentos o início, fim e passos da seqüência.

seq(10,1,3) #tentando ordem inversa

seq(1,10,1) #o mesmo que 1:10 [1] 1 2 3 4 5 6 7 8 9 10 seq(1,10,2) #de 2 em 2; observe que não terminará no valor 10 [1] 1 3 5 7 9 Erro em seq.default(10, 1, 3) : sinal errado no argumento 'by'

seq(10,1,-3) #a forma correta é usando passo negativo

[1] 10 7 4 1

Outra função útil para produzir vetores é a função rep() que retorna o primeiro argumento repetido o número de vezes indicado pelo segundo argumento:

rep(1,10) #cria um repetição [1] 1 1 1 1 1 1 1 1 1 1 rep(c(1,2),10) [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 rep(c(0,1),c(10,5)) #para cada valor, um número de repetições [1] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1

Pode-se ainda usar variáveis (objetos) como argumentos das funções:

X<-10 rep(c(1,2),X) #cria um repetição do objeto “c(1,2)” X vezes

Se ambos os argumentos tem mais de um elemento, então cada elemento do primeiro argumento será associado ao elemento correspondente do segundo argumento.

Exemplos:

rep(4:1,1:4) #examine cuidadosamente este exemplo rep(1:5,each=2) #o mesmo número de repetições para tordos elementos

Listas são objetos curiosos. Elas permitem combinar diferentes tipos de objetos em um mesmo objeto. Estas coisas podem ser vetores, matrizes, números e/ou caracteres e até mesmo outras listas.

Exemplo:

R<-list(versao=2.4, origem='Áustria', notas=c(9,10,8)) R

$versao [1] 21

(Parte 1 de 4)

Comentários