Escolar Documentos
Profissional Documentos
Cultura Documentos
Usando a linguagem R
Setembro/2015 - Bragança-Pará
i
Prefácio
D esde muito tempo, a Linguagem R ganhou popularidade entre muitos usuários de software
livre e talvez seja uma das plataformas mais bem sucedida neste setor.
A popularidade do R se deve ao grande número de desenvolvedores entusiastas pelo
mundo tudo e aos diversos pacotes que podem ser agregados à estrutura de base.
Também tem sido bem desenvolvido e testado por vários estatísticos, matemáticos, biólogos, etc,
formando uma imensa comunidade de desenvolvedores.
A linguagem R o está disponível para computadores pessoais, podendo ser rodado nos sistemas
operacionais Windows, Mac OS e Linux (Ubuntu, Debian, etc).
Além do R, ele possui várias interfaces gráficas, sendo a RStudio uma das mais amigáveis,
parecendo-se muito com formato de janelas das linguagens Matlab, Scilab e Octave. Isto dá maior
capacidade aos usuários novatos de se familiarizam come ele e se iniciarem à programação em
Linguagem Interpretável de uma forma mais amigável. Tudo isso, sem perder de vista o foco no
desenvolvimento gradual dos testes estatísticos e poder construir mentalmente os procedimentos de
cálculos e visualizar resultados. Trata-se, portanto, de uma ferramenta muito útil ao ensino de uma
disciplina considerada muito abstrata.
Objetivos e pré-requisitos
Este material possui a pretensão de ser uma introdução autônoma ao R/Rsudio, com um enfoque
às questões de Engenharia Pesca, Engenharia Agronômica. Sendo a Engenharia de Pesca um curso
pluridisciplinar, torna-se um desafio abordar todos as suas áreas: Bioecologia pesqueira, Tecnologia do
Pescado, Qualidade do Pescado (Física, Química, Microbiológica, Nutricional e Sensorial dos
pescados), a Oceanografia, a Aquicultura e seus diversos desenhos experimentos e análise, bem
como aspectos de estatística multivariada e séries temporais da pesca.
Dessa forma, este material poderá ser útil, pelo menos em parte, a alunos de outros cursos, como
Engenharia de Alimento, Agronomia, Nutrição, Biologia, Química, etc.
Organização do texto
Este material faz inicialmente uma apresentação introdutório do R e RStudio para os alunos
ii
ganharam logo segurança no simples ato de abrir, construir e testar suas aplicações e conhecer o
ambiente do RStudio e suas operações mais elementares A Segunda parte visa apresentar os testes
de inferência esstatística paramétricos e não paramétricos. A terceira visa abordar as análises
multivariada. A Quarta engloba aspectos de Regressão Parcial dos mínimos quadrados e Regressão
por Componentes Principais; A quinta parte visa abordar os desenhos de experimentos.
Agradecimentos
Gostaria de agradecer a todos os alunos das turmas de Engenharia de Pesca da Universidade
Federal do Pará, por terem sido minhas “cobaias” no ensino de estatística.
Aos materiais disponibilizados gentilmente por diversas pessoas, que ajudaram na construção
desta livro.
À Editora da UFPA por ajudar na parte da Editoração deste material do e ter o ótimo acabamento.
Aos professores da FEPESCA, por terem cedidos seus resultados de pesquisa e incluir como
dados de apoio.
SUMÁRIO
Parte I – Introdução ao R e RStudio .......................................................................................................... 78
1 Introdução e história do R (Fonte: Wikipedia)...................................................................................... 1
1.1 Ferramentas de produtividade .............................................................................................. 2
1.2 Recursos Estatísticos ............................................................................................................ 2
1.3 Recursos de programação .................................................................................................... 3
2 O Ambiente do R/RSTUDIO ................................................................................................................. 3
2.1 O Workspace (Espaço de trabalho) ................................................................................... 45
2.2 A Guia History ........................................................................................................................ 5
2.3 Mudando o Diretório de trabalho .......................................................................................... 6
2.4 O Editor de Roteiros (Scripts) ............................................................................................. 78
2.5 A guia de pacotes ................................................................................................................ 89
2.6 Instalando um pacote ............................................................................................................ 9
2.7 A guia Plots .......................................................................................................................... 10
2.8 Exportando gráficos .............................................................................................................11
3 Comando iniciais importantes e operações matemáticas básicas ................................................... 12
3.1 Símbolos ou comandos importantes .................................................................................. 12
3.2 Algumas operações aritméticas .......................................................................................... 13
4 Manipulando objetos ........................................................................................................................... 14
4.1 Criando objetos.................................................................................................................... 14
4.2 Listando objetos .................................................................................................................. 15
4.3 Removendo objetos ........................................................................................................ 1516
4.4 Atributos dos objetos ........................................................................................................... 16
5 Alguns objetos especiais no R............................................................................................................ 17
5.1 Vetores ............................................................................................................................. 1718
5.2 Uso de Listas ................................................................................................................... 1820
5.3 Matrizes............................................................................................................................ 2022
5.4 Data.frame ....................................................................................................................... 2528
5.5 Caracteres e Fatores....................................................................................................... 2731
5.6 Arrays ............................................................................................................................... 2731
6 Entrando com dados no R .............................................................................................................. 2832
6.1 Uso da função scan() ...................................................................................................... 2832
6.2 Uso da função edit() ........................................................................................................ 2833
6.3 Uso da função read.table().............................................................................................. 2933
7 Operação com vetores e matrizes .................................................................................................. 3034
7.1 Algumas funções disponíveis ......................................................................................... 3237
8 Salvar ou ler arquivos *.R ............................................................................................................... 3339
9 Criação de gráficos ......................................................................................................................... 3339
9.1 Uso da função plot() ........................................................................................................ 3440
10 Elementos Básicos de Programação no R/RStudio .............................................................. 4048
10.1 Escrevendo um Arquivo de Roteiro (script file) .............................................................. 4148
10.2 Os operadores lógicos .................................................................................................... 4149
10.3 Os comandos de laço (loop) ........................................................................................... 4249
10.4 Escrevendo uma função ................................................................................................. 4452
10.5 Execuções condicionais .................................................................................................. 4554
10.6 Funções envolvendo ciclos ............................................................................................. 4654
Parte II - Estatística Descritiva................................................................................................................ 4858
11 Estatísticas Descritivas ........................................................................................................... 4959
11.1 Algumas notações ........................................................................................................... 4959
11.2 Construção de Intervalo de Classes ............................................................................... 5060
11.3 Histogramas e polígonos de frequencia ......................................................................... 5162
11.4 Construção de boxplot .................................................................................................... 5770
12 Testes Estatísticos Paramétricos ............................................................................................ 5870
12.1 Testes para avaliar a normalidade dos dados ............................................................... 5871
12.2 Qui-quadrado ................................................................................................................... 5871
12.3 Teste para a normalidade - shapiro.test()....................................................................... 6072
12.4 Teste de chi-quadrado ..................................................................................................... 6073
12.5 Teste t (de Student) ......................................................................................................... 6174
12.6 Teste para 2 mostras indepenentes ............................................................................... 6275
12.7 Teste para duas amostras independentes com o teste F .............................................. 6275
12.8 Teste para 2 amostras pareadas (ou dependentes) ...................................................... 6578
13 Anova a 1 fator ........................................................................................................................ 6579
13.1 DIC ................................................................................................................................... 6680
13.2 Teste de Comparações Múltiplas.................................................................................... 7085
13.3 Anova fatorial ................................................................................................................... 7286
13.4 Experimentos em Parcelas Subdivididas ....................................................................... 7589
14 Testes Estatatisticos Não-Paramétricos ................................................................................. 7791
14.1 Teste de Mann-whitney ................................................................................................... 7791
14.2 Teste de Wilcoxon ........................................................................................................... 7993
14.3 Teste de Kuskall-Wallis ................................................................................................... 8094
14.4 Teste de Friedman ........................................................................................................... 8296
15 Regressões .............................................................................................................................. 8296
15.1 Polinomial simples ........................................................................................................... 8397
15.2 Comparação de Duas regressões .................................................................................. 8498
15.3 Comparando duas regressões por meio de uma ANCOVA ........................................ 86100
15.4 Regressão não Linear ................................................................................................... 90104
15.5 Regressão Logística...................................................................................................... 92106
Parte III – Delineamento de Experimentos .......................................................................................... 95109
16 Planejamento de Experimentos ............................................................................................ 96110
16.1 Princípios básicos da experimentação .......................................................................... 96111
16.2 . Condução do experimento ........................................................................................... 96111
16.3 . Planejamento do experimento .................................................................................... 98113
16.4 . Delineamento Inteiramente Casualizado ................................................................. 101114
Parte IV – Análise Multivariada de Dados .......................................................................................... 103115
17 Análises Multivariadas Básicas .......................................................................................... 104116
17.1 Análise de Agrupamento Hierárquico ......................................................................... 104116
17.2 Análise de Componentes principais ........................................................................... 106118
18 Referências Bibliográficas................................................................................................... 107120
Parte I – Introdução ao R e RStudio
_________________________________________________________________________________
Foi criada originalmente por Ross Ihaka e por Robert Gentleman no departamento de Estatística da
universidade de Auckland, Nova Zelândia, e foi desenvolvido por um esforço colaborativo de pessoas em
vários locais do mundo[2] .
O nome R provêm em parte das iniciais dos criadores[3] e também de um jogo figurado com a linguagem
S (da Bell Laboratories, antiga AT&T).
R é uma linguagem e ambiente similar ao S - pode ser considerado uma implementação distinta do S;
embora com importantes diferenças, muitos códigos escritos para o S rodam inalterados no R. A
implementação comercial de S é S-PLUS.
O código fonte do R está disponível sob a licença GNU[4] [5] GPL e as versões binárias pré-compiladas
são fornecidas para Windows, Macintosh, e muitos sistemas operacionais Unix/Linux.
R é também altamente expansível com o uso dos pacotes, que são bibliotecas para funções específicas
ou áreas de estudo específicas.
Um conjunto de pacotes é incluído com a instalação de R, com muito outros disponíveis na rede de
distribuição do R (em inglês CRAN).
A linguagem R é largamente usada entre estatísticos e data miners para desenvolver software de
estatística[6] [7] e análise de dados.[7] Inquéritos e levantamentos de data miners mostram que a
popularidade do R aumentou substancialmente nos últimos anos.[8] [9] [10]
1
_________________________________________________________________________________
Existem diversas GUI para R, incluindo JGR, RKWard, SciViews-R, Rcmdr e, mais recentemente,
RStudio.
Muitos editores oferecem recursos que facilitam o trabalho com o R: Emacs, Vim, jEdit, Kate, Tinn-R
GUI/Editor, entre outros. Existem plug-ins para uso com a IDE Eclipse e Vim.
Software construído de modo colaborativo, com novos pacotes e GUIs incluídos a cada intervalo de
tempo, antecipando-se até a alguns outros pacotes proprietários, como o complemento com o teste de
Scott-Knott para a Análise de Variâncias ANOVA.
A R disponibiliza uma ampla variedade de técnicas estatísticas e gráficas, incluindo modelação linear e
não linear, testes estatísticos clássicos, análise de séries temporais (time-series analysis), classificação,
agrupamento e outras. A R é facilmente extensível através de funções e extensões, e a comunidade R é
reconhecida pelos seus contributos ativos em termos de pacotes. Existem diferenças importantes, mas muito
código escrito para S corre inalterado. Muitas das funções padrão do R são escritas no próprio R, o que torna
fácil para os usuários seguir as escolhas algorítmicas feitas. Para tarefas computacionais intensivas, os
códigos C, C++, e Fortran podem ser ligados e chamados durante a execução. Usuários experientes podem
escrever código C ou Java[11] para manipular diretamente objetos R.
O R é fortemente extensível através do uso de pacotes enviados pelo utilizador para funções específicas
ou áreas específicas de estudo. Devido à sua herança do S, o R possui fortes recursos de programação
orientada por objetos, mais que a maioria das linguagens de computação estatística. Ampliar o R também é
facilitado pelas suas regras de contexto lexical.[12]
Outra força do R são os gráficos estáticos, que podem produzir imagens com qualidade para publicação,
incluindo símbolos matemáticos. Gráficos dinâmicos e interativos estão disponíveis através de pacotes
adicionais.[13]
O R tem a sua própria documentação em formato LaTeX, a qual é usada para fornecer documentação de
fácil compreensão, simultaneamente on-line em diversos formatos e em papel.
2
_________________________________________________________________________________
> 2+10
[1] 12
Como muitas outras linguagens, a R suporta matrizes aritméticas. A estrutura de dados da R inclui
escalares, vetores, matrizes, quadros de dados (similares a tabelas numa base de dados relacional) e
listas.[14] O sistema de objetos da R é extensível e inclui objectos para, entre outros, modelos de regressão,
séries temporais e coordenadas geoespaciais.
A R suporta programação processual com funções e, para algumas funções, programação orientada a
objetos com funções genéricas. Uma função genérica atua de forma diferente dependendo do tipo de
argumentos que é passado. Por outras palavras a função genérica determina (dispatches) a função (método)
específica para aquele tipo de objeto. Por exemplo, a R tem uma função genérica print() que pode imprimir
quase qualquer tipo de objeto em R com uma simples sintaxe "print(nomedoobjeto)".
Enquanto a R é maioritariamente usada por estatísticos e outros utilizadores que requerem um ambiente
para computação estatística e desenvolvimento de software, pode ser igualmente usada como uma caixa de
ferramentas para cálculo matricial geral com benchmarks de desempenho comparáveis ao GNU Octave ou ao
MATLAB.[15]
O primeiro passo no uso do R/RSTUDIO é nos familiarizarmos com o ambiente gráfico do R STUDIO.
A Figura 01 mostra o ambiente do RSTUDIO. O RSTUDIO permite interface gráfica amigável para uso da
Linguagem R.
3
_________________________________________________________________________________
Workspace e Histórico de
Editor de Script (Roteiros de comandos
Programas)
Figure 1. Interface gráfica do R, o RSTUDIO, com as suas quatro principais subjanelas destacadas
Nesta janela, aparecem as 4 principais subjanelas, se foi incluída a janela do Edito de script através do menu
File/New file/RScrit (Ou CRTL+SHIFT+N).
a) Console ou janela de comando: Local onde as operações podem ser diretamente feitas.
b) Workspace e Histórico de Comndo: espaço destinado às variáveis que estão salvas na memória, onde
é possível visualizar o nome, valor e classe da mesma. O Histórico de comando lista de comandos
realizados, organizados por data de execução, permitindo o comando ser realizado novamente com duplo
clique.
c) Editor de Scripts: Nele podemos digitar uma série de linhas de comando (Programas) e executá-los
todos de uma vez.
d) Janelas Múltiplas: Permite visualização dos arquivos que estão no Diretório de trabalho, visuaizar os
gráficos gerados, assim com a ajuda, e a instalação de pacotes específicos.
4
_________________________________________________________________________________
A guia Worspace espaço de trabalho armazena qualquer objeto, valor, função ou qualquer coisa que
você criar durante a sua sessão. No exemplo abaixo, se você clicar sobre os quadrados pontilhadas você
pode ver os dados em uma tela para a esquerda.
Figure 2. A guia workspace com setas sinalizando como podemos visualizar uma variável, dataframe ou objeto.
5
_________________________________________________________________________________
Figure 3. Guia “History mostrando os ultimos comando digitdos selecionados e sendo carregados para um script selecionado no
Editor.
É muito importante ajustar o diretório de trabalho antes de cada sessão de uso do R. A maneira mais
siples de ajustar o diretório de trabalho é conforme a Figure 4Figure 4.
Depois que você ajustar o diretório via menus (Session -> Set Working Directory-> Choosse
Directory ...(CTRL+SHIFT+K), você pode copiar e colocar o comando gerando no console para o Editor
de script, onde você está começando a fazer seu novo script.
setwd("/media/evaldo/EVALDO/Est_Pesq/Rotinas")
dir()
6
_________________________________________________________________________________
Da mesma forma, pode ser feito no windows, copiando e colocando no comando tanto do console, como
da History.
Ajustra um dretório padrão ajuda bastante, pois toda vez que o R inicia, ele abre esse diretório padrão.
O Editor de script do R (Figure 6Figure 6) é o lugar onde você mantém um registro de seu trabalho. Para
criar um novo roteiro R, você pode tanto ir em File -> New -> R Script, ou clique no ícone com o sinal +” e
selecione R Script”, ou simplesmente prssione Ctrl+Shift+N. Certifique-se de salvar o script.
7
_________________________________________________________________________________
Figure 7. Dois modos de criar um novo script no RStudio usando os menus e as janelas
8
_________________________________________________________________________________
Vamos mostrar como se instala uma pacote. Vamos instalar o pacote rgl (útil para plotar gráficos em 3D).
Ele não vem com a instalação orginal do R. Clique em na guia “packages” -> Install packages -> , escrevea o
nome do paacote na janela de pop-up e clique em install. Veja nas figuras abaixo o Antes e o Depois.
Antes
9
_________________________________________________________________________________
Depois
Figure 10. Antes e depois de se instalar o pacote. O novo pacote rgl aparece na lista de pacotes instalados.
10
_________________________________________________________________________________
Para extrair um gráfico, clique em “Export”, onde você pode salvar o arquivo como uma imagem (PNG,
JPG, etc), ou como PDF. Estas opções são úteis quando você quer somente compartilhar o gráfico ou usá-lo
num documento LaTex. Provalmente, a maneira mais fácil é copiá-lo para a área de transferência e colá-lo
diretamente no documento Word ou Writer.
11
_________________________________________________________________________________
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)
12
_________________________________________________________________________________
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().
13
_________________________________________________________________________________
4 Manipulando Objetos
4.1 Criando objetos
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 # Minúsculo
[1] 10
X # Maiúsculo
[1] 6
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 [1] 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).
14
_________________________________________________________________________________
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 frequência, ou talvez nunca, mas isto ilustra como
o R opera.
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!
15
_________________________________________________________________________________
Existe uma outra forma de se verificar atributos em um objeto, como por exemplo, usando a palavra “is”,
seguida de um ponto e o nome do atributo o 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:
16
_________________________________________________________________________________
5.1 Vetores
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.
Exemplos:
x = c(2,3,5,7,11) #os 5 primeiros números primos
x #digitando o nome é exibido o conteúdo do objeto
[1] 2 3 5 7 11
Ou caracteres alfanuméricos
k=c('a','b','c','d')
k
[1] "a" "b" "c" "d"
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 # sequência decrescente de 100 a 50
longo # exibe o conteúdo do objeto
[1] 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85
[17] 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69
[33] 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53
[49] 52 51 50
17
_________________________________________________________________________________
Os números entre colchetes não fazem parte do objeto e indicam 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.
Se ambos os argumentos têm 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º de repetições para tordos elementos
Exemplo:
R = list(versao=2.4, origem='Áustria', notas=c(9,10,8))
R
$versao
[1] 21
$origem
[1] "Áustria"
$notas
[1] 9 10 8
Listas são construídas com a função list(). Os componentes da lista são introduzidos usando a forma
usual (nome = argumento) de atribuir argumentos em uma função. Quando você digita o nome de um objeto
que é uma lista cada componente é mostrado com seu nome e valor.
Cada um desses componentes da lista pode ser acessado individualmente por seu nome antecedido pelo
símbolo “$”:
R$versao #componente “versao” da lista “R”
[1] 2.4
R$notas[2] #segundo elemento de $notas
[1] 10
Pode-se ainda acessar cada elemento pelo seu número de ordem na lista utilizando colchetes duplos:
pessoa[[1]]
[1] 2.4
pessoa[[3]]
[1] 98 95 96
Note que nada é exibido na tela porque o resultado foi armazenado no objeto “tt”.
Portanto, basta digitar o nome do objeto para exibir seu conteúdo.
tt
Two Sample t-test
data: rnorm(100) and rnorm(100)
t = -1.3792, df = 198, p-value = 0.1694
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.49861179 0.08821032
19
_________________________________________________________________________________
sample estimates:
mean of x mean of y
-0.09627982 0.10892092
Note que esta saída não se parece muito com o formato de lista visto acima. Mas o resultado é uma lista.
Você pode comprovar isso usando o comando abaixo:
is.list(tt)
[1] TRUE
E você pode listar os nomes dos componentes da lista com a função names(). Para este objeto com os
resultados do teste T temos:
names(tt)
[1] "statistic" "parameter" "p.value" "conf.int" "estimate"
[6] "null.value" "alternative" "method" "data.name"
Este componente é um vetor de tamanho 2 que mostra os limites do intervalo de confiança a 95% para
diferença de médias, que neste caso não contém o zero. Você pode estar se perguntando: mas e este
attr(,"conf.level"), o que é isto?
Isto é algo adicional chamado atributo do vetor. Atributos nos fornecem informações complementares
sobre um objeto e muitas vezes são usados internamente pelo programa. Neste caso o atributo nos diz o nível
de confiança com o qual o intervalo foi calculado.
5.3 Matrizes
Tudo feito até aqui foi baseado em vetores. Porém o R também é capaz de operar matrizes. Veja a seguir
como manipular matrizes.
20
_________________________________________________________________________________
Neste exemplo, foi construída uma matriz de 3 colunas e 4 linhas usando os números de 1 a 12. Note
que a matriz é preenchida ao longo das colunas. Para inverter este padrão, deve-se adicionar o argumento
byrow=TRUE (que em inglês significa “por linhas”) para dizer que a matriz deve ser preenchida por linhas:
matrix(x,ncol=3,byrow=TRUE) # Agora preenchendo a matriz pelas linhas
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
O valor retornado é um vetor com o número de linhas e colunas da matriz, nesta ordem. A função
summary() opera em cada coluna da matriz como se fossem vetores:
summary(x1)
V1 V2 V3 V4
Min. :1.0 Min. :4.0 Min. :7.0 Min. :10.0
1st Qu.:1.5 1st Qu.:4.5 1st Qu.:7.5 1st Qu.:10.5
Median :2.0 Median :5.0 Median :8.0 Median :11.0
Mean :2.0 Mean :5.0 Mean :8.0 Mean :11.0
3rd Qu.:2.5 3rd Qu.:5.5 3rd Qu.:8.5 3rd Qu.:11.5
Max. :3.0 Max. :6.0 Max. :9.0 Max. :12.0
21
_________________________________________________________________________________
22
_________________________________________________________________________________
Você pode extrair uma linha inteira ou uma coluna inteira usando apenas um número e a vírgula. Para
extrair uma coluna coloque o número da coluna desejada depois da vírgula. Para extrair uma linha coloque o
número da linha desejada depois da vírgula. Quando você extrai uma linha ou uma coluna o resultado é um
vetor.
z[,4] # Extraindo a quarta coluna
[1] 88 88 88 88 88 88
z[3,] # Extraindo a terceira linha
[1] 8 3 3 88 8 3 3
Pode-se ainda extrair mais de uma linha ou coluna utilizando-se um vetor de índices. Neste caso o objeto
resultante é uma matriz.
z[c(1,3,5),] # Extraindo três linhas
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 10 5 1 88 10 5 1
[2,] 8 3 3 88 8 3 3
[3,] 6 1 5 88 6 1 5
23
_________________________________________________________________________________
Agora queremos extrair todas as pessoas que tem mais de 50 anos. Podemos fazer isto com um único
comando como este:
Idosos = Pessoas[Pessoas[,2]>50,]
Idosos
[,1] [,2] [,3]
[1,] 2 55 1
[2,] 3 52 0
Note que este simples comando combina diversas operações de uma só vez. Podemos inspecionar parte
a parte do comando, começando pela parte interna:
Pessoas[,2]
[1] 43 55 52 23 46
Agora o vetor selecionado foi comparado com o número 50 para verificar quais elementos do vetor eram
maiores que este valor. O resultado foi um vetor lógico de TRUE e FALSE.
Pessoas[Pessoas[,2]>50, ]
[,1] [,2] [,3]
[1,] 2 55 1
24
_________________________________________________________________________________
[2,] 3 52 0
Ao final foram selecionadas as linhas para as quais a condição (idade > 50) foi verdadeira.
5.4 Data.frame
Data.frames são muito parecidos com matrizes - eles têm linhas e colunas, e, portanto, duas dimensões.
Entretanto, diferentemente de matrizes, cada coluna pode armazenar elementos de diferentes tipos. Por
exemplo: a primeira coluna pode ser numérica enquanto a segunda pode ser constituída de caracteres.
Esses tipos de objetos são a melhor forma de se armazenar dados onde cada linha corresponde a uma
unidade, indivíduo, ou pessoa, e cada coluna representa uma medida realizada em cada unidade, como dados
provenientes de experimentos.
Usamos a função read.table() para ler estes dados e armazená-los em um objeto. Fornecemos o nome
do arquivo (entre aspas) e o caractere de separação dos elementos (vírgula). O comando é:
OBS.: Neste comando é necessário informarmos o caminho completo do arquivo. Podemos usar a opção de
menu suspenso “Arquivo – Mudar dir...” para alterarmos o diretório corrente para o onde se encontra o arquivo
que desejamos importar. Neste caso, o comando pode citar apenas o nome do arquivo, sem a necessidade do
caminho, como abaixo:
Musicas=read.table("musica.txt",sep=",",row.names=1,quote="")
Musicas
25
_________________________________________________________________________________
V2 V3 V4 V5
CAD3004 Frank Black Frank Black 15 CD
Col4851 Weather Report Sweetnighter 6 CD
Rep2257 Neil Young Decade I 19 CD
Rep4335 Neil Young Weld 12 CD
Chp1432 Red Hot Chili Peppers Mother's Milk 13 Tape
EMI1233 Primus The Brown Album 12 Tape
Atl4500 Led Zeppelin Led Zep 3 11 CD
Note que algumas colunas são numéricas, enquanto outras são de caracteres (texto). Isto não é possível
com matrizes, apenas com data.frame e listas.
OBS.: Se as colunas forem separadas por espaços ou tabulações no arquivo texto o argumento “sep” não é
necessário.
Os nomes das colunas podem ser definidos como em listas e as colunas são selecionadas usando o símbolo $:
musicas$V5
[1] CD CD CD CD Tape Tape CD
Levels: CD Tape
Pode-se atribuir nomes às colunas usando a função names() associada a um vetor de nomes:
names(musicas)=c('Artista','Nome','Nfaixas','Formato')
musicas$Nome
[1] Frank Black Sweetnighter Decade I Weld
[5] Mother's Milk The Brown Album Led Zep 3
7 Levels: Decade I Frank Black Led Zep 3 ... Weld
Note que a primeira coluna, o numero de catálogo, não é parte do data.frame, portanto não possui um valor em
names(). Nomes de linhas podem ser definidos usando a função row.names():
row.names(musicas)
[1] "CAD3004" "Col4851" "Rep2257" "Rep4335" "Chp1432" "EMI1233" "Atl4500"
26
_________________________________________________________________________________
5.6 Arrays
Arrays são objetos com propriedades semelhantes aos data.frames, porém são multidimensionais. São criados
utilizando a função array().
x=1:18 #um vetor de tamanho igual a 18.
A=array(x,c(3,2,3))
, , 1
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
, , 2
[,1] [,2]
[1,] 7 10
[2,] 8 11
[3,] 9 12
, , 3
27
_________________________________________________________________________________
[,1] [,2]
[1,] 13 16
[2,] 14 17
[3,] 15 18
28
_________________________________________________________________________________
musicas2=edit(musicas)
Para alterar a casa desejada basta clicar duas vezes e digitar o novo valor. Para sair basta clicar no “X”.
OBS.: “h=T” é necessário se a primeira linha do arquivo de dados contém as informações sobre o nome das
colunas (linha de cabeçalho). Caso contrário, escrever h=F; Outra observação importante é que as
barras no endereço devem estar nesse sentido: “ / ”, mesmo quando o sistema operacional em
questão é o Windows.
Observe que a primeira linha é de cabeçalho. Se este arquivo estiver salvo no pendrive , basta digitar:
29
_________________________________________________________________________________
Produto de vetores:
coluna1%*%coluna1 #uma multiplicação da coluna 1 por ela mesma
[,1]
[1,] 5
Observe que, se quiser a soma dos quadrados dos valores no vetor, então faremos coluna1*coluna1, daí
a importância do uso do símbolo “%” antes e depois do asterisco. Veja:
coluna1*coluna1
[1] 4 1 0
Agora criando uma matriz de nome A com os vetores já criados. Observe que existem outras formas de
criar matrizes.
A=cbind(coluna1,coluna2,coluna3)
A
coluna1 coluna2 coluna3
[1,] 2 1 1
[2,] 1 3 1
[3,] 0 1 2
30
_________________________________________________________________________________
Obtendo a transposta de A
t(A)
[,1] [,2] [,3]
coluna1 2 1 0
coluna2 1 3 1
coluna3 1 1 2
Caso ainda tenha dúvidas, você pode testar a veracidade da operação anterior usando um algebrismo
simples. Multiplique a inversa pela matriz “normal” e o resultado deve ser uma matriz identidade com as
mesmas dimensões da matriz a qual se deseja testar. Veja:
solve(A)%*%A #verificação
coluna1 coluna2 coluna3
coluna1 1 -2.775558e-17 0
coluna2 0 1.000000e+00 0
coluna3 0 0.000000e+00 1
Para fazermos arredondamentos com 5 casas decimais, por exemplo, podemos escrever:
round(solve(A)%*%A)
coluna1 coluna2 coluna3
coluna1 1 0 0
coluna2 0 1 0
coluna3 0 0 1
31
_________________________________________________________________________________
Você pode imaginar se os valores falsos fossem representados pelo zero (0) e os valores verdadeiros
pelo valor um (1). Multiplicando valores lógicos por valores numéricos obtem-se valores numéricos.
1*(x<5)
[1] 1 1 1 1 1 0 0 0 0 0
Agora imagine a multiplicação dos valores do vetor x pelos valores lógicos do valor x na condição
discriminada:
32
_________________________________________________________________________________
x*(x<5)
[1] 0 1 2 3 4 5 0 0 0 0 0
Quando aplicamos a função sum(x), temos a respostas da soma dos valores dos números 0+1+2+3+4+5
= 10.
sum(x*(x<5))
[1] 10
Além destas opções, pode-se contar com os operadores de conjuntos como: intersect(x,y) , union(x,y),
setdiff(x,y), setequal(x,y), unique(x,y). Para saber mais consulte a ajuda do R.
9 Criação de gráficos
O R é uma poderosa ferramenta no que diz respeito à confecção de gráficos e afins.Na estatística, em
especial, ele possibilita a criação de histogramas, ogivas, curvas de distribuições e regressões e muito mais.
Em análises estatísticas, podemos usufruir das ferramentas gráficas para fazermos um estudo inicial dos
nossos dados. Muitas vezes torna muito mais simples o entendimento de um problema ou situação se
33
_________________________________________________________________________________
Este último comando faz com que o R abra uma nova janela. Novos gráficos irão sobrescrever o gráfico
na mesma janela.
Todas as alterações geradas dentro de uma função gráfica são consideradas
34
_________________________________________________________________________________
Se quiser obter mais informações sobre o comando plot(), digite ?plot no promptdo R Console.
35
_________________________________________________________________________________
Exemplo:
plot(c(0,20),c(-8000,8000),type='n')
lines(x,y)
lines(x,-y)
Outro exemplo:
plot(c(0,20),c(0,30),type='n')
segments(5,3,15,20)
lines(c(12,15,7),c(3,10,8),col="red")
abline(30,-2,lty=2,col="blue")
x=c(2,3,4,5,6,7,8,9) #coordenadas x
y=c(15,46,56,15,81,11,61,55) #coordenadas y
nomes=paste(“cidade “, LETTERS[1:8],sep=””) #nomes das cidades
cidades=data.frame(x,y,row.names=nomes) #juntando tudo...
cidades #exibindo...
x y
cidade A 2 15
cidade B 3 46
cidade C 4 56
cidade D 5 15
cidade E 6 81
cidade F 7 11
cidade G 8 61
cidade H 9 55
37
_________________________________________________________________________________
Assim, a cidade A tem coordenadas (2,15), a cidadeB (3,46) e assim sucessivamente. Podemos plotar as
coordenadas das cidades de modo a poder visualizar sua distribuição espacial.
plot(cidades)
Acontece que não conseguimos distinguir facilmente na figura qual é a cidade C, por exemplo. Esse
problema pode ser resolvido quando temos indexados os nomes das cidades às coordenadas plotadas no
gráfico. Então usamos o comando identify().
Após entrarmos com o comando, quando passamos o mouse por sobre o gráfico ele vira uma cruz, e ao
clicar próximo ao ponto que se deseja identificar, sua descrição e exibida instantaneamente.
Identify (x,y, #coordenadas gráficas dos pontos
nomes, #identificação descrita dos pontos
n=3) #número de pontos a serem identificados
Como podemos perceber, o programa ainda exibe, no prompt, os valores dos índices das referências.
Neste caso você pode acomodar até 2x3=6 gráficos na mesma janela. A tela vai "limpar" quando você
tentar fazer o sétimo gráfico.
A função par() pode fazer diversas outras coisas relacionadas aos gráficos.
Veremos outras funcionalidades mais tarde, e você pode também consultar a
documentação com help(par) ou ?par.
OBS.: Para retornar ao padrão com apenas um gráfico por janela. Digite par(mfrow=c(1,1)) ou feche a
janela gráfica antes de outro comando.
Uma outra opção para gerar gráficos múltiplos é através da função layout. Veja as instruções utilizando a
documentação através do comando help(layout) ou ?layout.
38
_________________________________________________________________________________
Exemplo:
Vamos criar dois conjuntos de 10 números cada um, gerados aleatoriamente com distribuição
pseudo-normal de média zero e desvio padrão igual a um.
x=rnorm(10)
y=rnorm(10)
Agora compare os dois gráficos abaixo. Ambos se referem aos mesmos objetos. Porém o segundo
contém uma série de recursos adicionais. Compare também os códigos usados para gerar cada um deles.
39
_________________________________________________________________________________
1º) gráfico:
plot(x,y)
2º) gráfico:
plot(x, y, #plota x e y
xlab=”Dez números quaisquer”, #nomeia o eixo x
ylab=”Outros dez números”, #nomeia o eixo y
main=”Como personalizar um gráfico”, #referente ao título
xlim=c(-2,3), #limites do eixo x
ylim=c(-3,2), #limites do eixo y
col=”red”, #define a cor dos pontos
pch=22, #o formato dos pontos
bg=”yellow”, #cor de preenchimento
tcl=0.4, #tamanho dos traços dos eixos
las=1, #orientação do texto em y
cex=1.5, #tamanho do objeto do ponto
bty=”l”) #altera as bordas
40
_________________________________________________________________________________
41
_________________________________________________________________________________
x=vector()
i=1
while (i<8){
x[i]=i*i
print(i)
i=i+1
}
print(i)
print(x)
Vamos configurar um loop ao quadrado cada elemento de meu conjunto de dados, foo, que contém os
inteiros ímpares de 1 a 100 (tenha em mente que vectorizar seria mais rápido para o meu exemplo trivial - veja
abaixo).
foo = seq(1, 100, by=2)
foo.squared = NULL
for (i in 1:50 ) {
foo.squared[i] = foo[i]^2
}
Se a criação de um novo vetor é a meta, primeiro você tem que criar um vetor para armazenar coisas em
antes de executar o loop. Esta é a parte foo.squared = NULL.
R não aceita que lhe digam para operar em um vetor que ainda não existe. Então, montamos um vetor
vazio para adicionar coisas para depois (note que este não é o caminho mais eficiente em termos de
velocidade para fazer isso, mas é bastante à prova de iniciantes). Em seguida, o real loop inicia. Este código
diz que vai laçar 50 vezes (1:50). O contador que ajustamos é 'i' (mas você pode colocar qualquer nome
variável você queira). Para o nosso novo vetor foo.squared, o i-ésimo elemento será igual ao número de no
qual estamos (para o primeiro loop, i = 1; o segundo loop, i = 2).
sinal de igual. Isto irá resultar em foo.squared contendo apenas um valor - o último valor calculado pelo
laço.
No exemplo acima, criamos um vetor vazio para armazenar nossos novos valores em (foo.squared). Esse
vetor é vazio, e cada vez que vamos através do laço nós crescemos o vetor por um. Seria mais rápido se
pudéssemos estabelecer o nosso vector de ter o comprimento certo antes do tempo e, em seguida,
simplesmente preencher esse vetor com os valores corretos.
foo.squared = numeric (length = 50) #generates um vetor de 50 zeros; agora podemos executar
o loop como antes
Exemplo:
Vamos começar com um exemplo muito simples de como criar e usar uma função no R. Uma função
pode ser criada para executar diversas operações de modo automático e é programada (criada) com
procedimentos algorítmicos (passos). Porém, uma delas pode ser usada também para executar uma tarefa
simples, como mostraremos. O problema é que não é usual programar uma função que execute uma linha de
comando apenas.
Vamos criar uma função que calcule a média de um conjunto de dados. Veja:
media=function(dados) # onde dados será o parâmetro de entrada
{ # o “{“ indica o início (begin)
print(sum(dados)/length(dados)) # será exibido na tela a média de “dados”
} # já o “}” representa o fim (end)
44
_________________________________________________________________________________
Neste momento a função está pronta e carregada na memória. Agora vamos criar um conjunto de dados
e calcular a média deste usando a função que acabou de ser criada.
x=1:10 #criando um conjunto de dados qualquer
media(x) #o parâmetro não precisa chamar “dados”
[1] 5.5
mean(x) #apenas pra conferir!
[1] 5.5
Geralmente usamos um editor de textos, pela comodidade e recursos que este apresenta na edição de
funções e rotinas para a análise de dados no R. Usufruindo do já conhecido “Copiar e Colar” de modo que
torna-se mais simples consertar possíveis falhas de programação (quando essas acontecem devido a um erro
devido a montagem do algoritmo).
Se você desejar apenas ver o conteúdo de uma função já criada basta escrever seu nome no prompt de
comando:
media
function(dados) #onde dados será o parâmetro de entrada
{ #o "{" indica o início (begin)
print(sum(dados)/length(dados)) #será exibido na tela a média de
#"dados"
} #já o "}" representa o fim (end)
10.5Execuções condicionais
A linguagem R dispõe de ordem condicionais da seguinte forma:
if (condição) “expres_1” else expres_2
Onde o resultado da condição deve ser uma valor lógico (T-TRUE ou F-FALSE),se este for verdadeiro (T)
será executada a expres_1, caso contrário será executadaexpres_2. O uso do condicional “else” não é
obrigatório.
Operadores lógicos & (AND ou E) e | (OR ou OU) podem ser usados como condições de uma expressão
if.
X = 6 ; y =4 # criando alguns dados
if(x == 6 & y>3) print("Verdadeiro") else print("Falso")
[1] "Verdadeiro"
Existe uma versão vetorizada da construção condicional if /then, que é a função ifelse, cuja sintaxe no R
é: ifelse(condição, expres_1 , expres_2), e cujo resultado é um vetor. A expres_1 será aplicado caso a
condição for verdadeira e a expres_2 caso contrário.
x=1:6 # criando o vetor a ser testado
45
_________________________________________________________________________________
Exemplo:
Esta função é capaz de calcular diversas médias e variâncias:
med_var = function(...)
{
data=list(...)
n=length(data)
means=numeric(n)
vars=numeric(n)
for (i in 1:n)
{
means[i]=mean(data[[i]])
vars[i]=var(data[[i]])
}
print(means)
print(vars)
}
Invocando a função:
x=rnorm(100) #gera números pseudo-aleatórios da distrib. normal
y=rnorm(200)
z=rnorm(300)
med_var(x,y,z)
[1] -0.023931993 0.010433922 0.002572031
[1] 0.9038830 0.8977618 1.0495786
Outro Exemplo:
Criando uma função para resolver o seguinte problema de probabilidade, através de simulação.
Considere quatro minúsculos insetos semelhantes colocados em uma caixa. Considere que estes insetos só
se diferenciam quanto ao sexo. Dois são machos e dois são fêmeas. Dois insetos são selecionados ao acaso.
Qual a probabilidade de que ambos os insetos serem do mesmo sexo, quando ambos são tomados
simultaneamente? Resposta: 1/3.
46
_________________________________________________________________________________
simula=function(n)
{
# Quatro insetos na caixa
# entrar com os no de iterações
n = n #aqui é o número dos insetos
caixa=c(“m”,”m”,”f”,”f”)
res=integer(n) #cria um vetor de tamanho n
for (h in 1:n)
{
cx=sample(caixa) #tomadas ao acaso sem reposição
if (cx[1]==cx[2]) {res[h]=1} else {res[h]=0}
}
prob=mean(res)
return(prob)
}
Agora vamos usar a função criada para fazer 10 iterações
simula(10) #fazendo 10 iterações
[1] 0.1 #lembre-se que este é um pequeno número de amostras
E observe que quanto maior o número de iterações, o valor da probabilidade se aproxima do esperado:
1/3.
simula(1000) #veja o valor da probabilidade para 1000 simulações
[1] 0.3325
OBS.: Essa função apresenta um procedimento não implementado no R, e assim ela retorna um aviso
“Warning mnssage”. Todavia ela executa a tarefa requerida.
47
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
48
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
11 Estatísticas Descritivas
A Estatística Descritiva tem se difundido bastante com o advento dos computadores. Com
crescente aumento da capacidade de realização de grandes volumes de cálculos em pequenos
intervalos de tempo, tornou-se, quase que obrigatório, uma análise descritiva dos dados, seja para
efeito de apresentação de informações ou até mesmo para uso preliminar dessas informações para
fins de análises (estatísticas) futuras.
Neste tópico, buscamos mostrar algo relacionado às medidas de posição e dispersão, assim
como dar uma pequena noção da facilidade de se obter esses resultados usando o R. A parte de
apresentação gráfica, como por exemplo, a criação de histogramas e ogivas, será vista
posteriormente no capítulo “Criando gráficos como o R”
11.1Algumas notações
11.1.1 Somatório
Na verdade, o somatório nada mais é do que uma notação simplificada de várias
somas. Mesmo com sua simplicidade, ele também tem seu espaço no R. Veja o exemplo
abaixo:
x=c(1,2,3,4) #criando um vetor qualquer
sum(x) #obtendo o somatório do vetor criado
[1] 10
Encontre:
49
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
50
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
classes Freq F fr Fr
1 [45,48) 2 2 0.20 0.20
2 [48,51) 24 26 2.44 2.64
3 [51,54) 63 89 6.42 9.06
4 [54,57) 27 116 2.75 11.81
5 [57,60) 43 159 4.38 16.19
6 [60,63) 110 269 11.20 27.39
7 [63,66) 215 484 21.89 49.28
8 [66,69) 159 643 16.19 65.47
9 [69,72) 168 811 17.11 82.58
10 [72,75) 123 934 12.53 95.11
11 [75,78) 48 982 4.89 100.00
Para criar melhores exemplos vamos utilizar a função runif() que gera números aleatórios
com distribuição uniforme entre 0 e 1, como já mencionado anteriormente. Veja:
x=runif(100) #100 números aleatórios da distribuição supracitada
hist(x) #cria um histograma dos dados armazenados em x
Isto mostra uma distribuição razoavelmente uniforme dos 100 números. Mas se ficarmos
adicionando mais números aos anteriores iremos obter uma distribuição aproximadamente normal.
Para ilustrar isto vamos primeiro dividir a área gráfica para acomodar 4 gráficos com o comando:
par(mfrow=c(2,2))
Então criar vários histogramas com “x” sendo adicionado de outros valores amostrais gerados
pela função runif():
hist(x)
x=x+runif(10)
hist(x)
x=x+runif(100)
hist(x)
x=x+runif(1000)
hist(x)
52
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Figure 21. Vários histogramas. À media que aumenta n, os histogramas se aproximam da Distribuição Normal
Exemplo:
Vamos criar um conjunto de dados que siga a distribuição de Qui-quadrado com 1000
elementos e com 10 graus de liberdade.
x=rchisq(1000,10)
comparar dois histogramas gerados por códigos diferentes. O primeiro, é criado da maneira mais
simples possível e o segundo com o uso de vários parâmetros alterados pelo gosto e/ou
necessidade do usuário.
1º gráfico:
hist(x)
2º Gráfico:
hist(x, #histograma de x
main="Histograma Personalizado\nQui-quadrado",#título
xlab="Valores", #texto do eixo das absc.
ylab="Probabilidades", #texto do eixo das ord.
br=c(c(0,5),c(5,15),5*3:6), #intervalos das classes
xlim=c(0,30), #limites do eixo de x
ylim=c(0,0.1), #limites do eixo y
col="lightblue", #cor das colunas
border="white", #cor das bordas das colunas
prob=T, #para mostrar as probab.
right=T, #intervalos fechados à dir.
adj=0, #alinhamento dos textos
col.axis="red") #cor do texto nos eixos
54
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Exercício:
Suponha um conjunto de dados coletados por um professor que se refere ao tempo gasto (em
minutos) pelos alunos para a resolução de um problema de álgebra. Veja:
25 27 18 16 21 22 21 20 18 23 27 21 19 20 21 16
Construa um histograma do conjunto de dados usando 6 classes com intervalos fechados à
esquerda.
dados=c(25,27,18,16,21,22,21,20,18,23,27,21,19,20,21,16)
hist(dados, #este é o conjunto de dados
nc=6, #número de classes igual a 6
right=F, #para o intervalo fechado à esquerda
main="Histograma", #define o título do histograma
xlab="tempo (em minutos)", #texto do eixo x
ylab="frequencia", #texto do eixo y
col=8) #usa a cor cinza nas barras
11.3.3 Ogiva
A ogiva nada mais é do que o histograma da freqüência acumulada ao invés da simples. Veja a
comparação abaixo:
par(mfrow=c(1,2)) #dois gráficos em uma janela
fi=c(rep(2,3),rep(4,6),5,rep(6,2)) #freqüência simples
fa=c(rep(2,3),rep(4,9),rep(5,10),rep(6,12))#freqüência acumulada
hist(fi,nc=4,ylim=c(0,12),main=”Histograma”)#“freq simples”
hist(fa,nc=4,ylim=c(0,12),main=”Ogiva”) #histograma da “acumulada”
55
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
56
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Figure 25. Histograma e curva de densidade para os dados do comprimento da carapaça de caranguejos fêmeas
11.4Construção de boxplot
Para construção de boxplot, utilize o comando boxplot( ). Vamos trabalhar com os dados do
comprimento da carapaça de caranguejos.
57
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
12.2Qui-quadrado
Suponha que você deseje avaliar se uma amostra (n= 100) dos números de 0 a 10 é realmente
aleatória. Para gerar a amostra basta:
Amos=round(runif(100)*10)
Para conferir a freqüência é só usar a função table:
Freq=table(amos)
freq
amos
58
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
0 1 2 3 4 5 6 7 8 9
4 13 13 12 11 9 8 12 8 10
12.2.1 Kolmogorov-Smirnov
Exemplo:
Pega-se 50 pessoas ao acaso e mensura-se suas respectivas massas em quilogramas (Kg).
Agora queremos saber se esse conjunto de dados segue a distribuição de qui-quadrado com um
nível de significância de 5%.
Vamos assumir que já temos os valores coletados no vetor “pesos”. Lembre das diferentes
formas de entrar com dados no R.
46.88 63.87 73.02 63.29 75.66 61.65 59.89 62.73 66.42 59.66
47.17 53.95 51.69 46.53 72.06 58.78 66.15 60.1 73.72 73.31
64.46 63.66 90.88 84.64 62.00 60.63 75.84 69.04 65.41 61.21
67.84 69.06 53.01 61.76 43.43 68.56 35.18 79.42 75.56 94.18
85.76 76.41 64.31 85.08 73.38 67.79 57.78 54.89 61.91 66.37
Como o p-value é menor ou igual a 0,05 (5%) podemos assumir que os dados não têm
distribuição de qui-quadrado a 5% de pr obabilidade.
59
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Observe que não há necessidade de informar a distribuição, uma vez que este teste é usado
apenas para a distribuição normal (conhecida por muitos como distribuição de Gauss). Apenas para
melhor assimilar o teste, veja:
qqnorm(pesos) #obtendo o normal probability plot só para comparação
qqline(pesos) #colocando uma linha auxiliar
12.4Teste de chi-quadrado
Exemplo1: Numa população, espera-se uma ocorrência de machos e fêmeas em iguais proporções
(com freqüências esperadas de 50% para cada sexo), mas ao se amostrar 450 alevinos para
sexagem, as freqüências observas foram O 1= 204 machos e O2 = 246 fêmeas.
y=matrix(c(204,246), nc=1) # Cria uma matriz 1 x 2
chisq.test(y,correct = T)
Exemplo2: Num teste de preferência alimentar, os seguintes tipos (k=3) de pescado: peixe fresco,
60
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
peixe salgado e peixe enlatado foram degustado por 240 pessoas, com as seguintes frequências
observadas: O1= 100, O2 = 90 e O3 = 50.
z=matrix(c(100,90,50),nc=1)
chisq.test(z,correct = T)
Exemplo3: Para testar as hipóteses de que não existe variação na proporção sexual e a relação
interespecífica não varia em função do sexo, foram obtidas as seguintes freqüências esperadas para
os estoques do camarão-vermelho, P. brasiliensis, e do camarão-branco, P. schmitti:
E agora o comando...
t.test(x,y,conf.level = 0.99) #amostras a serem testadas ao nível de
confiança
Artemia salina. Com base na tabela abaixo, utlizar o teste (Unilateral) para verificar se esta
informação é falsa ou verdadeira, considerando-se a = 0,05.
Primeiro vamos fazer o teste passo a passo, usando o R como uma calculadora:
Para realizar as análises no R vamos entrar com os dados nos objetos que vamos chamar de “Ra” e
“Rb” e calcular o tamanho das amostras que vão ser armazenadas nos objetos “na” e “nb”.
Observe que ambos os conjuntos de dados possuem 1 grau de liberdade.
Ra = c(4.2, 3.6, 4.6, 4.3, 4.1, 3.5, 4.3)
na = length(Ra)
Rb = (3.7, 4.0, 3.2, 3.1, 2.9, 3.6, 3.8)
nb = length(Rb)
vRa=var(Ra)
VRb=var(Rb)
Fcal=vRb/vRa
Fcal #observando o valor da estatística do teste
[1] 1.048193 # poderíamos inverter as variâncias
pval
[1] 0.9558986
data: Ra and Rb
t = 2.8561, df = 11.993, p-value = 0.01446
alternative hypothesis: true difference in means is not equal to 0
99 percent confidence interval:
-0.04274446 1.27131589
sample estimates:
mean of x mean of y
4.085714 3.471429
Observe que a multiplicação por 2 no final da expressão que dá o valor do p-value ocorreu
porque se trata de um teste bilateral.
Existe uma maneira muito mais fácil de fazer um teste F no R. Veja:
Pode-se escrever uma função, ou utilizar a função existente no R, que para o caso é var.test.
Note que esta análise foi baseada na hipótese alternativa de variâncias diferentes (teste
bilateral). A interpretação do resultado pode ser feito, da mesma maneira que no teste t, pelo valor
64
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
do p-value. Como este é maior que 0,05 ou até mesmo que 0,90 aceitamos a hipótese de nulidade
com um nível de significância de 5% e, se fosse viável, até mesmo com esse nível igual a 90%.
data: x and y
t = 3.6493, df = 9, p-value = 0.005323
alternative hypothesis: true difference in means is not equal to 0
99 percent confidence interval:
0.2331487 4.0268513
sample estimates:
mean of the differences
2.13
Mais uma vez, o resultado do teste pode ser obtido pela interpretação do p-value, ou usando o
intervalo de confiança: se a média da diferença entre as médias estiver contida no intervalo de
confiança, implica que essa diferença não é significativa.
13 Anova a 1 fator
Estudos estatísticos contemporâneos contemplam a análise de variância tendo em vista que
este procedimento permite identificar e quantificar as variações ocorridas em um experimento,
discriminando a parte da variação associada ao modelo pelo qual o experimento foi procedido da
variação que se dá devido ao acaso.
No R encontram-se diversos procedimentos para se executar a ANOVA, entretanto, o usuário
deve estar atento ao escolher e realizar a análise, pois alguns erros são freqüentes, como, por
65
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
exemplo, não especificar algum fator, esquecer sinal no modelo, dentre outros.
13.1DIC
O DIC (Delineamento Inteiramente Casualizado) trata de experimentos onde os dados não são
pré-separados ou classificados em categorias.
Exemplo:
Entrada dos dados da resposta do experimento, conforme o quadro abaixo:
T1 T2 T3 T4
25 31 22 33
26 25 26 29
20 28 28 31
23 27 25 34
21 24 29 28
Copie os dados acima no editor de script e salve com a extensão .txt (p.exemplo:
DIC1_apostila.txt). Carregue os dados salvos em um data frame com nome df1
df1 = read.table("DIC1_apostila.txt", header = TRUE); df1
av = aov(R ~ tm)
OBS.: Em todos os tipos de análises de variância, para todas as variáveis qualitativas devem
ser criados fatores e não vetores, ou seja, o objeto que contém os nomes (ou números)
dos tratamentos, dos blocos, etc., devem ser fatores e não vetores.
13.1.1 DBC
O DBC (Delineamento em Blocos Casualizados) abrange os três princípios básicos da
experimentação: repetição, casualização, e o controle local.
Veja o exemplo de uma análise de variância no R de um experimento segundo o DBC.
67
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Exemplo:
Suponha que uma Nutricionista elaborou 4 dietas e quer aplicá-las em 20 pessoas a fim de
testar suas eficiências quanto à perda de peso. Porém ela notou que entre essas 20 pessoas
existem 5 grupos de faixas iniciais de peso. Então, para aumentar a eficácia do teste ela separou os
20 indivíduos em 5 grupos de faixas de peso. Então ela tem:
Dietas: dieta 1 – dieta 2 – dieta – 3 – dieta 4;
Grupos: peso A – peso – B – peso C – peso D – peso E.
A tabela abaixo resume o valor da perda de peso, arredondados em quilogramas, de cada
indivíduo. Veja:
68
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Porém esse não é o quadro de ANOVA com que estamos acostumados a lidar. É aí que entra o
comando “anova()”
anova(resultado) #gera a tabela de análise de variância
Analysis of Variance Table
Response: dados
Df Sum Sq Mean Sq F value Pr(>F)
tratamentos 3 25.2 8.4 6.0000 0.009731 **
blocos 4 3.2 0.8 0.5714 0.688544
Residuals 12 16.8 1.4
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Agora basta interpretar os resultados: Observe que o efeito dos tratamentos (dietas) se deu de
maneira significativa a 1% de significância, porém a 5% ele foi “não significativo”, o que implica que
a resposta encontrada pela Nutricionista foi: “Não, as dietas não apresentam diferenças significativas
a 5% de probabilidade”.A resposta do exemplo já foi dada, porém vamos prosseguir usando este
mesmo exemplo pra mostrar como obter mais informações a respeito da ANOVA. Veja:
Caso quiséssemos obter os resíduos, poderíamos fazê-lo através do comando “resid()”, que
exibe os resíduos correspondentes a cada uma das 20 observações:
residuos=resid(resultado) #gerando um quadro de resíduos
residuos
1 2 3 4 5 6 7 8 9 10
-0.30 -0.30 -0.90 1.50 -0.05 0.95 0.35 -1.25 -1.05 -0.05
11 12 13 14 15 16 17 18 19 20
1.35 -0.25 1.95 -0.05 -1.65 -0.25 -0.55 -0.55 0.85 0.25
69
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
OBS.: Para alterar certos valores no conjunto de dados originais, podemos fazer
tabela=edit(tabela). Será aberta uma planilha no R. Após a alteração dos valores deinteresse,
basta fechar a janela da planilha que as alterações serão automaticamente salvas no objeto
“tabela”
dados=c(25,31,22,33,26,25,26,29,20,
28,28,31,23,27,25,34,21,24,29,28)
trat=factor(rep(paste("tr",1:4,sep=""),5))
tabela=data.frame(trat=trat,dados=dados)
ANOVA=aov(dados~trat,tabela)
result1=TukeyHSD(ANOVA,”trat”)
70
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
result1
71
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Desta maneira, são oferecidos muitos valores que não são de interesse e as vezes até dificulta
a interpretação dos resultados.
Uma outra possibilidade é utilizar a distribuição de Tukey (opções q e p implementadas) para
encontrar os valores tabelados ou os valores de probabilidade (consultar help(qtukey)).
13.3Anova fatorial
Os experimentos fatoriais são aqueles em que estudamos dois ou mais fatores
simultaneamente, onde cada um desses fatores pode possuir dois ou mais níveis. A vantagem desse
tipo de experimento é que além de termos o “controle” dos fatores
individualmente, consideramos também a interação entre eles, ou seja, sabemos se esses fatores
atuam de formas independentes ou se existem interações entre eles. Os experimentos fatoriais
podem ser conduzidos segundo o DIC, DBC e outros modelos.
72
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
73
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Fazendo a ANOVA no R:
e=c(0.2,0.7,0.8,0.4,0.8,0.9,0.5,1.2,1.2,
0.6,0.8,1.1,0.9,1.3,1.5,1.2,1.4,1.8,
0.7,1.1,1.5,0.9,1.5,1.7,1.2,1.7,1.5)
b=gl(3,9,label=c(paste(“ALVO”,LETTERS[1:3])))
a=rep(gl(3,3,label=c(paste(“Ang”,1:3))),3)
d=rep(paste(“Dist”,1:3),9)
dados=data.frame(bloco=b,angulo=a,distancia=d,erro=e)
anova(aov(erro~distancia+angulo+bloco+distancia*angulo,dados))
74
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
De acordo com a tabela da ANOVA podemos perceber que a distância e o ângulo de visada
atuam independentemente, uma vez que a interação entre eles foi “não significativa”. Podemos
concluir também que os níveis dos fatores distância e ângulo de visada influenciam no erro. Mas o
mais importante é que de acordo com a ANOVA pode-se afirmar que existe diferença na eficiência
dos diferentes modelos de alvos, no que diz respeito ao erro linear, que era o principal objetivo do
Engenheiro Agrimensor.
Error: bloco
Df Sum Sq Mean Sq
bloco 3 5.5 1.833
Error: bloco:A
Df Sum Sq Mean Sq F value Pr(>F)
A 1 252.08 252.08 59.31 0.00455 **
Residuals 3 12.75 4.25
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Error: Within
76
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
data: C and S
W = 29.5, p-value = 0.01024
alternative hypothesis: true location shift is not equal to 0
14.2Teste de Wilcoxon
O Teste de Wilcoxon (ou Wilcoxon Signed Rank Test ou Teste de postos com sinais) é o teste
equivalente ao teste t pareado
Exemplo 1:
Deseja-se investigar a ação do uso de um medicamento para pacientes com fibrose cística.
Acredita-se que essa droga ajude a melhorar o fluxo de ar nos pulmões. A Capacidade Vital Forçada
(CVF) é o volume de ar que uma pessoa pode expelir dos pulmões em seis segundos. Deseja-se
comparar a redução da CVF em pacientes que usaram por um período de 25 semanas a droga com
a redução ocorrida nos mesmos pacientes, em período de tempo similar, durante o tratamento com
placebo.
79
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
data: P and D
V = 36, p-value = 0.4316
alternative hypothesis: true location sh
ift is not equal to 0
14.3Teste de Kuskall-Wallis
São técnicas para comparar a significância de diferenças entre três ou mais grupos de amostras
independentes, ou seja, para comprovar a hipótese de nulidade de que K amostras independentes
tenham sido extraídas da mesma população ou de populações idênticas. É o equivalente da ANOVA
paramétrica.
Exempl1:
Suponha que estamos interessados em descobbrir se existem diferenças no acesso a uma página
na internet em função da característica: muito ilustrada, com algumas ilustrações e, sem ilustrações.
Colocamos três páginas na internet com o mesmo assunto e título durante 4 meses. A seguir,
verificamos o número de vezes que foram acessadas durante quatro sábados seguidos. Os
80
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
resultdos foram:
Nº de indiv. do Grupo1 (Página Nº de indiv. Grupo2 Nº de indiv. Grupo3
muito ilustrada) (Pagina C/ algumas ilustr. (Páginas sem ilustr. )
Sábado 1 19 14 12
Sábado 2 21 15 12
Sábado 3 17 9 13
Sábado 4 16 10
81
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
14.4Teste de Friedman
O teste de Friedman é um teste estatístico não-paramétrico desenvolvido pelo economista
americano Milton Friedman. Similar à ANOVA de medidas repetidas, é usado para detectar
diferenças de tratamentos em vários tentativas de teste. O procedimento envolve a
classificação de cada linha (ou bloco) juntos, em seguida, considerando os valores de fileiras por
colunas. Aplicável para concluir projetos em bloco, é, portanto, um caso especial do teste de Durbin.
TP = matrix(c(5.40, 5.50, 5.55, 5.85, 5.70, 5.75, 5.20, 5.60, 5.50, 5.55, 5.50, 5.40, 5.90, 5.85,
5.70, 5.45, 5.55, 5.60, 5.40, 5.40, 5.35, 5.45, 5.50, 5.35, 5.25, 5.15, 5.00, 5.85, 5.80, 5.70, 5.25,
5.20, 5.10, 5.65, 5.55, 5.45, 5.60, 5.35, 5.45, 5.05, 5.00, 4.95, 5.50, 5.50, 5.40, 5.45, 5.55, 5.50,
5.55, 5.55, 5.35, 5.45, 5.50, 5.55, 5.50, 5.45, 5.25, 5.65, 5.60, 5.40, 5.70, 5.65, 5.55, 6.30, 6.30,
6.25), nrow = 22, byrow = TRUE, dimnames = list(1 : 22, c("M1", "M2", "M3")))
TP # Tempo de Percurso
friedman.test(RoundingTimes)
## =>Há forte evidência contra a hipótese nula de que os métodos são
## equivalentes. Com relação à velocidade
wb = aggregate(warpbreaks$breaks,by = list(w = warpbreaks$wool,t = warpbreaks$tension),
FUN = mean)
wb
friedman.test(wb$x, wb$w, wb$t)
friedman.test(x ~ w | t, data = wb)
15 Regressões
O principal objetivo da análise de regressão é verificar se existe uma relação, e quantificar essa
relação, entre duas variáveis quantitativas, tentando formular uma relação direta entre uma ou mais
variáveis independentes e seu(s) efeito(s) na variável dependente. O melhor método para a escolha
do modelo matemático/estatístico que representará essa relação pode ser obtido com a visualização
do diagrama de dispersão. Osmodelos podem ser de formas variadas: linear, quadrático,
exponencial, logarítmico, etc. Veja a seguir como gerar alguns desses modelos usando o R.
82
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
15.1Polinomial simples
15.1.1 Regressão linear simples
Quando os dados se agrupam seguindo a forma de uma reta, provavelmente existe
uma relação de linearidade entre as variáveis envolvidas. Veja um exemplo típico:
Exemplo:
Um engenheiro civil coleta dados em um laboratório estudando a dilatação de um pilar de
concreto segundo a temperatura ambiente no local onde está o pilar. Veja os dados (fictícios):
Posso realizar um estudo de regressão nestes dados?. Qual modelo usar? Como montar a
equação que relaciona a tmperatura com a dilatação neste estudo? A temperatura realmente exerce
influência na dilatação do pilar? Eu posso quantificar essa relação?
Essas são as perguntas que podemos nos fazer ao depararmos com os dados que foram
apresentados acima. Suas respostas podem ser encontradas fazendo-se uma análise de regressão.
Veja:
Primeiro vamos entrar com os dados da tabela no R, criando 2 objetos: um que conterá os
valores de temperatura e outro para a dilatação.
temp=c(18,16,25,22,20,21,23,19,17)
dilat=c(5,3,10,8,6,7,9,6,5)
O estudo de regressão pode ser feito, inicialmente com a definição do modelo. Para isso vamos
visualizar os pontos plotados em um diagrama de dispersão:
plot(temp,dilat) #a variável independente deve vir primeiro
O diagrama sugere uma tendência linear dos dados. Então vamos montar um modelo de
regressão linear simples (simples, pois existe apenas uma variável independente – “temp”
relacionada a variação da variável dependente – “dilat”).
Montando o modelo:
83
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
reglin=lm(dilat~temp)
reglin
Call:
lm(formula = dilat ~ temp)
Coefficients:
(Intercept) temp
-8.1710 0.7323
summary(reglin)
lines (x,0.81139*x+51.933)
dat1 = data.frame(X=X1,Y=Y1,f='D1')
dat2 = data.frame(X=X2,Y=Y2,f='D2')
dat = rbind(dat1,dat2)
# realizando a regressão
model = lm(Y~X*f,data=dat)
summary(model)
Call:
lm(formula = Y ~ X * f, data = dat)
Residuals:
1 2 3 4 5 6 7 8
9
84
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
library(ggplot2)
ggplot(data=dat,aes(x=X,y=Y,group=f))+geom_point(aes(colour=f))+xlim(0,400)+geom_abline(in
tercept=77.175,slope=-0.07094)+geom_abline(intercept=(77.175-1.54022), slope=(-.07094-.30997))
85
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
De acordo com o gráfico, podemos observar que as retas se cruzam, indicando que
15.3.1 Ancova
A Análise de covariância (ANalysis of COVAriance, ANCOVA) é usada para comparar duas ou
mais linhas de regressão, testando o efeito de um fator categórico numa variável dependente (y-var),
enquanto que controla o efeito de uma co-variável (x-var) contínua. Quando queremos comparar
duas ou mais linhas de regressão, o fator categórico divide a relação entre var-x e var-y em várias
86
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Figure 31. Exemplo de análises de covariância: A) Nenhum interação significativa entre o tratamento e a “co-variável”; B)
Interação significativa entre o tratamento e a “co-variável”.
15.3.1.1 Interpretação
Uma ANCOVA é capaz de testar as diferenças de inclinações e interceptos entre linhas de
87
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
O código anterior mostra o modelo de ANCOVA, pelvic é modelado como a variável dependente
com o sexo como o fator e focinho como o co-variável. O resumo dos resultados mostram um efeito
significativo do focinho e sexo, mas não houve interação significativa. Estes resultados sugerem que
a inclinação da regressão entre o comprimento rostro-cloacal e largura pélvica é semelhante para
ambos os sexos masculino e feminino.
Um segundo modelo mais parcimonioso deverá ser ajustatado sem a interação para testar uma
diferença significativa na inclinação.
89
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
O segundo modelo mostra que o sexo têm um efeito significativo sobre a variável dependente,
que neste caso pode ser interpretado como uma diferença significativa nos “interceptos” entre as
linhas de regressão de machos e fêmeas. Podemos comparar mod1 e mod2 com o comando anova
() para avaliar se remover a interação afeta significativamente o ajuste do modelo:
anova(mod1,mod2)
Analysis of Variance Table
Model 1: pelvic ~ snout * sex
Model 2: pelvic ~ snout + sex
Res.Df RSS Df Sum of Sq F Pr(>F)
1 31 11.952
2 32 11.957 -1 -0.0049928 0.0129 0.9101
Você pode obter informações detalhadas deste comando digitando ?nls. Outros métodos podem
ser usados para ajustar o modelo de regressão desejado.
Você pode conhecer alguns deles digitando help.search(“regression”) no R Console.
Exemplo
Num projeto de construção de uma barragem é de grande interesse equacionar a relação entre
a cota do nível d’água e o volume armazenado quando esta cota é atingida. Essa relação é obtida a
partir de um diagrama cota-volume estimado através do levantamento topográfico da região onde
será construída a barragem e suas respectivas curvas de nível.
90
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Suponha os dados a seguir, com a cota dada em metros e o volume em quilômetros cúbicos:
cota=c(1,2,3,4,5,6,7,8,9,10)
volume=c(7,10,14,20,31,40,58,84,113,165)
dados=data.frame(cota,volume)
Veja como os dados se dispersam:
plot(dados)
library(nlme)
funcao=volume~a*exp(b*cota)
exponencial=nls(funcao, #modelo que se deseja ajustar($)
dados, #data.frame com o conjunto de dados
start=c(a=1,b=1)) #valores iniciais dos parâmetros($$)
#($)usando o método dos mínimos quadrados. são valores iniciais estimados #para os
parâmetros #coeficientes). Quando a equação converge esses #valores podem ser quaisquer
# diferentes de zero.
summary(exponencial)
Parameters:
Estimate Std. Error t value Pr(>|t|)
a 5.116389 0.227553 22.48 1.62e-08 ***
b 0.346720 0.004879 71.06 1.71e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
91
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
15.5Regressão Logística
O modelo de regressão logístico é semelhante ao modelo de regressão linear. No entanto, no
modelo logístico a variável resposta é binária. Uma variável binária
assume dois valores, como por exemplo, Yi = 0 e Yi = 1 denominados
"fracasso" e "sucesso", respectivamente. Neste caso, "sucesso" é o evento de interesse.
#Simula os dados
nobs=100
beta0=-10
beta1=0.006
saldo=runif(nobs,1300,2300)
p_x = exp(beta0 + beta1 * saldo) / (1 + exp(beta0 + beta1 * saldo))
y = rbinom(n=length(saldo), size=1, prob=p_x)
data = data.frame(saldo, p_x, y)
92
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
#Regressão
default.glm = glm(y~saldo, data=data,family=binomial)
summary(default.glm)
plot(saldo,y)
lines(data$saldo, default.glm$fitted, type="l", col="red")
Com a função plot base, você teria que ordenar os dados antes:
plot(saldo,y)
lines(data$saldo[order(data$saldo)], default.glm$fitted[order(data$saldo)], type="l", col="red")
library(ggplot2)
grafico = ggplot(data, aes(x=saldo, y=y)) + geom_point() + geom_line(aes(x=saldo,
y=default.glm$fitted), col="red")
grafico
Ou você pode mandar o ggplot fazer a regressão com o geom_smooth, vai dar na mesma:
ggplot(data, aes(x=saldo, y=y)) + geom_point() +
geom_smooth(method="glm", family="binomial", col="red", se=F)
93
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
94
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
95
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Não se deve permitir que uma técnica experimental inadequada ou imperfeita seja a responsável
96
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
principal pelo tamanho do erro experimental. Um ensaio bem delineado e planejado pode perder
muito do seu valor se não for conduzido cuidadosamente. Deve-se pesar o material, calibrar o
equipamento ou tirar as medidas necessárias, com o máximo de precisão possível.
Uma das primeiras precauções a se tomar é com a marcação adequada das uni- dades
experimentais. Com animais, há métodos padronizados de marcação de gado ou aves, assim, o único
cuidado é manter a anotação do código utilizado.
Uma falha bastante comum é a aplicação não uniforme dos tratamentos em todas as repetições.
Por exemplo, quando não se cuida da limpeza do equipamento utilizado para fornecer rações aos
animais, podem ocorrer diferenças que não são devidas às rações e sim, à quantidade de ração que
cada animal recebeu. Em experimentos com animais eventualmente coprófagos1, como suínos,
quando os mesmos têm acesso a uma área comum e quando os
1Copro em latim significa ‘fezes’; fagia significa ‘ingestão’. Pratica ingestão de fezes
97
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
tratamentos são aditivos de rações (vitaminas, minerais, etc.), que podem ser eliminados pelas fezes, se
não houver um monitoramente constante, os resultados obtidos podem ser influenciados por esse hábito
dos animais.
Finalmente, se mais de uma pessoa está aplicando os tratamentos, deve-se cuidar para que as
variações entre elas não sejam confundidas com variações entre tratamentos. Neste caso, é possível
aproveitar o delineamento experimental fazendo com que as variações entre as pessoas afetem todos os
tratamentos igualmente.
a) Sem Suplemento (S); b) Mandioca (M); c) Araruta (A); d) Batata Doce (B);
98
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
S1 S2 S3 S4 S5 S6 M1 M2 M3 M4 M5 M6 A1 A2 A3 A4 A5 A6 B1 B2 B3 B4 B5 B6
e, a partir daí, utilizando uma tabela de números aleatórios, faz-se a alocação do tipo de suplemento a
cada animal. Suponha que a sequência de números aleatórios sorteada, tenha sido:
24 23 22 14 1 13 6 20 8 7 9 4 21 15 17 16 19 2 11 5 10 3 18 12
Para obter a sequência de números aleatórios e alocá-las a cada tratamentos usando o R, bastam
os seguintes comandos:
Ração = factor(rep(c(“S”,’M’,’A’,’B’), each=6))
Animal = sample(1:24))
data.frame(Ração, Animal)
Considere as seguintes produções médias diárias (kg) de leite a 4% de gordura das vacas
submetidas a administração de raízes e tubérculos, como suplementação de inverno na alimentação
de vacas em lactação.
Seja yij o valor da produção de leite da j-ésima vaca que recebeu o i-ésimo tratamento. Os valores
das produções (kg) de leite a 4% de gordura das vacas que participaram do estudo, podem ser
resumidos na forma da Tabela 2.1.
99
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
100
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Suponha que haja a tratamentos ou diferentes níveis de um único fator que se queira comparar. A
resposta observada de cada dos a tratamentos é uma variável aleatória. Os dados seriam da forma:
101
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
102
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
103
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
B
C 4 7 4 G
D 2 7 2 A
E 6 6 0
0 1 2 3 4 5 6 7 8 9 10
F 7 7
V1
G 6 4
104
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Exemplo2:
#.....ANALISE DE AGRUPAMENTO HIERÁRQUICO.........
setwd("~/Dropbox/EngPesca2013/Rotinas")
ecopeixe=read.csv("bioecopeixe.csv", dec = ',')
# Vamos selecionar só os dados numericos do dataframe
### Trabalahndo apenas com dados numéricos
ecopeixe2=ecopeixe[,2:11] # É preciso que o número de
# variáveis não ultrapasse o nº de casos
## Calculandoa matriz de dissemelhança
d=dist(ecopeixe2, method = "euclidean")
d
# Método de calculo de agrupamento:
# "ward", "single", "complete", "average", "median", "centroid"
fit=hclust(d, method = "ward.D")
fit
# Agora vamos construir o dendograma (gráfico)
plot(fit, hang = -0.5, main="Dendograma de agrupamento", xlab="Amostras")
# identificar a que cluster pertence cada observação (paciente)
grupos=cutree(fit,k=3)
grupos
# construir dendograma com bordas vermelhas
rect.hclust(fit, k=3, border = "red")
text(fit$order, labels = as.character(ecopeixe[,1])
105
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
106
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
18 Referências Bibliográficas
A Brief History R: Past and Future History, Ross Ihaka, Statistics Department, The University of
Auckland, Auckland, New Zealand, available from the CRAN website
Contributors, site www.r-project.org
Kurt Hornik. The R FAQ: Why is R named R?. [S.l.: s.n.]. ISBN 3-900051-08-9 Página visitada em
2008-01-29.
Free Software Foundation (FSF) Free Software Directory: GNU R. Visitado em 2012-11-13.
What is R?. Visitado em 2009-04-28.
107
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
Fox, John and Andersen, Robert. (January 2005). "Using the R Statistical Computing Environment to
Teach Social Statistics Courses" (PDF). Department of Sociology, McMaster University.
Vance, Ashlee. "Data Analysts Captivated by R's Power", New York Times, 2009-01-06. Página visitada
em 2009-04-28. “R is also the name of a popular programming language used by a growing number
of data analysts inside corporations and academia. It is becoming their lingua franca...”
David Smith (2012); R Tops Data Mining Software Poll, Java Developers Journal, May 31, 2012.
Karl Rexer, Heather Allen, & Paul Gearan (2011); 2011 Data Miner Survey Summary, presented at
Predictive Analytics World, Oct. 2011.
Robert A. Muenchen (2012);The Popularity of Data Analysis Software.
Duncan Temple Lang, Calling R from Java
Jackman, Simon. (Spring 2003). "R For the Political Methodologist" (PDF). The Political Methodologist
11 (1): 20–22. Political Methodology Section,American Political Science Association.
CRAN Task View: Graphic Displays & Dynamic Graphics & Graphic Devices & Visualization The
Comprehensive R Archive Network. Visitado em 2011-08-01.
Dalgaard, Peter. Introductory Statistics with R. New York, Berlin, Heidelberg: Springer-Verlag, 2002.
10–18, 34 p. ISBN 0387954759
Speed comparison of various number crunching packages (version 2) SciView. Visitado em 2007-11-03.
Mais Referências:
https://stat.ethz.ch/pipermail/r-sig-teaching/2011q4/000387.html
http://r-eco-evo.blogspot.com.br/2011/08/comparing-two-regression-slopes-by.html
http://www.biostathandbook.com/ancova.html
http://rcompanion.org/rcompanion/e_04.html
http://www.biostathandbook.com/HandbookBioStatThird.pdf
https://sites.google.com/site/tutorialdeanalisesestatisticas/topicos/estatistica-multivariada/analise-d
e-correspondencia-canonica/tutorial
https://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/
http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:02_tutoriais:tutorial6:start
108
_________________________________________Estatística Descritiva e Introdução aos Testes Estatístico
109