Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Curitiba
2018
1
Linguagem R para iniciantes:
da programação básica à análise de dados
1 O ambiente R
30PASSO: Será aberta uma página com diversos links de CRAN Mirrors, isto é, espelhos
CRAN.Oidealéselecionaroservidormaispróximodasualocalizaçãoparafazerodownload do R
Development CoreTeam;
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
2
3 Instalação do Rstudio
4 Iniciando no ambiente R
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
3
6 Operadoreslógicos
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.
7.1 Vetores
c) Função rep() (replicate): Função genérica usada para replicar um valor “x” . Os
principais parâmetros da funçãorep():
5
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.
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().
6
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
8 Indexação noR
Mecanismos deindexação
7
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.
# 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"
8
# Altera o diâmetro da posição 3, e atribui 33,5cm.
Diametro[3] <-33.5
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.
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)
9
## 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 [[ ]]
especie diametro
Acapu 23.0
Araucaria 27.0
Comando $
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”.
tail(trees)
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:
12
## 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
Modificandootipodegráfico(type).
13
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”.
14
15
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().
16
par(mar =c(4.5,4,2.5,1), mgp =c(2,1,0))
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.
17
Observe um exemplo prático:
18
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.
19
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.
20
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" "aliceblue" "antiquewhite" "antiquewhite1"
## [5]"antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"
## [9]"aquamarine1" "aquamarine2" "aquamarine3" "aquamarine4"
## [13]"azure" "azure1" "azure2" "azure3"
## [17]"azure4" "beige" "bisque" "bisque1"
## [21]"bisque2" "bisque3" "bisque4" "black"
##[25]"blanchedalmond" "blue" "blue1" "blue2"
## [29]"blue3" "blue4" "blueviolet" "brown"
## [33]"brown1" "brown2" "brown3" "brown4"
## [37]"burlywood" "burlywood1" "burlywood2" "burlywood3"
length(colours())
## [1] 657
21
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().
22
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.
23
24
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()
25
## 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:
is.na(nativas)
Funçãoread.xlsx()
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
26
## 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
Medidas de tendênciacentral
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
27
mfv(y)
## [1] 5 7
Medidas dedispersã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
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):
x <-c(1, 2, 3, 4, 5)
28
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:
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)
29
## 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
Agora,presumir-se-áqueasamostrassãooriundasdeduaspopulaçõesdiferentesequeambas
possuem variâncias homogêneas e distribuiçãonormal.A função t.test() pode ser usada
novamente:
30
b) DBC (Delineamento em Blocos Casualizados);e
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
anova(anova.DIC)
par(mfrow=c(2,2))
plot(anova.DIC) # gráficos para análise dos resíduos
32
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.
33
## 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))
34
Ajuste demodelos
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
35
A função anova() permite obter a tabela de ANOVA da Regressão:
anova(SHall)
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.
36
R Core Team (2017) R: A Language and Environment for Statistical Computing. R Foun-
dation for Statistical Computing, Vienna, Austria, p.
37