Os dez mandamentos do R pelo professor Alexandre Adalardo de Oliveira da USP:
Vamos sempre abrir o R e um arquivo de texto onde iremos digitar os comandos. O primeiro passo é definir o diretório de trabalho onde você irá trabalhar com o R. Lembre-se sempre: você digita os comandos e o R executa.
Antes de tudo, vamos checar em qual o diretório o R está aberto usando a função getwd:
# use a função getwd para checar o diretorio de trabalho
getwd()
## [1] "/home/sara/saragit/my_page/saramortara.github.io"
Vamos então definir um novo diretório de trabalho. Recomendo que você crie um diretório chamado ‘atividadesR’ em seu computador, que contenha todos os arquivos e pastas do ‘atividadesR’ no google drive da disciplina. Vamos manter os dados dentro da pasta ‘dados’ nesse mesmo diretório. As atividades da aula teórica estão no diretório ‘teorica’ e as práticas (como esta), no diretório ‘praticas’. Neste momento, vamos trabalhar dentro do diretorio ‘praticas’. Se você já está à vontade com o R e prefere organizar de outra forma, vá em frente! Esta é apenas uma recomendação para que os códigos da aula funcionem diretamente no computador de vocês.
Atenção 1: usuários de Linux e Mac devem usar uma barra / para separar os diretórios. Usuários de Windows devem usar a barra invertida \ ou duas barras //.
Atenção 2: o comando abaixo funciona apenas para o computador da Sara. Defina o seu próprio caminho.
Verifique se a mudança de diretório funcionou usando novamente a função getwd:
# use a função getwd para checar o diretorio de trabalho
getwd()
## [1] "/home/sara/saragit/my_page/saramortara.github.io"
Verifique os arquivos que estão no diretório:
# use a função dir para checar os arquivios que estão no diretorio de trabalho
dir()
## [1] "about_me.html"
## [2] "about_me.Rmd"
## [3] "aulas.html"
## [4] "aulas.Rmd"
## [5] "dados"
## [6] "demo.Rproj"
## [7] "figuras"
## [8] "index.html"
## [9] "index.Rmd"
## [10] "pratica0_introducao_ao_R_files"
## [11] "pratica0_introducao_ao_R.html"
## [12] "pratica0_introducao_ao_R.Rmd"
## [13] "pratica1_conhecendo_os_dados_files"
## [14] "pratica1_conhecendo_os_dados.html"
## [15] "pratica1_conhecendo_os_dados.Rmd"
## [16] "pratica2_regressao_linear_files"
## [17] "pratica2_regressao_linear.html"
## [18] "pratica2_regressao_linear.Rmd"
## [19] "pratica3_selecao_modelos_files"
## [20] "pratica3_selecao_modelos.html"
## [21] "pratica3_selecao_modelos.Rmd"
## [22] "pratica4_glm_files"
## [23] "pratica4_glm.html"
## [24] "pratica4_glm.Rmd"
## [25] "_site"
## [26] "site_libs"
## [27] "_site.yml"
## [28] "teoricas"
## [29] "tutoriais.html"
## [30] "tutoriais.Rmd"
E também verifique se o workspace do R está vazio:
# para listar os objetos existentes na sua área de trabalho (deve estar vazio)
ls()
## character(0)
O a criação e manutenção do R depende de uma grande equipe. Para saber como citar o R use é só usar a função citation :
citation()
##
## To cite R in publications use:
##
## R Core Team (2019). R: A language and environment for
## statistical computing. R Foundation for Statistical Computing,
## Vienna, Austria. URL https://www.R-project.org/.
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {R: A Language and Environment for Statistical Computing},
## author = {{R Core Team}},
## organization = {R Foundation for Statistical Computing},
## address = {Vienna, Austria},
## year = {2019},
## url = {https://www.R-project.org/},
## }
##
## We have invested a lot of time and effort in creating R, please
## cite it when using it for data analysis. See also
## 'citation("pkgname")' for citing R packages.
No R você pode guardar o resultado de um comando usando uma operação de atribuição. Podemos usar os três operadores de atribuição <-, = e -> podem ser usados de várias maneiras para criar objetos. Por exemplo, estes comandos:
# cria o objeto 'a' que recebe a raiz quadrada de 4
a <- sqrt(4)
# cria o objeto 'b' que recebe a raiz quadrada de 4
b = sqrt(4)
# cria o objeto 'c' que recebe a raiz quadrada de 4
sqrt(4) -> c
Vamos ver?
# visualizando o objeto 'a'
a
## [1] 2
# visualizando o objeto 'b'
b
## [1] 2
# visualizando o objeto 'c'
c
## [1] 2
Agora, se pedirmos a lista dos objetos na área de trabalho teremos:
# listando todos os objetos da área de trabalho, agora deve aparecer os objetos criados
ls()
## [1] "a" "b" "c"
Se a atribuição é para um objeto que não existe, esse objeto é criado. Mas cuidado: se já há um objeto com o mesmo nome na sua área de trabalho, seus valores serão substituídos:
# criando o objeto a que recebe a raiz quadrada de 4
a <- sqrt(4)
# visualizando o objeto 'a'
a
## [1] 2
# criando um novo objeto 'a' que recebe o número '100'
a <- 10^2
# visualizando o novo objeto 'a'
a
## [1] 100
Formas de :
# para acessar a pagina de ajuda de uma função usamos a função 'help'
help(mean)
# uma outra forma de acessar a página de 'ajuda'
?mean
Na maior parte do tempo, usaremos o R para ler um conjunto de dados do nosso próprio trabalho. Para ler os seus dados no R é necessário que eles estejam em formato de texto .txt ou .csv. Usualmente, organizamos os dados como uma variável por coluna e uma observação por linha.
Vamos ver um exemplo com os dados do arquivo ‘exemplo-caixeta.csv’ que está no diretório ‘atividadesR’ -> ‘dados’.
Esta parte da prática é adaptada dos tutoriais do professor João Batista da ESALQ-USP.
Para ler o arquivo e gravá-lo num objeto vamos usar o comando abaixo:
# estamos atribuindo ao objeto cax a planilha em csv
cax = read.csv(file="dados/exemplo-caixeta.csv")
se você digitar o nome do objeto:
cax
## local parcela arvore fuste cap h especie
## 1 chauas 1 1 1 210 80 Myrcia sulfiflora
## 2 chauas 1 3 1 170 80 Myrcia sulfiflora
## 3 chauas 1 4 1 720 70 Syagrus romanzoffianus
## 4 chauas 1 5 1 200 80 Tabebuia cassinoides
## 5 chauas 1 6 1 750 170 indet.1
## 6 chauas 1 7 1 320 80 Myrcia sulfiflora
## 7 chauas 1 8 1 480 160 Tabebuia cassinoides
## 8 chauas 1 9 1 240 140 Tabebuia cassinoides
## 9 chauas 1 10 1 290 120 Tabebuia cassinoides
## 10 chauas 1 10 2 310 120 Tabebuia cassinoides
## 11 chauas 1 10 3 230 120 Tabebuia cassinoides
## 12 chauas 1 11 1 210 80 Tabebuia cassinoides
## 13 chauas 1 12 1 240 70 Myrcia sulfiflora
## 14 chauas 1 13 1 250 80 Myrcia sulfiflora
## 15 chauas 1 14 1 160 100 Tabebuia cassinoides
## 16 chauas 1 14 2 230 100 Tabebuia cassinoides
## 17 chauas 1 14 3 320 100 Tabebuia cassinoides
## 18 chauas 1 15 1 410 160 Tabebuia cassinoides
## 19 chauas 1 16 1 600 140 myrtaceae4
## 20 chauas 1 17 1 240 100 Tabebuia cassinoides
## 21 chauas 1 17 2 180 100 Tabebuia cassinoides
## 22 chauas 1 17 3 200 100 Tabebuia cassinoides
## 23 chauas 1 17 4 430 100 Tabebuia cassinoides
## 24 chauas 1 18 1 210 90 Myrcia sulfiflora
## 25 chauas 1 19 1 390 80 Tabebuia cassinoides
## 26 chauas 1 20 1 310 90 Tabebuia cassinoides
## 27 chauas 1 20 2 240 90 Tabebuia cassinoides
## 28 chauas 1 21 1 520 150 myrtaceae1
## 29 chauas 1 21 2 450 150 myrtaceae1
## 30 chauas 1 22 1 230 80 indet.2
## 31 chauas 1 23 1 670 230 Tabebuia cassinoides
## 32 chauas 1 24 1 240 100 Tabebuia cassinoides
## 33 chauas 1 24 2 310 100 Tabebuia cassinoides
## 34 chauas 1 24 3 220 100 Tabebuia cassinoides
## 35 chauas 1 25 1 270 110 Tabebuia cassinoides
## 36 chauas 1 25 2 170 110 Tabebuia cassinoides
## 37 chauas 1 26 1 350 90 Tabebuia cassinoides
## 38 chauas 1 27 1 320 60 Myrcia sulfiflora
## 39 chauas 1 28 1 220 60 Myrcia sulfiflora
## 40 chauas 1 29 1 390 150 Tabebuia cassinoides
## 41 chauas 1 29 2 350 150 Tabebuia cassinoides
## 42 chauas 1 30 1 290 120 Tabebuia cassinoides
## 43 chauas 1 30 2 260 120 Tabebuia cassinoides
## 44 chauas 1 30 3 200 120 Tabebuia cassinoides
## 45 chauas 1 31 1 240 110 Tabebuia cassinoides
## 46 chauas 1 31 2 340 110 Tabebuia cassinoides
## 47 chauas 1 31 3 310 110 Tabebuia cassinoides
## 48 chauas 1 32 1 200 70 Tabebuia cassinoides
## 49 chauas 1 32 2 200 70 Tabebuia cassinoides
## 50 chauas 1 33 1 220 90 Tabebuia cassinoides
## 51 chauas 1 33 2 240 90 Tabebuia cassinoides
## 52 chauas 1 34 1 160 90 Psidium sp
## 53 chauas 1 34 2 160 90 Psidium sp
## 54 chauas 1 34 3 170 90 Psidium sp
## 55 chauas 1 35 1 230 70 Tabebuia cassinoides
## 56 chauas 1 35 2 310 70 Tabebuia cassinoides
## 57 chauas 1 36 1 340 110 Tabebuia cassinoides
## 58 chauas 1 36 2 210 110 Tabebuia cassinoides
## 59 chauas 1 37 1 270 100 Tabebuia cassinoides
## 60 chauas 1 38 1 330 90 Tabebuia cassinoides
## 61 chauas 1 39 1 450 120 Tabebuia cassinoides
## 62 chauas 1 39 2 160 120 Tabebuia cassinoides
## 63 chauas 1 39 3 350 120 Tabebuia cassinoides
## 64 chauas 1 40 1 320 60 Myrcia sulfiflora
## 65 chauas 1 41 1 340 90 Tabebuia cassinoides
## 66 chauas 1 41 2 280 90 Tabebuia cassinoides
## 67 chauas 1 42 1 200 80 Tabebuia cassinoides
## 68 chauas 1 43 1 270 50 Myrcia sulfiflora
## 69 chauas 1 44 1 300 90 Tabebuia cassinoides
## 70 chauas 1 44 2 220 90 Tabebuia cassinoides
## 71 chauas 1 45 1 250 80 Coussapoa micropoda
## 72 chauas 1 45 2 220 80 Coussapoa micropoda
## 73 chauas 1 46 1 230 60 Tabebuia cassinoides
## 74 chauas 1 46 2 150 60 Tabebuia cassinoides
## 75 chauas 1 47 1 200 60 Myrcia sulfiflora
## 76 chauas 1 47 2 160 60 Myrcia sulfiflora
## 77 chauas 1 48 1 680 160 myrtaceae1
## 78 jureia 2 41 1 340 100 Tabebuia cassinoides
## 79 jureia 2 42 1 310 90 jussara
## 80 jureia 2 43 1 420 160 jussara
## 81 jureia 2 44 1 380 150 bombacaceae
## 82 jureia 2 45 1 810 120 Tabebuia cassinoides
## 83 jureia 2 46 1 170 80 Coussapoa macrocarpa
## 84 jureia 2 47 1 300 80 jussara
## 85 jureia 2 48 1 180 30 jussara
## 86 jureia 2 49 1 610 180 Tabebuia cassinoides
## 87 jureia 2 50 1 240 90 jussara
## 88 jureia 2 51 1 360 170 Tabebuia cassinoides
## 89 jureia 2 51 2 480 170 Tabebuia cassinoides
## 90 jureia 2 51 3 350 170 Tabebuia cassinoides
## 91 jureia 2 51 4 600 170 Tabebuia cassinoides
## 92 jureia 2 52 1 300 70 Tabebuia cassinoides
## 93 jureia 2 53 1 510 120 Tabebuia cassinoides
## 94 jureia 2 53 2 310 120 Tabebuia cassinoides
## 95 jureia 2 53 3 670 120 Tabebuia cassinoides
## 96 jureia 2 54 1 630 110 Pisonia sp
## 97 jureia 2 55 1 370 120 jussara
## 98 jureia 2 56 1 330 150 jussara
## 99 jureia 2 57 1 840 120 Alchornea triplinervia
## 100 jureia 2 58 1 350 140 Tabebuia cassinoides
## 101 jureia 2 58 2 800 140 Tabebuia cassinoides
## 102 jureia 2 58 3 510 140 Tabebuia cassinoides
## 103 jureia 2 58 4 640 140 Tabebuia cassinoides
## 104 jureia 2 59 1 260 80 jussara
## 105 jureia 2 60 1 400 100 Psidium sp
## 106 jureia 2 60 2 390 100 Psidium sp
## 107 jureia 2 60 3 420 100 Psidium sp
## 108 jureia 2 60 4 180 100 Psidium sp
## 109 jureia 2 61 1 810 120 Tabebuia cassinoides
## 110 jureia 2 61 2 580 120 Tabebuia cassinoides
## 111 jureia 2 62 1 280 140 jussara
## 112 jureia 2 63 1 270 90 jussara
## 113 jureia 2 64 1 280 100 jussara
## 114 jureia 2 65 1 230 60 Andira fraxinifolia
## 115 jureia 2 66 1 240 90 Tabebuia cassinoides
## 116 jureia 2 67 1 620 180 Tabebuia cassinoides
## 117 jureia 2 67 2 410 180 Tabebuia cassinoides
## 118 jureia 2 68 1 190 110 Cabralea canjerana
## 119 jureia 2 69 1 380 100 Tabebuia cassinoides
## 120 jureia 2 69 2 170 100 Tabebuia cassinoides
## 121 jureia 2 69 3 250 100 Tabebuia cassinoides
## 122 jureia 2 70 1 450 120 Tabebuia cassinoides
## 123 jureia 2 71 1 510 120 Tabebuia cassinoides
## 124 jureia 2 72 1 290 110 Persea sp
## 125 retiro 4 139 1 190 50 Tabebuia cassinoides
## 126 retiro 4 139 2 140 50 Tabebuia cassinoides
## 127 retiro 4 139 3 40 50 Tabebuia cassinoides
## 128 retiro 4 139 4 60 50 Tabebuia cassinoides
## 129 retiro 4 139 5 30 50 Tabebuia cassinoides
## 130 retiro 4 139 6 160 50 Tabebuia cassinoides
## 131 retiro 4 139 7 80 50 Tabebuia cassinoides
## 132 retiro 4 139 8 80 50 Tabebuia cassinoides
## 133 retiro 4 139 9 140 50 Tabebuia cassinoides
## 134 retiro 4 139 10 60 50 Tabebuia cassinoides
## 135 retiro 4 139 11 70 50 Tabebuia cassinoides
## 136 retiro 4 140 1 190 60 Tabebuia cassinoides
## 137 retiro 4 141 1 160 60 Tabebuia cassinoides
## 138 retiro 4 142 1 180 50 Tabebuia cassinoides
## 139 retiro 4 143 1 170 40 Mela 1
## 140 retiro 4 144 1 240 60 Tabebuia cassinoides
## 141 retiro 4 145 1 150 30 Tabebuia cassinoides
## 142 retiro 4 146 1 230 50 Tabebuia cassinoides
## 143 retiro 4 147 1 210 50 Tabebuia cassinoides
## 144 retiro 4 148 1 160 50 Tabebuia cassinoides
## 145 retiro 4 148 2 120 50 Tabebuia cassinoides
## 146 retiro 4 149 1 290 80 Tabebuia cassinoides
## 147 retiro 4 150 1 150 30 Mela 1
## 148 retiro 4 151 1 220 60 Tabebuia cassinoides
## 149 retiro 4 152 1 250 10 Mela 1
## 150 retiro 4 153 1 160 60 Tabebuia cassinoides
## 151 retiro 4 154 1 270 80 Tabebuia cassinoides
## 152 retiro 4 155 1 190 30 Tabebuia cassinoides
## 153 retiro 4 155 2 180 30 Tabebuia cassinoides
## 154 retiro 4 156 1 210 5 Mela 1
## 155 retiro 4 157 1 170 50 Tabebuia cassinoides
## 156 retiro 4 158 1 200 60 Tabebuia cassinoides
## 157 retiro 4 158 2 170 60 Tabebuia cassinoides
## 158 retiro 4 158 3 100 60 Tabebuia cassinoides
## 159 retiro 4 158 4 170 60 Tabebuia cassinoides
## 160 retiro 4 159 1 380 100 Tabebuia cassinoides
## 161 retiro 4 160 1 270 70 Tabebuia cassinoides
## 162 retiro 4 161 1 150 50 Tabebuia cassinoides
## 163 retiro 4 162 1 260 70 Tabebuia cassinoides
## 164 retiro 4 163 1 380 90 Tabebuia cassinoides
## 165 retiro 4 164 1 280 60 Mela 1
## 166 retiro 4 164 2 320 60 Mela 1
## 167 retiro 4 164 3 140 60 Mela 1
## 168 retiro 4 165 1 330 70 Tabebuia cassinoides
## 169 retiro 4 166 1 300 70 Tabebuia cassinoides
## 170 retiro 4 167 1 290 80 Tabebuia cassinoides
## 171 retiro 4 168 1 180 50 Tabebuia cassinoides
## 172 retiro 4 169 1 160 20 Mela 1
## 173 retiro 4 170 1 190 90 Tabebuia cassinoides
## 174 retiro 4 171 1 380 100 Tabebuia cassinoides
## 175 retiro 4 172 1 300 50 Mela 1
## 176 retiro 4 173 1 300 90 Tabebuia cassinoides
## 177 retiro 4 174 1 190 50 Mela 1
## 178 retiro 4 174 2 210 50 Mela 1
## 179 retiro 4 174 3 180 50 Mela 1
## 180 retiro 4 174 4 160 50 Mela 1
## 181 retiro 4 175 1 340 120 Tabebuia cassinoides
## 182 retiro 4 176 1 340 100 Tabebuia cassinoides
## 183 retiro 4 177 1 200 80 Tabebuia cassinoides
## 184 retiro 4 178 1 330 100 Tabebuia cassinoides
## 185 retiro 4 179 1 270 80 Tabebuia cassinoides
## 186 retiro 4 180 1 320 50 Mela 1
## 187 retiro 4 181 1 230 70 Mela 1
## 188 retiro 4 182 1 160 30 Mela 1
## 189 retiro 4 183 1 320 20 Mela 1
## 190 retiro 4 184 1 150 30 Mela 1
## 191 retiro 4 185 1 110 70 Mela 1
## 192 retiro 4 185 2 250 70 Mela 1
## 193 retiro 4 186 1 230 30 Tabebuia cassinoides
## 194 retiro 4 187 1 270 50 Tabebuia cassinoides
## 195 retiro 4 188 1 220 40 Tabebuia cassinoides
## 196 retiro 4 189 1 160 40 Mela 1
## 197 retiro 4 190 1 150 40 Mela 1
## 198 retiro 4 191 1 190 40 Mela 1
o R lhe apresentará todas as 198 linhas de dados!!
Para visualizar apenas as primeiras linhas do dataframe (objeto de dados) use o comando head:
# para visualizar as apenas as seis primeiras linhas do objeto
head(cax)
## local parcela arvore fuste cap h especie
## 1 chauas 1 1 1 210 80 Myrcia sulfiflora
## 2 chauas 1 3 1 170 80 Myrcia sulfiflora
## 3 chauas 1 4 1 720 70 Syagrus romanzoffianus
## 4 chauas 1 5 1 200 80 Tabebuia cassinoides
## 5 chauas 1 6 1 750 170 indet.1
## 6 chauas 1 7 1 320 80 Myrcia sulfiflora
Para entender a estrutura do objeto, podemos usar os comandos str e summary :
O primeiro mostra a estrutura do objeto:
# checando a estrutura do objeto
str(cax)
## 'data.frame': 198 obs. of 7 variables:
## $ local : Factor w/ 3 levels "chauas","jureia",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ parcela: int 1 1 1 1 1 1 1 1 1 1 ...
## $ arvore : int 1 3 4 5 6 7 8 9 10 10 ...
## $ fuste : int 1 1 1 1 1 1 1 1 1 2 ...
## $ cap : int 210 170 720 200 750 320 480 240 290 310 ...
## $ h : int 80 80 70 80 170 80 160 140 120 120 ...
## $ especie: Factor w/ 18 levels "Alchornea triplinervia",..: 11 11 17 18 7 11 18 18 18 18 ...
E o segundo mostra um sumário de todas as variáveis do objeto:
# sumário das variáveis do objeto cax
summary(cax)
## local parcela arvore fuste
## chauas:77 Min. :1.000 Min. : 1.00 Min. : 1.000
## jureia:47 1st Qu.:1.000 1st Qu.: 33.00 1st Qu.: 1.000
## retiro:74 Median :2.000 Median : 57.50 Median : 1.000
## Mean :2.359 Mean : 84.23 Mean : 1.702
## 3rd Qu.:4.000 3rd Qu.:151.75 3rd Qu.: 2.000
## Max. :4.000 Max. :191.00 Max. :11.000
##
## cap h especie
## Min. : 30.0 Min. : 5.00 Tabebuia cassinoides:129
## 1st Qu.:190.0 1st Qu.: 60.00 Mela 1 : 23
## Median :250.0 Median : 90.00 Myrcia sulfiflora : 12
## Mean :289.4 Mean : 88.26 jussara : 11
## 3rd Qu.:340.0 3rd Qu.:110.00 Psidium sp : 7
## Max. :840.0 Max. :230.00 myrtaceae1 : 3
## (Other) : 13
O comando head sempre apresenta as primeiras linhas da tabela de dados (data frame).
As colunas da tabela (variáveis) são mostradas pelos nomes que estavam na primeira linha do arquivo CSV. As linhas da tabela (observações) são geralmente numeradas. Note que a primeira coluna de números não é uma variável! Ela indica cada linha do arquivo CSV, ou seja cada observação. No R, as linhas do data frame (observações) também devem ter nomes únicos. Se o usuário não os fornece, o R simplesmente os nomeia segundo a numeração da ordem em que os dados são lidos. Se quisermos apenas uma variável (coluna) desse data frame, basta unir o nome do data frame (cax) ao nome da coluna desejada com o símbolo especial “$”:
# para selecionar a coluna 'local' do objeto 'cax'
cax$local
## [1] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [11] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [21] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [31] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [41] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [51] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [61] chauas chauas chauas chauas chauas chauas chauas chauas chauas chauas
## [71] chauas chauas chauas chauas chauas chauas chauas jureia jureia jureia
## [81] jureia jureia jureia jureia jureia jureia jureia jureia jureia jureia
## [91] jureia jureia jureia jureia jureia jureia jureia jureia jureia jureia
## [101] jureia jureia jureia jureia jureia jureia jureia jureia jureia jureia
## [111] jureia jureia jureia jureia jureia jureia jureia jureia jureia jureia
## [121] jureia jureia jureia jureia retiro retiro retiro retiro retiro retiro
## [131] retiro retiro retiro retiro retiro retiro retiro retiro retiro retiro
## [141] retiro retiro retiro retiro retiro retiro retiro retiro retiro retiro
## [151] retiro retiro retiro retiro retiro retiro retiro retiro retiro retiro
## [161] retiro retiro retiro retiro retiro retiro retiro retiro retiro retiro
## [171] retiro retiro retiro retiro retiro retiro retiro retiro retiro retiro
## [181] retiro retiro retiro retiro retiro retiro retiro retiro retiro retiro
## [191] retiro retiro retiro retiro retiro retiro retiro retiro
## Levels: chauas jureia retiro
# para selecionar a coluna 'cap' do objeto 'cap'
cax$cap
## [1] 210 170 720 200 750 320 480 240 290 310 230 210 240 250 160 230 320
## [18] 410 600 240 180 200 430 210 390 310 240 520 450 230 670 240 310 220
## [35] 270 170 350 320 220 390 350 290 260 200 240 340 310 200 200 220 240
## [52] 160 160 170 230 310 340 210 270 330 450 160 350 320 340 280 200 270
## [69] 300 220 250 220 230 150 200 160 680 340 310 420 380 810 170 300 180
## [86] 610 240 360 480 350 600 300 510 310 670 630 370 330 840 350 800 510
## [103] 640 260 400 390 420 180 810 580 280 270 280 230 240 620 410 190 380
## [120] 170 250 450 510 290 190 140 40 60 30 160 80 80 140 60 70 190
## [137] 160 180 170 240 150 230 210 160 120 290 150 220 250 160 270 190 180
## [154] 210 170 200 170 100 170 380 270 150 260 380 280 320 140 330 300 290
## [171] 180 160 190 380 300 300 190 210 180 160 340 340 200 330 270 320 230
## [188] 160 320 150 110 250 230 270 220 160 150 190
Novas variáveis (colunas) podem ser criadas também utilizando o símbolo “$”. Por exemplo:
pi # constante universal PI
## [1] 3.141593
cax$dap = (cax$cap/10) / pi # cálculo do DAP (cm) a partir do CAP (mm)
cax$g = (pi/4) * (cax$dap/100)^2 # cálculo da área transversal (m2) a partir do DAP (cm)
cax$vol.cilindrico = cax$g * (cax$h/10) # cálculo do volume cilíndrico a partir da área transv. e da altura (dm)
# inspecionando novamente as seis primeiras linhas, agora com as novas colunas
head(cax)
## local parcela arvore fuste cap h especie dap
## 1 chauas 1 1 1 210 80 Myrcia sulfiflora 6.684508
## 2 chauas 1 3 1 170 80 Myrcia sulfiflora 5.411268
## 3 chauas 1 4 1 720 70 Syagrus romanzoffianus 22.918312
## 4 chauas 1 5 1 200 80 Tabebuia cassinoides 6.366198
## 5 chauas 1 6 1 750 170 indet.1 23.873241
## 6 chauas 1 7 1 320 80 Myrcia sulfiflora 10.185916
## g vol.cilindrico
## 1 0.003509366 0.02807493
## 2 0.002299789 0.01839831
## 3 0.041252961 0.28877073
## 4 0.003183099 0.02546479
## 5 0.044762328 0.76095957
## 6 0.008148733 0.06518986
Note que: A palavra pi no R está reservada para representar a constante universal pi.
Ao utilizar a expressão cax$dap = estamos criando uma nova variável (coluna) no dataframe cax com o nome dap, cujos valores serão o resultado da expressão matemática apresentada após o sinal de igualdade. O mesmo acontece com as colunas g e vol.cilindrico .
A forma mais simples de descrever quantitativamente observações é agrupá-las em categorias e contar quantas observações pertence a cada categoria.
No R a forma mais direta de obter contagens (frequências) é através da função table. Tomando como exemplo o dataframe cax, podemos nos perguntar quantas árvores foram observadas em cada caixetal (variável local):
table(cax$local)
##
## chauas jureia retiro
## 77 47 74
Também é interessante saber o número de árvores por local e parcela:
table(cax$local, cax$parcela)
##
## 1 2 4
## chauas 77 0 0
## jureia 0 47 0
## retiro 0 0 74
Observação: note que os argumentos de uma função são separados por vírgula (,)
Podemos verificar a abundância de cada espécie (especie) em cada caixetal (local):
table(cax$especie, cax$local)
##
## chauas jureia retiro
## Alchornea triplinervia 0 1 0
## Andira fraxinifolia 0 1 0
## bombacaceae 0 1 0
## Cabralea canjerana 0 1 0
## Coussapoa macrocarpa 0 1 0
## Coussapoa micropoda 2 0 0
## indet.1 1 0 0
## indet.2 1 0 0
## jussara 0 11 0
## Mela 1 0 0 23
## Myrcia sulfiflora 12 0 0
## myrtaceae1 3 0 0
## myrtaceae4 1 0 0
## Persea sp 0 1 0
## Pisonia sp 0 1 0
## Psidium sp 3 4 0
## Syagrus romanzoffianus 1 0 0
## Tabebuia cassinoides 53 25 51
Dados de contagem também podem ser apresentado na forma de gráficos de barra:
# um grafico de barras
barplot(table(cax$local))
Observação: veja que no R você pode construir um comando chamando função dentro de função em vários níveis. No exemplo acima, o resultado da função table foi colocado como argumento para a função barplot.
Formas alternativas de construir esses gráficos são:
#grafico de barras
barplot(table(cax$fuste))
# com a funcao 'plot'
plot(table(cax$fuste))
Agora é hora de deixar os caixetais de lado e partir para um outro exemplo. Neste momento, não se preocupe com a explicação por trás do modelo linear, a ideia é apenas que vocês se familiarizem com os comandos de R que usaremos ao longo da semana.
Vamos explorar a relação entre o número de espécies de galinhas esféricas em ilhas do mar de Saturno. A pergunta por trás deste exercício é: ilhas maiores sustentam um maior número de espécies de galinhas esféricas?
Vamos criar dois vetores contendo informação de duas variáveis: área e riqueza.
area <- c(303, 379, 961, 295, 332, 47, 122, 11, 53, 2749)
riqueza <- c(3, 10, 20, 7, 8, 4, 8, 3, 5, 23)
Confira a saída dos objetos:
area
## [1] 303 379 961 295 332 47 122 11 53 2749
riqueza
## [1] 3 10 20 7 8 4 8 3 5 23
Vamos inspecionar os valores com a função ‘summary’:
summary(area)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 11.00 70.25 299.00 525.20 367.25 2749.00
summary(riqueza)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.00 4.25 7.50 9.10 9.50 23.00
Vamos visualizar o histograma dos dados de riqueza e área:
par(mfrow=c(1,2)) # define duas janelas gráficas, 1 linha e 2 colunas
hist(area, xlab="Área", ylab="Frequência")
hist(riqueza, xlab="Riqueza", ylab="Frequência")
par(mfrow=c(1,1))
Qual a média de área:
mean(x=area)
## [1] 525.2
Qual a variância da área?
varea <- var(area)
varea
## [1] 686099.3
Note que, para a variância, usamos o sinal <- para fazer a atribuição a um objeto chamado ‘varea’.
Qual o desvio padrão da área?
sd(x=area)
## [1] 828.3111
Qual a média da riqueza?
mean(riqueza)
## [1] 9.1
Qual o desvio padrão da riqueza?
sd(riqueza)
## [1] 6.967384
Qual a relação entre riqueza e área?
plot(x=area, y=riqueza, xlab="Area (ha)", ylab="Número de Espécies")
Qual a relação expressa por meio de um modelo linear?
Primeiro construímos o modelo:
modelo1 <- lm(riqueza~area)
E agora usamos a função ‘summary’ para mostrar o valor da estimativa dos parâmetros do intercepto e inclinação:
summary(modelo1)
##
## Call:
## lm(formula = riqueza ~ area)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.4614 -2.1245 -0.5101 1.4862 7.6863
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.226994 1.352158 3.866 0.004770 **
## area 0.007374 0.001431 5.155 0.000869 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.555 on 8 degrees of freedom
## Multiple R-squared: 0.7686, Adjusted R-squared: 0.7397
## F-statistic: 26.57 on 1 and 8 DF, p-value: 0.0008693
Note que quando aplicamos a função ‘summary’ ao objeto ‘riqueza’ a função retorna as estatísticas básicas do conjunto de dados riqueza. Quando aplicamos a função ‘summary’ ao objeto ‘modelo1’, a função retorna o valor das estimativas dos parâmetros, com o valor de erro, valor de p, R^2, entre outros valores.
Vamos calcular os valores de área previstos pelo modelo:
previsto <- fitted(modelo1)
Agora vamos calcular os resíduos:
riqueza - previsto
## 1 2 3 4 5 6
## -4.4614204 1.9781293 7.6862601 -0.4024256 0.3247236 -1.5735879
## 7 8 9 10
## 1.8733362 -2.3081114 -0.6178340 -2.4990699
Vamos comparar o resultado com o obtido diretamente pela função residuals:
residuals(modelo1)
## 1 2 3 4 5 6
## -4.4614204 1.9781293 7.6862601 -0.4024256 0.3247236 -1.5735879
## 7 8 9 10
## 1.8733362 -2.3081114 -0.6178340 -2.4990699
Vamos inspecionar graficamente os resíduos do modelo:
par(mfrow=c(2,2)) # comando para criar 4 janelas gráficas, 2 linhas, 2 colunas
plot(modelo1)
par(mfrow=c(1,1)) # comando para retornar à configuração original de 1 janela gráfica
Voltando aos gráficos, vamos agora incluir uma reta com os valores previstos pelo modelo.
plot(x=area, y=riqueza, xlab="Area (ha)", ylab="Número de Espécies")
abline(modelo1)
E se transformarmos os dados de riqueza e área em log? Vamos ver como fica o gráfico, agora com os eixos em escala log.
plot(x=area, y=riqueza, xlab="Log Area (ha)", ylab="Log Número de Espécies", log="xy")
O gráfico anterior pode também ser feito transformando a variável ao invés da escala dos eixos.
plot(x=log(area), y=log(riqueza), xlab="Log Area (ha)", ylab="Log Número de Espécies")
Vamos então construir um novo modelo linear, agora em escala log.
modelo2 <- lm(log(riqueza,base=10)~log(area,base=10))
summary(modelo2)
##
## Call:
## lm(formula = log(riqueza, base = 10) ~ log(area, base = 10))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.44632 -0.03246 0.04681 0.08600 0.19412
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.01526 0.21493 0.071 0.94516
## log(area, base = 10) 0.36599 0.08987 4.072 0.00357 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1865 on 8 degrees of freedom
## Multiple R-squared: 0.6746, Adjusted R-squared: 0.6339
## F-statistic: 16.58 on 1 and 8 DF, p-value: 0.003571
Vamos inspecionar os resíduos do modelo:
par(mfrow=c(2,2))
plot(modelo2)
par(mfrow=c(1,1))
E, finalmente, criar um gráfico com o novo modelo e os valores previstos pelo modelo:
plot(riqueza~area, xlab="Log Area (ha)", ylab="Log Número de Espécies", log="xy")
abline(modelo2)