Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da...

37
1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago Wendling Gonçalves de Oliveira Curitiba 2018

Transcript of Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da...

Page 1: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

1

Linguagem R para iniciantes: da programação básica à análise de dados

Deivison Venicio Souza

Luani Rosa de Oliveira Piva

Thiago Wendling Gonçalves de Oliveira

Curitiba

2018

Page 2: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

2

Linguagem R para iniciantes:

da programação básica à análise de dados

1 O ambiente R

Um software estatístico livre

R é um ambiente de software livre de estatística e gráficos, capaz de compilar e executar

em uma ampla variedade de plataformas UNIX, Windows e MacOS. Para fazer o download

do R, é necessário escolher um espelho CRAN para que seja feito o download da versão mais

atual.

Os espelhos CRAN são servidores distribuídos em diversos países que armazenam o

software R. Assim, ao deixar escolher de qual servidor será feito o download, permite-se que o

usuáriodefinaoservidormaispróximodesualocalização,reduzindootempodetráfego.

2 Instalação do RGui e Rstudio

10PASSO: Acessar a página do projeto R em https://www.r-project.org/;

20PASSO: Do lado esquerdo da página clique sobre o link CRAN;

30PASSO: Será aberta uma página com diversos links de CRAN Mirrors, isto é, espelhos

CRAN.Oidealéselecionaroservidormaispróximodasualocalizaçãoparafazerodownload do R

Development CoreTeam;

40PASSO: Na página http://cran-r.c3sl.ufpr.br/, na seção Download and Install R, clicar

em um dos três links, conforme o SO dousuário;

50PASSO: Clicar no link do subdiretório base ou em install R for the first time, para

instalar o R pela primeiravez;

60PASSO: Clicar em Download R 3.3.2 for Windows. Assim, será iniciado o download do

R Development Core Team para o respectivo sistema;e

70PASSO: Por fim, basta usar o setup para instalar o programa.

Page 3: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

3

3 Instalação do Rstudio

10PASSO: Acessar a página do projeto RStudio: https://www.rstudio.com;

20PASSO: Products → RStudio;

30PASSO: Selecionar a versão do RStudio para Desktop;

40PASSO: Na edição Open source → Download Rstudio Desktop;

50PASSO: Installers for Supported Platforms → instalador RStudio; e

60PASSO: Por fim, basta usar o setup baixado para instalar oprograma.

4 Iniciando no ambiente R

A janela inicial doRGui

No contato inicial do usuário com o RGui tem-se a visão inicial do R Console com a

versão doRemusoeascondiçõesdelicenciamento.Algumasfunçõesdetestesãomostradase,para

saber o que cada função retorna basta digitá-las no prompt de comando do R Console

simbolizado pelo sinal >(maior) em vermelho. Haverá um cursor piscando à direita do

prompt,indicandoolocalparadigitaroscomandosparaoR.

Execute as funções demo(), help(), help.start() e q().

5 Operações e operadoresaritméticos

A linguagem R permite executar operações aritméticas básica (soma, subtração,

multiplicação, divisão e potenciação):

Operadores Nome Operações

+ Somatório 2+3

* Multiplicação 4*9

/ Divisão 20/5

- Subtração 32-10

^ ou ** Potenciação 5^3

%% Resto inteiro da divisão 10%%3

%/% Parte inteira da divisão 10%/%3

Page 4: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

4

6 Operadoreslógicos

Operadores lógicos Descrição

< Menor do que…

> Maior do que…

≤ Menor ou igual do que…

≥ Maior ou igual do que…

== Igual a…

& E (and)/para vetores

| Ou (or)/para vetores

!= Diferente de…

! Não…

is.na() Valor numérico ou faltante…

7 Estrutura de dados noR

Os objetos são criados no R com o objetivo de armazenar dados. Todo objeto em R têm

uma classe, que pode ser descoberta usando a função class(). Os objetos-vetores podem ser

do tipo numeric, logical, character, etc. Outros objetos incluem matrizes, data frames,

funções, listas,arrays.

Antes de iniciar as seções que detalham os tipos de objetos existentes no R é importante

saber nomeá-los. Assim, podemos listar algumas condições para atribuição de nomes

àobjetos:

1. Onomedoobjetodeve,necessariamente,iniciarcomumaletra;

2. Pode-seusarletrasmaiúsculasouminúsculasnonomedoobjeto;

3. Onomedosobjetossãosensíveisàsletrasmaiúsculasouminúsculas(ex:Ufpr/ufpr);

4. O nome não pode ter símbolos de funções ou operações matemáticas (+; /; -; *;^);

5. Números(0a9)podemserinseridosnonomedoobjeto,excetonaprimeiraposição;

6. Nãosepodeusarespaçoentreosnomesdosobjetos(alternativa=usarponto(.)ou

underline(_);

7. Paraatribuironomeaumobjetodeve-seusarocomando<-(recebe);e

8. Pode-se usar também a função assign() para fazer atribuição (menos comum).

Obs.: O R é casesensitive, isto é, diferencia letras maiúsculas e minúsculas.

7.1 Vetores

O vetor é o tipo de objeto mais importante em R, constituindo a forma mais simples de

armazenar dados. São caracterizados por possuírem somente uma dimensão e, todos os

elementos constituintes devem ter, obrigatoriamente, a mesma natureza (classe).

Os vetores podem ser considerados células contíguas que contém dados. Estas células

Page 5: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

5

podem ser acessadas por meio de operações de indexação (R Language Definition).

Quaisfunçõesusarparacriarumvetor?

a) Função c() (concatenate): Função genérica que permite concatenar (combinar) argu-

mentos para formar umvetor.

b) Função seq() (sequence): Função genérica usada para gerar sequências de números em

intervalos pré-definidos. Os principais parâmetros da funçãoseq().

c) Função rep() (replicate): Função genérica usada para replicar um valor “x” . Os

principais parâmetros da funçãorep():

# Criando objeto-vetor e atribuindo nomes.

c("Acapu", "Araucaria", "Mogno", "Cedro", "Ipe")

assign("especie", c("Acapu", "Araucaria", "Mogno", "Cedro", "Ipe"))

especie <-c("Acapu", "Araucaria", "Mogno", "Cedro", "Ipe")

c(23.0, 27.0, 33.6, 42.6, 52.1)

diametro <-c(23.0, 27.0, 33.6, 42.6, 52.1)

c(8.5, 9.2, 10.5, 13.4, 15.8)

altura <-c(8.5, 9.2, 10.5, 13.4, 15.8)

b) Função seq()(sequence):

seq(10) # Sequência de 1 a 10, com intervalo 1.

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

seq(1:10) # Sequência de 1 a 10, com intervalo 1.

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

seq(from =1, to =10, by =1) # Sequência de 1 a 10, com intervalo 1.

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

c) Função rep()(replicate):

rep(x =1:4, 2) # Repete a sequência de 1 a 4 (2x).

## [1] 1 2 3 4 1 2 3 4

rep(1:4, times =3) # Repete a sequência de 1 a 4 (3x).

## [1] 1 2 3 4 1 2 3 4 1 2 3 4

rep(x =1:4, each =2) # Repete cada valor em "x" (2x).

## [1] 1 1 2 2 3 3 4 4

Page 6: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

6

ComoidentificaraclassedeumvetornoR?

A identificação da classe de um objeto-vetor no R pode ser feita usando a função

class(). Além disso, existem funções lógicas que testam a classe de um objeto-vetor.

a) Objeto-vetor da classe “numeric” e “character”

a <-45; class(a); is.numeric(a)

## [1] "numeric"

## [1] TRUE

b <- "olá Mundo"; class(b); is.character(b)

## [1] "character"

## [1] TRUE

c <-c("Quem vai ao Pará", "Parou", "tomou açai, ficou!")

class(c); is.character(c)

## [1] "character"

## [1] TRUE

c) Objeto-vetor da classe “factor”

A função factor() é usada para codificar um vetor como um “fator” (categorias).

Outra alternativa é usar a função de conversão as.factor().

cortar <-c("Não", "Não", "Não", "Não", "Sim", "Sim")

print(cortar); class(cortar)

## [1] "Não" "Não" "Não" "Não" "Sim" "Sim"

## [1] "character"

fcortar <-factor(cortar)

print(fcortar)

## [1] Não Não Não Não Sim Sim

## Levels: Não Sim

7.2 Matrizes

Como criarmatrizes?

Asmatrizesdiferenciam-sedosvetoresporadmitiremduasdimensões,expressasporlinhase

colunas. Uma matriz pode ser formada por elementos numéricos e/ou caracteres (strings)

na suaestrutura.

a) Função matrix()

A maneira mais prática para criar matrizes no R é usar a função matrix().

Page 7: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

7

mat.1<-matrix(1:6, nrow=2, ncol=3, byrow =TRUE,

dimnames =list(c("L1", "L2"),

c("C1", "C2", "C3")))

print(mat.1)

## C1 C2 C3

## L1 1 2 3

## L2 4 5 6

7.3 Dataframes

O data frame é bastante similar a matriz, porém é capaz de reunir vetores de

diferentes classes (naturezas) com a condição de possuírem igual comprimento.Para criar

data frames diretamente no R pode-se usar as funções data.frame() ou edit().

Função data.frame()

# Criar data frame a partir de vetores existentes

especie <-c("Acapu", "Araucaria", "Mogno", "Cedro", "Ipe")

diametro <-c(23.0, 27.0, 33.6, 42.6, 52.1)

altura <-c(8.4, 8.7, 9.1, 13.2, 15.4)

cortar <-c("Não", "Não", "Não", "Não", "Sim")

invFlor.1<-data.frame(especie, diametro, altura, cortar,

stringsAsFactors =TRUE)

8 Indexação noR

Mecanismos deindexação

Quando o interesse é extrair, excluir ou substituir elementos de objetos é possível

fazê-lo usando-se de algum mecanismo de indexação, que dependerá do tipo de objeto

manejado. Isto é, usa-se de um mecanismo de localização da posição do elemento.

O que signifa indexar?

Dispor em índice, numa lista que metodicamente indica o conteúdo de alguma coisa;

ordenar: indexar os livros de uma biblioteca(Dicio, Dicionário Online de Português).

Em termos gerais, existem seis modos de indexar valores no R:

1. Nomes;

2. Valoreslógicos;

3. Inteirospositivos;

4. Inteirosnegativos;

5. Espaço em branco;e

6. Zero.

Page 8: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

8

Para indexar elementos ou subconjuntos de objetos no R existem três operadores básicos: [

], [[ ]] e $.

• O operador [ ] permite extrair múltiplos elementos de um objeto, e retornar um novo

objeto de mesmaclasse.

• O operador [[ ]] permite extrair elementos de objetos do tipo lista ou data frames. A

classedoobjetoextraídonãoserá,necessarriamente,umalistaoudataframe.

• Ooperador$permiteextraircomponentesnomeadosdeumalistaoudataframe.

8.1 Indexação devetores

Para extrair, excluir ou substituir elementos no objeto-vetor usa-se o comando [ i ].

Onde o índice “i” indica a posição do elemento no objeto. O indice “i” inicia no valor 1. A

função c()podeserusadaparaconcatenarasposiçõesdesejadasdentrodecolchetes.

especie <-c("Acapu", "Araucaria", "Mogno", "Cedro", "Ipe")

diametro <-c(23.0, 27.0, 33.6, 42.6, 52.1)

# Extraindo elementos (usando valores inteiros)

especie[2] # Um elemento.

## [1] "Araucaria"

diametro[1:3] # Múltiplos elementos (sequenciais).

## [1] 23.0 27.0 33.6

especie[c(1,3,5)] # Múltiplos elementos (alternados).

## [1] "Acapu" "Mogno" "Ipe"

diametro[seq(from =1, to =5, by =2)] # Múltiplos elementos usando seq ().

## [1] 23.0 33.6 52.1

Algumas vezes o interesse é substituir um ou mais elemento do objeto-vetor por outro:

Especie <-c(NA, "Araucaria", "Mogno", "Cedro", "Ipe", NA)

Diametro <-c(23.0, 27.0, 33.6, 42.6, 52.1)

# Substitui os NAs

is.na(Especie)

## [1] TRUE FALSE FALSE FALSE FALSE TRUE

Especie[is.na(Especie)] <- "Não Identificada"

print(Especie)

## [1] "Não Identificada" "Araucaria" "Mogno"

## [4] "Cedro" "Ipe" "Não Identificada"

Page 9: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

9

# Altera o diâmetro da posição 3, e atribui 33,5cm.

Diametro[3] <-33.5

# Altera os diâmetros das posições 4 e 5, e atribui 55,3cm e 63,4cm

Diametro[c(4, 5)] <-c(55.3, 63.4)

8.2 Indexação dematrizes

Para extrair, excluir ou substituir elementos de uma matriz usa-se o comando [i, j].

Ondeoíndice“i”indicalinhase“j”indicaascolunasdamatriz.

a) Extraindo elementos: Usa-se indexação positiva.

mat <-matrix(1:6, nrow=2, ncol=3, byrow =TRUE,

dimnames =list(c("L1", "L2"),

c("C1", "C2", "C3")))

mat[2,2] # elemento da linha 2 e coluna 2.

## [1] 5

mat[2, ] # todos elementos da linha 2.

## C1 C2 C3

## 4 5 6

mat[c(1,2), c(2,3)] # elementos de L1 e L2, e C2 e C3.

## C2 C3

## L1 2 3

## L2 5 6

mat[,c(-1,-3)] # exclui as colunas 1 e 3.

## L1 L2

## 2 5

mat[1, 1] <-0# substitui o elemento da posição 1, por 0.

8.3 Indexação de dataframes

O acesso a um determinado vetor em um data frame pode ser realizado utilizando-se do

comando [ ] (similar às matrizes) ou dos comandos [[ ]] e $ (similar às listas).

invFlor.2<-data.frame(

especie =c("Acapu", "Araucaria", "Mogno", "Cedro", "Ipe"),

diametro =c(23.0, 27.0, 33.6, 42.6, 52.1),

altura =c(8.4, 8.7, 9.1, 13.2, 15.4),

cortar =c("Não", "Não", "Não", "Não", "Sim"),

stringsAsFactors =TRUE)

print(invFlor.2)

Page 10: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

10

## especie diametro altura cortar

## 1 Acapu 23.0 8.4 Não

## 2 Araucaria 27.0 8.7 Não

## 3 Mogno 33.6 9.1 Não

## 4 Cedro 42.6 13.2 Não

## 5 Ipe 52.1 15.4 Sim

Comandos [ ] e [[ ]]

invFlor.2[2,1] # similar as matrizes

## [1] Araucaria

## Levels: Acapu Araucaria Cedro Ipe Mogno

invFlor.2[[2,1]] # similar as listas

## [1] Araucaria

## Levels: Acapu Araucaria Cedro Ipe Mogno

invFlor.2[, c(1,2,4), drop=FALSE] # drop = FALSE

especie diametro cortar

Acapu 23.0 Não

Araucaria 27.0 Não

Mogno 33.6 Não

Cedro 42.6 Não

Ipe 52.1 Sim

invFlor.2[c(1,2), c("especie","diametro")] # mais específico

especie diametro

Acapu 23.0

Araucaria 27.0

Comando $

invFlor.2$diametro # acessa a coluna diâmetro.

## [1] 23.0 27.0 33.6 42.6 52.1

invFlor.2$cortar # acessa a coluna cortar.

## [1] Não Não Não Não Sim

## Levels: Não Sim

# acessa a coluna cortar e extrai os elementos da posição 4 e 5.

invFlor.2$cortar[c(4,5)]

## [1] Não Sim

## Levels: Não Sim

Page 11: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

11

Adicionando colunas aoDF

# Adicionando a coluna “Protegida”

protegida <-c("Sim", "Sim", "Sim", "Não", "Não")

invFlor.2$protegida <-protegida

print(invFlor.2)

## especie diametro altura cortar protegida

## 1 Acapu 23.0 8.4 Não Sim

## 2 Araucaria 27.0 8.7 Não Sim

## 3 Mogno 33.6 9.1 Não Sim

## 4 Cedro 42.6 13.2 Não Não

## 5 Ipe 52.1 15.4 Sim Não

9 Visualização gráfica noR

9.1 A funçãoplot()

É uma função genérica para plotagem de objetos R. Para saber mais detalhes sobre os

argumentos dos parâmetros gráficos deve-se consulte o par. O uso da função plot() é um dos

mecanismos mais simples para a criação dos gráficos no R. Para estudar alguns detalhes da

função plot() usar-se-á do data set“trees”.

?trees # Circunferência, altura e volume de árvores de Cerejeira

data("trees")

head(trees)

Girth Height Volume

8.3 70 10.3

8.6 65 10.3

8.8 63 10.2

10.5 72 16.4

10.7 81 18.8

10.8 83 19.7

tail(trees)

Girth Height Volume

26 17.3 81 55.4 27 17.5 82 55.7 28 17.9 80 58.3 29 18.0 80 51.5 30 18.0 80 51.0

Page 12: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

12

31 20.6 87 77.0

str(trees) ##'data.frame':

31obs.of 3variables:

## $Girth:num 8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ...

## $Height:num 70 65 63 72 81 83 66 75 80 75 ...

## $Volume:num 10.310.310.216.418.819.715.618.222.619.9...

dim(trees)

##[1]31 3

Para fins didáticos, iremos fazer a tranformação das unidades de medidas das variáveis

biométricas:

cic_cm <- trees$Girth*2.54 altura_m <-

trees$Height*0.3048 vol_m3 <-

trees$Volume/35.315 dap_cm <-cic_cm/pi

dados <- cbind(trees, dap_cm, altura_m, vol_m3)

print(dados) ## GirthHeightVolume dap_cmaltura_m vol_m3

## 1 8.3 70 10.3 6.710609 21.3360 0.2916608

## 2 8.6 65 10.3 6.953161 19.8120 0.2916608

## 3 8.8 63 10.2 7.114863 19.2024 0.2888291

## 4 10.5 72 16.4 8.489325 21.9456 0.4643919

## 5 10.7 81 18.8 8.651026 24.6888 0.5323517

## 6 10.8 83 19.7 8.731877 25.2984 0.5578366

## 7 11.0 66 15.6 8.893578 20.1168 0.4417386

## 8 11.0 75 18.2 8.893578 22.8600 0.5153617

## 9 11.1 80 22.6 8.974429 24.3840 0.6399547

## 10 11.2 75 19.9 9.055280 22.8600 0.5634999

## 11 11.3 79 24.2 9.136130 24.0792 0.6852612

## 12 11.4 76 21.0 9.216981 23.1648 0.5946482

## 13 11.4 76 21.4 9.216981 23.1648 0.6059748

## 14 11.7 69 21.3 9.459533 21.0312 0.6031431

## 15 12.0 75 19.1 9.702085 22.8600 0.5408467

## 16 12.9 74 22.2 10.429742 22.5552 0.6286281

## 17 12.9 85 33.8 10.429742 25.9080 0.9571004

## 18 13.3 86 27.4 10.753145 26.2128 0.7758743

## 19 13.7 71 25.7 11.076547 21.6408 0.7277361

## 20 13.8 64 24.9 11.157398 19.5072 0.7050828

## 21 14.0 78 34.5 11.319100 23.7744 0.9769220

## 22 14.2 80 31.7 11.480801 24.3840 0.8976356

## 23 14.5 74 36.3 11.723353 22.5552 1.0278918

## 24 16.0 72 38.3 12.936114 21.9456 1.0845250

## 25 16.3 77 42.6 13.178666 23.4696 1.2062863

Page 13: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

13

## 26 17.3 81 55.4 13.987173 24.6888 1.5687385

## 27 17.5 82 55.7 14.148874 24.9936 1.5772335

## 28 17.9 80 58.3 14.472277 24.3840 1.6508566

## 29 18.0 80 51.5 14.553128 24.3840 1.4583038

## 30 18.0 80 51.0 14.553128 24.3840 1.4441455

## 31 20.6 87 77.0 16.655246 26.5176 2.1803766

Criando um gráfico de dispersão entre diâmetro (cm) e volume (m³).

Modificandootipodegráfico(type).

# mar = inferior, esquerda, superior e direita.

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(2,2))

plot(dap_cm,vol_m3, main ="type = default")

plot(dap_cm,vol_m3, type="l", main ="type = l")

plot(dap_cm,vol_m3, type="b", main ="type = b")

plot(dap_cm,vol_m3, type="o", main ="type = o")

Page 14: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

14

Adicionando título, subtítulo erótulos

Usar os comandos main e sub para adicionar um título e subtítulo ao gráfico. Para

modificar os títulos dos eixos usar os comandos xlab = “Título do eixo x” e ylab = “Título

do eixoy”.

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(2,2))

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP")

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP",

sub="(Árvores de cerejeiras)")

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP",

xlab="DAP (cm)")

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP",

xlab="DAP (cm)", ylab="Volume (m3)")

Page 15: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

15

Page 16: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

16

O comando title() (comando de baixo nível) constitui outro mecanismo de inserção de

título e rótulos de eixos em gráficos da plot().

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0))

plot(dap_cm, vol_m3, type="o", xlab="", ylab="")

title("Relação Volume x DAP", xlab="DAP (cm)", ylab="Volume (m3)")

Se o título for demasiadamente grande pode-se fazer quebra de linha:

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0))

plot(dap_cm, vol_m3, type="o",

main="Relação Volume x DAP para árvores de Cerejeiras")

Page 17: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

17

par(mar =c(4.5,4,2.5,1), mgp =c(2,1,0))

plot(dap_cm, vol_m3, type="o",

main="Relação Volume x DAP \n (árvores de Cerejeiras)")

Modificando tipos de pontos(pch)

Pode-se alterar o tipo de ponto usando o comando pch, que recebe um valor numérico

que define o tipo de ponto plotado no gráfico.

par(mar =c(4.5,4,2.5,1), mgp =c(2,1,0))

plot(0:20,

axes = F, #coordenadas do eixo das abiscissas

rep(0,21), #coordenadas do eixo das ordenadas

pch=0:20, # padrão de variação dos pontos

cex=2, # tamanho dos pontos

xlab="pch", # eixo x

ylab="") # eixo y

axis(side=1, seq(from=0,to=20,by =1),cex.axis=0.7)

Page 18: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

18

Observe um exemplo prático:

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(3,2))

plot(dap_cm, vol_m3, pch=0, main ="pch=0")

plot(dap_cm, vol_m3, pch=4, main ="pch=4 (x)")

plot(dap_cm, vol_m3, pch=17, main ="pch=17 (triângulo sólido)")

plot(dap_cm, vol_m3, pch="M", main ="pch=M")

plot(dap_cm, vol_m3, pch="T", main ="pch=T")

plot(dap_cm, vol_m3, pch="1", main ="pch=1 (entre aspas)")

Page 19: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

19

Modificando tipos de linhas(lty)

Pode-se alterar o tipo de linha usando o comando lty, que assume um valor numérico

que varia de 0 a6.

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(3,2))

plot(dap_cm, altura_m, type="l", main ="default (solid)")

plot(dap_cm, altura_m, type="l", lty=0, main ="sem linha")

plot(dap_cm, altura_m, type="l", lty=2, main ="dashed")

plot(dap_cm, altura_m, type="l", lty=4, main ="dotdash")

plot(dap_cm, altura_m, type="l", lty=5, main ="longdash")

plot(dap_cm, altura_m, type="l", lty=6, main ="twodash")

Page 20: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

20

Modificandoalarguradaslinhas(lwd)

Pode-se alterar a largura da linha usando o comando lwd, que assume sempre um

valor numérico positivo maior ou igual a 1.

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(2,2))

plot(dap_cm,altura_m, type="l", lty=2, main ="default")

plot(dap_cm,altura_m, type="l", lty=2, lwd=2, main ="lwd=2")

plot(dap_cm,altura_m, type="l", lty=2, lwd=4, main ="lwd=4")

plot(dap_cm,altura_m, type="l", lty=2, lwd=15, main ="lwd=15")

Page 21: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

21

Modificandocoresdepontoselinhas(col)

Pode-se alterar a cor das linhas e pontos basta usar o comando col e especificar entre

aspas a cor desejada. A função colors() fornece um variedade de cores disponíveis para

uso. Utilizeafunçãodemo(“colors”)paravisualizarumademostraçãodecores.

head(colors(), 40)

## [1]"white"

## [5]"antiquewhite2" ## [9]"aquamarine1"

"aliceblue"

"antiquewhite3"

"aquamarine2"

"antiquewhite"

"antiquewhite4"

"aquamarine3"

"antiquewhite1"

"aquamarine"

"aquamarine4" ## [13]"azure" "azure1" "azure2" "azure3"

## [17]"azure4" "beige" "bisque" "bisque1"

## [21]"bisque2" ##[25]"blanchedalmond"

"bisque3"

"blue"

"bisque4"

"blue1"

"black"

"blue2" ## [29]"blue3" "blue4" "blueviolet" "brown"

## [33]"brown1" "brown2" "brown3" "brown4"

## [37]"burlywood" "burlywood1" "burlywood2" "burlywood3"

length(colours())

## [1] 657

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(2,2))

plot(dap_cm, vol_m3, pch=0, col="red", main ="col = red")

plot(dap_cm, vol_m3, pch=15, col="lightblue", main ="col = lightblue")

plot(dap_cm, vol_m3, type="l", lty=2, lwd=4, col="yellow", main ="col = yellow")

plot(dap_cm, vol_m3, type="l", lty=2, lwd=2, col="green3", main ="col = green3")

Page 22: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

22

Modificandocoresdotítuloeeixos(col.main,col.labecol.axis)

Pode-se alterar as cores do título e labels dos eixos x e y usando os comandos col.main

e col.lab. O comando col.axis pode ser usado para modificar as cores dos valores dos eixos.

Além disso, existem comandos de baixo nível que realizam as mesmas tarefas: title().

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(2,2))

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP",

xlab="DAP (cm)", ylab="Volume (m3)",

col.main="red4")

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP",

xlab="DAP (cm)", ylab="Volume (m3)",

col.main="red4", col.lab="orange3")

plot(dap_cm, vol_m3, type="o", main="Relação Volume x DAP",

xlab="DAP (cm)", ylab="Volume (m3)",

col.main="red4", col.lab="orange3",

col.axis="green4")

plot(dap_cm, vol_m3, type="o", xlab="", ylab="")

title("Relação Volume x DAP", col.main="purple",

xlab="DAP (cm)", ylab="Volume(m3)", col.lab="green4")

Page 23: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

23

Modificandooslimitesdoseixos(xlim,ylimeaxis)

Pode-se alterar os limites dos eixos (mínimos e máximos) usando os comandos xlim e

ylim. Além disso, o comando axis pode ser usado para obter uma maior personalização dos

eixos. Porém, no plot original deve constar axes = FALSE.

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(3,2))

plot(dap_cm,vol_m3, pch=0, col="red",

xlim=c(0, 20), ylim=c(0, 3),

main="xlim=c(0, 20) e ylim=c(0, 3)")

plot(dap_cm,vol_m3, pch=0, col="red",

xlim=c(6, 10), ylim=c(0, 1.5),

main="xlim=c(6, 10) e ylim=c(0, 1.5)")

plot(dap_cm,vol_m3, pch=0, col="red",

xlim=c(10, 18), ylim=c(0.5, 2),

main="xlim=c(10, 18) e ylim=c(0.5, 2)")

plot(dap_cm,vol_m3, pch=0, col="red",

xlim=c(min(dap_cm), max(dap_cm)),

ylim=c(min(vol_m3), max(vol_m3)),

main="xlim=c(min, max) e ylim=c(min, max)")

plot(dap_cm,vol_m3, pch=0, col="red", axes=F)

axis(1, seq(from =round(min(dados$dap_cm),2),

to =round(max(dados$dap_cm),2),

by =1.2))

axis(2, seq(from =round(min(dados$vol_m3),2),

to =round(max(dados$vol_m3),2),

by =0.1))

Page 24: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

24

Page 25: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

25

10 Análise exploratória dedados

Configurandodiretóriodetrabalho(getwd()esetwd())

UmdetalheimportantenoiníciodecadaseçãodetrabalhonoRéinspecionaroseudiretório

detrabalhoatual,istoé,olocalondeserãosalvososarquivosproduzidospeloR(.R,etc.).

Paratanto,bastausarafunçãogetwd().Casonãoestejanodiretóriodesejadouseafunção

setwd(choose.dir()) para selecioná-lo. A função dir() é usada para listar os arquivos

existentes no diretóriocorrente.

getwd()

setwd(choose.dir())

dir()

Importando um conjunto dedados

Funções read.csv() eread.table()

O R permite importar dados disponíveis em outros formatos, por exemplo, .csv

(Comma- separated values) ou .txt (arquivo de texto). Ainda, é possível importar os dados de

arquivos de outros programas estatísticos (SPSS, SAS, Stata). Duas funções extremamente

úteis para realizar essa tarefa são read.csv() (importa arquivos no formato .csv) e

read.table() (importar arquivos no formato .txt). Se os dados estiverem em planilha do

Microsoft Excel, pode-sesalvá-

loscomaextensão.txtfazendo:salvarcomo→texto(separadoportabulações) (*.txt).

Do arquivo original “arvores.txt” têm-se os seguintes formatos:

- As colunas estão separadas por tabulação (no R isso é definido pela expressão regular “\t”);

- Oseparadordecimalusadonoarquivoéponto(.);

- Nãotemaspasdefinindoascolunasdetexto;e

- Oarquivocontémosnomesdasvariáveisnaprimeiralinha.

O que aconteceria se especificasse errôneamente o separador de colunas usado noarquivo,

cujo default é espaço? No exemplo, usa-se o separador vírgula (,) para fins de exemplificação.

Fazendoisso,asduascolunasexistentessãointerpretadascomoumasó.

nativas <-read.table(file ="arvores.txt", sep=",", header=T)

head(nativas)

## Arvores.Altura

## 1 1\t18

## 2 2\t15

## 3 3\t19

## 4 4\t12

Page 26: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

26

## 5 5\t14

## 6 6\t14

dim(nativas) # apenas 1 coluna, porque o separador não está correto.

## [1] 25 1

Então, para ler o arquivo “arvores.txt” corretamente deve-se fazer:

nativas <-read.table("arvores.txt", header = T, sep="")

Um aspecto importante na análise exploratória é verificar se o conjunto de dados

possui valores faltantes. Para tanto, pode-se usar a função lógica is.na():

is.na(nativas)

Funçãoread.xlsx()

Existem diversos pacotes com funções dedicadas à importação de conjuntos de dados

para o ambiente R. Um exemplo é o pacote xlsx (Dragulescu, 2014) desenvolvido para

permitir a leitura de dados diretamente de planilhas do Microsoft Excel usando a função

read.xlsx(). Para fins de exemplificação, usar-se-á a função para importar o arquivo

“guanandi.xlsx” que contém quatro variáveis (muda, dcolo, h (altura) e folhas). library(xlsx) # Carrega o pacote

# Usando read.xlsx(): sheetName = Nome arquivo

guanandi <-read.xlsx(file ="guanandi.xlsx",

sheetName ="guanandi", head =TRUE)

print(guanandi)

## muda dcolo h folhas

## 1 1 1.7 20.0 6

## 2 2 2.4 18.0 9

## 3 3 3.5 17.5 10

## 4 4 3.0 17.0 11

## 5 5 3.2 19.5 4

## 6 6 2.9 20.1 5

## 7 7 1.4 19.0 6

## 8 8 0.9 20.2 7

## 9 9 3.1 18.6 9

## 10 10 3.6 17.4 10

## 11 11 2.2 16.0 8

## 12 12 1.4 17.9 11

## 13 13 1.6 18.1 12

## 14 14 1.0 19.0 6

## 15 15 2.8 21.0 4

## 16 16 1.6 20.6 9

Page 27: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

27

## 17 17 1.9 22.0 8

## 18 18 2.3 17.4 11

## 19 19 2.7 16.9 10

## 20 20 3.0 16.3 10

## 21 21 3.1 19.5 5

## 22 22 2.7 18.4 7

## 23 23 1.9 20.6 9

## 24 24 2.2 21.1 10

## 25 25 3.0 20.0 9

Estatísticadescritiva

Estatística descritiva é a parte da estatística que descreve e avalia um conjunto de

dados, sejam populacionais ou oriundos de uma amostra representativa da população.

Medidas de tendênciacentral

1. Média aritmética: Matematicamente é a soma de todos os elementos de uma amostra ou

população dividida pela quantidade de elementos. A média aritmética é a medida de tendência

central mais conhecida e pode ser facilmente obtida no R usando a funçãomean():

x <-c(1, 5, 7, 18, 32, 10, 6) # criando um vetor

mean(x) # obtendo a média

## [1] 11.28571

2. Mediana: É um valor intermediário de um conjunto de dados, cujos n valores são dispos-

tos ordenadamente (rank). O ambiente R possui a função median() que calcula a mediana de

um conjunto de dados, sem a necessidade de realizar o procedimento de ordenamento

paraencontraraposiçãodamedidae,assimobterseuvalor.

x <-c(1, 5, 7, 18, 32, 10, 6) # vetor não ordenado (n=7)

y <-c(1, 5, 6, 7, 10, 18, 32) # vetor ordenado (n=7)

median(x) # a mediana?

## [1] 7

median(y) # a mediana?

## [1] 7

3. Moda: Refre-se ao valor mais frequente dentro do conjunto de dados.Por não ser uma

medida de posição muito usual no R-base não existe uma função específica para calcular a

moda. Então, para obter a moda utilizar-se-á do pacote modeest (Poncet, 2012) que dispões a

função mfv (Most frequentvalue).

library(modeest)

v <-seq(from =1, to =10, by =1) # amodal (todos valores)

y <-c(0, 1, 2, 3, 4, 5, 5, 5, 6, 6, 7, 7, 7) # bimodal

mfv(v)

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

Page 28: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

28

mfv(y)

## [1] 5 7

Medidas dedispersão

São medidas descrevem a variabilidade existente em umdeter- minado conjunto de

dados. As medidas de dispersão incluem: amplitude total, variância, desvio padrão e

coeficiente de variação.

1. Amplitude total

t <-c(2, 4, 5, 6, 10)

max(t)-min(t) # indiretamente

## [1] 8

range(t) # mostra o min(t) e o max(t)

## [1] 2 10

range(t)[2]-range(t)[1] # outra maneira

## [1] 8

2. Variância : Usar a função var()

z <-c(1, 2, 3, 4, 5)

var(z)

## [1] 2.5

Para treinar os outros recursos do ambiente R, realize o seguinte comando (a partir da

fórmula da variância amostral):

#Soma de Quadrados dos Desvios, dividido pelo graus de liberdade (n-1)

sum((z-mean(z))^2)/(length(z)-1)

## [1] 2.5

3. Desvio Padrão: usar a função sd().

x <-c(1, 2, 3, 4, 5)

sqrt(var(x)) # é a raiz quadrada da variância

## [1] 1.581139

Page 29: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

29

sd(x) # ou usar sd()

## [1] 1.581139

Testes estatísticosbásicos

Ao tratarmos da análise de experimentos, é necessária a realização de testes estatísticos

para verificação de determinadas hipóteses. Teste de hipóteses referem-se ao estabelecimento

de uma regra decisória que permite rejeitar ou não uma hipóese estatística com base nos

elementosamostrais(LEHMANN;ROMANO,2005).Regiãocríticaderejeição(maioriados testes

considera 95% deprobabilidade).

Atualmente, ao invés de fixar o nível de significância de um teste e simplesmente

relatar se H0 foi rejeitada ou não, tem-se dado preferência ao uso do valor de p. Assim, a

hipótese de nulidade (H0) é rejeitada se o valor de p for menor ou igual à α (alfa). Então, para

aplicação de um teste de hipótese os procedimento geral seria:

a) Formular as hipóteses H0 e H1 (hipótese do experimento) e definir o nível de signifi-

cância(α);

b) Especificar a estatística doteste;

c) Determinarovalordaestatísticadotesteevalordepcorrespondente;e

d) Comparar o p-valor com α(alfa).

- Sep-valorformenorouigualaα,rejeita-seH0.

- Sep-valorformaiordoqueα,nãorejeita-seH0.

Testet-Student:

Teste de hipótese utilizado em várias situações de pesquisa quando se deseja, por

exemplo, testar uma afirmação sobre a média populacional ou fazer comparações entre as

médias de duas amostras. A seguir, considere os diâmetros de árvores de duas amostras

diferentes:

dap1 <-c(30.5,35.3,33.2,40.8,42.3,41.5,36.3,43.2,34.6,38.5)

dap2 <-c(28.2,35.1,33.2,35.6,40.2,37.4,34.2,42.1,30.5,38.4)

Teste t para umamédia

Aqui, testar-se-á “dap1” tem média ≥ 35, estatisticamente. Então, as hipóteses do teste são:

t.test(dap1, # amostra a ser testada

mu=35, # hipótese de nulidade

alternativa ="greater") # teste unilateral à direita

##

## One Sample t-test

##

Page 30: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

30

## data: dap1

## t = 1.9323, df = 9, p-value = 0.08535

## alternative hypothesis: true mean is not equal to 35

## 95 percent confidence interval:

## 34.5528 40.6872

## sample estimates:

## mean of x

## 37.62

Teste t para as médias de duas amostrasindependentes

Agora,presumir-se-áqueasamostrassãooriundasdeduaspopulaçõesdiferentesequeambas

possuem variâncias homogêneas e distribuiçãonormal.A função t.test() pode ser usada

novamente:

t.test(dap1, dap2, # amostras a serem comparadas

conf.level =0.99) # nível de significância

##

## Welch Two Sample t-test

##

## data: dap1 and dap2

## t = 1.1148, df = 17.999, p-value = 0.2796

## alternative hypothesis: true difference in means is not equal to 0

## 99 percent confidence interval:

## -3.369829 7.629829

## sample estimates:

## mean of x mean of y

## 37.62 35.49

Interpretação do resultado: 𝑝-valor > 0.01, não rejeita-se a hipótese 𝐻0. Ou seja, as

amostras vêm de populações com mesma média.

ANOVA (Análise deVariância)

Análise de Variância (ANOVA) é uma técnica estatística que permite decompor a

variação total existente no experimento em variação devido à diferença entre efeitos dos

tratamentos enavariaçãodevidoaoacaso(erroexperimentalouresíduo).

VARIAÇÃO TOTAL = EFEITO DOS TRATAMENTOS (fatores controlados) +

EFEITO DO ERRO EXPERIMENTAL OU RESÍDUO (Fatores não-controlados)

Os dados amostrais são separados em grupos, segundo uma características específicas

(fatores). Variam de acordo com os diferentes tipos de de delineamentos experimentais que

podem ser:

a) DIC (Delineamento InteiramenteCasualizado);

Page 31: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

31

b) DBC (Delineamento em Blocos Casualizados);e

c) DQL (Delineamento em QuadradoLatino).

Delineamento Inteiramente Casualizado (DIC)

O DIC é o mais simples dos delineamentos experimentais. Utiliza-se do princípio

básico da repetição e casualização. Para fins de aplicação prática no R, considere a

necessidade de

estudosrelativosaocomportamentodaespécieSchizolobiumparahybavar.amazonicumem

situações de viveiro. Assim, procedeu-se a instalação de um experimento sob o DIC com

intuito de avaliar o crescimento em altura da espécie sob diferentes condições de sombrea-

mento. Para tanto, foram estabelecidos quatro tratamento (pleno sol, 20%, 50% e 70% de

sombreamento) com cinco repetições de 25 sementes. Os dados estão no arquivo pa- rica.txt

e correspondem aos valores médios da altura, em centímetros, obtidos após trinta dias de

germinadas assementes.

parica <-read.table(file ="parica.txt", sep="", header=T)

print(parica)

## Trat Rep

## 1 T1 20.0

## 2 T1 22.5

## 3 T1 25.0

## 4 T1 23.5

## 5 T1 17.5

## 6 T2 23.5

## 7 T2 27.5

## 8 T2 25.0

## 9 T2 26.0

## 10 T2 23.5

## 11 T3 17.5

## 12 T3 19.0

## 13 T3 19.5

## 14 T3 20.0

## 15 T3 21.5

## 16 T4 30.0

## 17 T4 33.5

## 18 T4 27.5

## 19 T4 26.0

## 20 T4 26.5

Para implementar a ANOVA para um experimento sob o Delineamento Inteiramente

Casualizado (DIC) pode-se usar a função aov() do pacote stats do R-base (R Core Team,

2017).Em seguida, use a função anova() ou summary() para obter o quadro de ANOVA.

Page 32: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

32

anova.DIC <-aov(Rep~Trat,data=parica)

anova(anova.DIC)

Df SumSq MeanSq Fvalue Pr(>F)

Trat 3 242.95 80.98333 13.81379 0.0001049

Residuals 16 93.80 5.86250 NA NA

Uma anáilise gráfica dos resultados da ANOVA para o DIC:

par(mfrow=c(2,2))

plot(anova.DIC) # gráficos para análise dos resíduos

Page 33: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

33

Interpretação: Há diferença entre pelo menos 2 tratamentos (rejeita-se H0).

Quando há rejeição de H0 (Fcalculado> Ftabelado), constata-se que as médias dos

tratamentos não são todas iguais entre si. Assim, para o exemplo do Paricá aplicar-se-á o teste

de comparações múltiplas de Tukey.

Tukey <-TukeyHSD(anova.DIC)

plot(Tukey)

RegressãoLinear

Regressão linear simples: utilizada para analisar relações entre variáveis contínuas. No

R, para especificar um modelo é preciso usar a notação de fórmulas. Para implementar uma

regressão linear no ambiente R pode-se usar a função lm() disponível no R-base. A função

retornaosvaloresdoscoeficientesbetasestimadosatravésdoMétododeMínimosQuadrados.Consi

dere os dados de diâmetro (cm), altura (m) e volume (m³) de 10 árvores de Tectona grandis.

TecaR <-data.frame(DAP =c(18.00, 6.80, 7.50, 14.90, 9.90, 11.20, 11.70,

7.10, 15.00, 12.60),

H =c(16.10, 7.95, 11.74, 16.50, 13.84, 13.00, 15.60,

12.70, 18.30, 17.20),

Volume =c(0.196841, 0.016672, 0.028452, 0.131809, 0.065526,

0.057691, 0.082867, 0.026694, 0.153029, 0.100119))

print(TecaR)

## DAP H Volume

## 1 18.0 16.10 0.196841

## 2 6.8 7.95 0.016672

## 3 7.5 11.74 0.028452

## 4 14.9 16.50 0.131809

Page 34: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

34

## 5 9.9 13.84 0.065526

## 6 11.2 13.00 0.057691

## 7 11.7 15.60 0.082867

## 8 7.1 12.70 0.026694

## 9 15.0 18.30 0.153029

## 10 12.6 17.20 0.100119

Gráficos de dispersão -plot()

attach(TecaR)

par(mar =c(4.5,3,1.5,1), mgp =c(2,1,0), mfrow =c(1,2))

plot(DAP,Volume, type ="p", main=NULL, font.main=NULL, col.main=NULL,

xlab="DAP (cm)", ylab="Volume (m³)", font.lab=2, col.lab="black",

font.axis=1, col.axis ="black")

plot(H,Volume, type ="p", main=NULL, font.main=NULL, col.main=NULL,

xlab="Altura (m)", ylab="Volume (m³)", font.lab=2, col.lab="black",

font.axis=1, col.axis ="black")

detach(TecaR)

Page 35: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

35

Ajuste demodelos

Ajustar o modelo volumétrico de Shumacher-Hall (LnV = b0 + b1LnDAP +b2LnH):

SHall <-lm(log(Volume) ~log(DAP) +log(H), data=TecaR)# Shumacher-Hall

print(SHall)

##

## Call:

## lm(formula = log(Volume) ~ log(DAP) + log(H), data = TecaR)

##

## Coefficients:

## (Intercept) log(DAP) log(H)

## -9.5199 1.8236 0.9278

Para obter informações mais detalhadas do ajuste pode-se usar a função summary().

summary(SHall)

##

## Call:

## lm(formula = log(Volume) ~ log(DAP) + log(H), data = TecaR)

##

## Residuals:

## Min 1Q Median 3Q Max

## -0.118404 -0.035592 -0.002238 0.006943 0.175846

##

## Coefficients:

## Estimate Std. Error t value Pr(>|t|)

## (Intercept) -9.5199 0.3231 -29.467 1.34e-08 ***

## log(DAP) 1.8236 0.1504 12.122 5.94e-06 ***

## log(H) 0.9278 0.2084 4.452 0.00296 **

## ---

## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

##

## Residual standard error: 0.08561 on 7 degrees of freedom

## Multiple R-squared: 0.9915, Adjusted R-squared: 0.9891

## F-statistic: 408.9 on 2 and 7 DF, p-value: 5.634e-08

Page 36: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

36

A função anova() permite obter a tabela de ANOVA da Regressão:

anova(SHall)

Df Sum Sq MeanSq Fvalue Pr(>F)

log(DAP) 1 5.8473882 5.8473882 797.89089 0.0000000

log(H) 1 0.1452670 0.1452670 19.82204 0.0029638

Residuals 7 0.0512999 0.0073286 NA NA

Outras informaçoes importantes podem ser obtidas. Por exemplo, os valores preditos

pelo modelo de regressão pode ser extraído com uso da função predict() e os reśiduos com a

função residuals().

predict(SHall)

## 1 2 3 4 5 6 7

## -1.670568 -4.100528 -3.560144 -1.992486 -2.901154 -2.734250 -2.485435

## 8 9 10

## -3.587165 -1.884217 -2.259695

residuals(SHall)

## 1 2 3 4 5

## 0.0452088151 0.0065037401 0.0006068408 -0.0339156802 0.1758455641

## 6 7 8 9 10

## -0.1184039923 -0.0050829162 -0.0361510374 0.0070894414 -0.0417007755

REFERENCIAL TEÓRICO

1. Manuaistécnicos

R Language Definition

An Introduction to R - is based on the former “Notes on R”, gives an introduction to the

language and how to use R for doing statistical analysis and graphics.

Introdução à Programação em R - by Luis Torgo.

2. Livro

PETERNELLI, L.A.; MELLO, M.P. Conhecendo o R: uma visão estatística.UFV, 2011.

3. Pacotes

Dragulescu AA (2014) xlsx: Read, write, format Excel 2007 and Excel 97/2000/XP/2003

files.

Poncet P (2012) modeest: Mode Estimation.

Page 37: Deivison Venicio Souza Luani Rosa de Oliveira Piva Thiago ...1 Linguagem R para iniciantes: da programação básica à análise de dados Deivison Venicio Souza Luani Rosa de Oliveira

37

R Core Team (2017) R: A Language and Environment for Statistical Computing. R Foun-

dation for Statistical Computing, Vienna, Austria, p.