#Vamos definir um vetor com as alturas de 5 pessoas
alturas <- c(1.75, 1.88, 1.55, 1.64, 1.72)
#Imprimindo o vetor de alturas
alturas
[1] 1.75 1.88 1.55 1.64 1.72
EST212 - Bioestatística
Antes de iniciar nossa aula:
Abra o RStudio.
Crie um novo script.
Crie uma pasta na área de trabalho com seu nome.
Salve o script criado na pasta com o nome "aula2_est212.R"
.
Na Estatística, a fonte de informação são os dados.
Para realizar as análises no R, é necessário incluir os dados de alguma forma no software.
Entretanto, existe uma lógica na entrada dos dados. É necessário incluí-los conforme uma estrutura.
Essas estruturas são variáveis conforme a natureza dos dados e dos problemas em estudo.
As principais estruturas de dados em R, e as que mais utilizaremos, são vetores e data frames.
Um vetor nada mais é do que uma lista de elementos de mesma natureza.
Essa lista de elementos define uma estrutura na qual podem ser aplicados operadores e funções de forma conjunta.
Essa estrutura facilita a operação com conjuntos de dados de mesma natureza.
Em R, definimos um vetor utilizando a função c()
. Os elementos devem ser listados dentro da função e separados por vírgula.
Assim como as demais variáveis, atribuímos os valores do vetor usando o operador <-
. Vejamos o exemplo a seguir. Vamos listar 5 alturas e definir um vetor chamado alturas
:
Do mesmo modo, podemos definir vetores de outros tipos de variáveis, como textos, números inteiros, valores lógicos e fatores.
#Vetor de texto atribuído à variável "nomes"
nomes <- c("Ana", "Paulo", "Letícia", "Francisco", "Pedro")
#Impressão do vetor "nomes"
nomes
[1] "Ana" "Paulo" "Letícia" "Francisco" "Pedro"
#Vetor de números ímpares, àtribuido à variável "valores"
valores <- c(1, 3, 5, 7, 9)
#Impressão do vetor "valores"
valores
[1] 1 3 5 7 9
# Vetor com número e texto
teste <- c(1.75, "arvore" , 3.7, "casa")
#Impressão do vetor de teste
teste
[1] "1.75" "arvore" "3.7" "casa"
Note que o R converteu todos os valores para texto.
A grande utilidade dos vetores é a operação com diversos dados ao mesmo tempo;
Ao se aplicar operações a vetores, geralmente elas são aplicadas a cada elemento;
Podemos aplicar as funções diretamente no vetor, ou na variável atribuída ao vetor.
Podemos salvar o resultado das operações em novas variáveis.
Vejamos exemplos a seguir.
Por exemplo, se utilizarmos a função sqrt()
em um vetor, ela aplicará a função a cada elemento:
[1] 1 2 3 4 5
[1] 1 2 3 4 5
raiz_n
ao quadrado:Note que em todos os casos, a função foi aplicada a cada valor.
Do mesmo modo, podemos aplicar operações com mais de um vetor. Vejamos alguns exemplos:
#Vetor de números ímpares
impares <- c(1, 3, 5, 7, 9)
#Vetor de números ímpares
pares <- c(2, 4, 6, 8, 10)
#Somar os dois vetores
impares + pares
[1] 3 7 11 15 19
[1] -1 -1 -1 -1 -1
[1] 2 12 30 56 90
[1] 0.5000000 0.7500000 0.8333333 0.8750000 0.9000000
Perceba que os valores foram calculados termo a termo.
Agora vamos aprender a estrutura de dados que mais utilizaremos, o Data frame
Como vimos, vetores são ótimos para armazenar elementos, mas trabalham de forma isolada.
Entretanto, geralmente os dados são organizados em tabelas:
Id | Nome | Idade | Sexo |
---|---|---|---|
1 | Pedro | 22 | M |
2 | Maria | 19 | F |
3 | João | 17 | M |
4 | Ana | 25 | F |
5 | Beatriz | 24 | F |
Perceba que cada coluna poderia ser representada como um vetor:
Porém, gostaríamos de criar uma tabela que concatenasse os dados.
Para isso usamos a função data.frame()
.
Um data frame, cuja tradução literal seria quadro de dados, representará exatamente essa tabela:
#Variáveis isoladas
id <- c(1, 2, 3, 4, 5)
nome <- c("Pedro", "Maria", "João", "Ana", "Beatriz")
idade <- c(22, 19, 17, 25, 24)
sexo <- c("M", "F", "M", "F", "F")
#Variáveis organizadas em um dataframe
alunos <- data.frame(id, nome, idade, sexo)
#Impressão do dataframe
alunos
id nome idade sexo
1 1 Pedro 22 M
2 2 Maria 19 F
3 3 João 17 M
4 4 Ana 25 F
5 5 Beatriz 24 F
alunos
.O Data frame nada mais é do que uma coleção de vetores, organizados em colunas.
Podemos acessar os vetores individualmente utilizando o caractere cifrão ($). Ou seja, podemos acessar cada coluna individualmente.
Logo, nosso data frame alunos
é composto 4 variáveis (ou colunas): id, nome, idade e sexo. Vejamos como acessá-las individualmente.
Acesso à cada vetor de forma individual
id nome idade sexo
1 1 Pedro 22 M
2 2 Maria 19 F
3 3 João 17 M
4 4 Ana 25 F
5 5 Beatriz 24 F
[1] 1 2 3 4 5
[1] "Pedro" "Maria" "João" "Ana" "Beatriz"
[1] 22 19 17 25 24
[1] "M" "F" "M" "F" "F"
Assim, um data frame compõe o que chamamos de conjunto de dados:
cada coluna representa uma variável
cada linha representa um indivíduo
Podemos verificar um resumo dos dados por meio da função str()
:
'data.frame': 5 obs. of 4 variables:
$ id : num 1 2 3 4 5
$ nome : chr "Pedro" "Maria" "João" "Ana" ...
$ idade: num 22 19 17 25 24
$ sexo : chr "M" "F" "M" "F" ...
id
e idade
são numéricas, enquanto nome
e sexo
são caracteres.A tabela a seguir apresenta dados de pacientes, com respectivos peso e altura
Altura (m) | Peso (cm) |
---|---|
1,70 | 60 |
1,68 | 68 |
1,75 | 85 |
1,68 | 67 |
1,65 | 68 |
1,80 | 102 |
Vamos criar um data frame no RStudio com esses dados. A base de dados se chamará pacientes
.
Após isso, vamos usar os dados pra criar a variável IMC (peso dividido pelo quadrado da altura)
#Criação do vetor altura
altura <- c(1.7, 1.68, 1.75, 1.68, 1.65, 1.8)
#Criação do vetor peso
peso <- c(60, 68, 85, 67, 68, 102)
#Criação do data frame
pacientes <- data.frame(altura, peso)
#Impressão do data frame
pacientes
altura peso
1 1.70 60
2 1.68 68
3 1.75 85
4 1.68 67
5 1.65 68
6 1.80 102
[1] 20.76125 24.09297 27.75510 23.73866 24.97704 31.48148
E se quisermos incorporar o IMC ao nosso banco de dados?
Basta usar novamente o operador cifrão e atribuir uma nova variável ao data frame.
Ao utilizar o cifrão, o software entenderá que estamos atribuindo a variável ao data frame.
altura peso
1 1.70 60
2 1.68 68
3 1.75 85
4 1.68 67
5 1.65 68
6 1.80 102
#Atribuição da variável IMC ao data frame
pacientes$imc <- pacientes$peso / pacientes$altura^2
#Impressão do data frame após inclusão
pacientes
altura peso imc
1 1.70 60 20.76125
2 1.68 68 24.09297
3 1.75 85 27.75510
4 1.68 67 23.73866
5 1.65 68 24.97704
6 1.80 102 31.48148
Conforme vimos, os data frames são estruturas úteis para a criação de banco de dados;
Entretanto, muitas vezes as bases de dados são grandes demais para serem digitadas.
Outras vezes, podemos receber dados externos de outras fontes:
Pesquisadores externos
Fontes de informação oficiais (SUS, IBGE, ICMBio, etc)
Dados de questionários
Estudos anteriores, dentre outras possibilidades.
Para casos como esse, o R permite a leitura de arquivos externos
O R é capaz de ler documentos de diversos formatos.
Entretanto nessa disciplina focaremos apenas em um tipo, o CSV.
Arquivos CSV são planilhas no estilo Excel, cujos dados são separados por vírgula.
No Moodle está disponível um arquivo chamado Bacalhau.csv. Salve-o na pasta que criamos no início da aula.
Antes de efetuarmos a leitura do arquivo, precisamos informar ao R em que local ele está armazenado.
Quando trabalhamos com o R, é importante organizarmos os arquivos de um projeto em um lugar de fácil acesso e que todos os arquivos relacionados estejam em um só lugar.
Esse lugar é chamado diretório de trabalho.
Vamos definir a pasta que criamos no início da aula como nosso diretório de trabalho.
Para definir o diretório de trabalho, siga o caminho Session -> Set Working Directory -> Choose Directory...
Para ler nosso arquivo para o R, usaremos as funções read.csv()
e read.csv2()
.
Essas funções efetuam a leitura de arquivos no formato CSV para o ambiente do R.
Usamos read.csv()
quando os dados são separados por vírgula (,);
Usamos read.csv2()
quando os dados são separados por ponto e vírgula (;);
Para isso, basta informarmos o nome do arquivo como parâmetro da função, entre aspas.
Vamos efetuar a leitura do arquivo Bacalhau.csv
.
Bacalhau.csv
para o R Bacalhau.Area.Idade.Sexo.Peso.Compr.Estagio.Tripanosomas
1 1;Mageroya;6;Fêmea;1548;59;Imaturo;1
2 2;Soroya;4;Fêmea;1382;51;Imaturo;0
3 3;Soroya;5;Macho;4336;76;Maduro;3
4 4;Varangerfjord;4;Fêmea;986;48;Imaturo;0
5 5;Mageroya;6;Macho;4292;77;Imaturo;0
6 6;Mageroya;5;Fêmea;1746;56;Imaturo;0
7 7;Soroya;8;Fêmea;6934;93;Maduro;0
8 8;Varangerfjord;1;Fêmea;130;26;Imaturo;0
9 9;Tanafjord;7;Macho;2900;75;Maduro;0
10 10;Soroya;6;Fêmea;3948;72;Maduro;0
11 11;Varangerfjord;8;Macho;2814;66;Maduro;0
12 12;Tanafjord;10;Macho;8426;92;Maduro;0
13 13;Varangerfjord;4;Macho;760;44;Imaturo;4
14 14;Soroya;6;Macho;2404;61;Intermediário;2
15 15;Tanafjord;2;Fêmea;240;31;Imaturo;0
16 16;Tanafjord;6;Fêmea;3426;68;Maduro;0
17 17;Mageroya;5;Macho;3888;71;Imaturo;0
18 18;Mageroya;2;Fêmea;440;36;Imaturo;0
19 19;Mageroya;6;Fêmea;1316;49;Intermediário;0
20 20;Tanafjord;3;Macho;1108;51;Imaturo;0
21 21;Soroya;5;Macho;1726;54;Intermediário;0
22 22;Soroya;6;Fêmea;3042;69;Maduro;0
23 23;Mageroya;3;Macho;968;49;Imaturo;2
24 24;Mageroya;6;Macho;1608;54;Imaturo;0
25 25;Tanafjord;6;Fêmea;1680;58;Imaturo;1
26 26;Mageroya;6;Macho;2410;62;Imaturo;1
27 27;Tanafjord;2;Macho;178;28;Intermediário;0
28 28;Tanafjord;4;Macho;1154;52;Imaturo;0
29 29;Soroya;6;Macho;1824;57;Imaturo;0
30 30;Soroya;4;Macho;1354;55;Imaturo;0
31 31;Tanafjord;5;Macho;3412;74;Maduro;3
32 32;Mageroya;3;Fêmea;844;45;Imaturo;0
33 33;Tanafjord;3;Macho;612;40;Imaturo;0
34 34;Mageroya;2;Macho;220;30;Imaturo;0
35 35;Tanafjord;4;Macho;1522;55;Imaturo;0
36 36;Varangerfjord;3;Macho;794;44;Imaturo;0
37 37;Varangerfjord;3;Fêmea;554;40;Imaturo;2
38 38;Varangerfjord;7;Fêmea;6044;84;Maduro;1
39 39;Soroya;7;Macho;3266;72;Maduro;0
40 40;Tanafjord;3;Macho;544;38;Imaturo;0
41 41;Varangerfjord;6;Fêmea;4076;76;Maduro;2
42 42;Soroya;5;Macho;2710;69;Imaturo;3
43 43;Mageroya;4;Fêmea;982;47;Imaturo;0
44 44;Soroya;6;Macho;1072;51;Imaturo;1
45 45;Tanafjord;6;Fêmea;2508;63;Intermediário;0
46 46;Tanafjord;6;Macho;2280;62;Imaturo;0
47 47;Mageroya;4;Fêmea;1276;53;Imaturo;1
48 48;Soroya;3;Macho;1070;48;Imaturo;1
49 49;Tanafjord;3;Fêmea;856;46;Imaturo;0
50 50;Soroya;7;Fêmea;2724;65;Intermediário;0
51 51;Tanafjord;8;Fêmea;4130;73;Maduro;0
52 52;Tanafjord;6;Fêmea;4228;76;Intermediário;0
53 53;Tanafjord;5;Fêmea;3618;70;Intermediário;0
54 54;Tanafjord;6;Fêmea;1346;55;Imaturo;0
read.csv2()
Perceba que agora os dados foram lidos corretamente.
Bacalhau Area Idade Sexo Peso Compr Estagio Tripanosomas
1 1 Mageroya 6 Fêmea 1548 59 Imaturo 1
2 2 Soroya 4 Fêmea 1382 51 Imaturo 0
3 3 Soroya 5 Macho 4336 76 Maduro 3
4 4 Varangerfjord 4 Fêmea 986 48 Imaturo 0
5 5 Mageroya 6 Macho 4292 77 Imaturo 0
6 6 Mageroya 5 Fêmea 1746 56 Imaturo 0
7 7 Soroya 8 Fêmea 6934 93 Maduro 0
8 8 Varangerfjord 1 Fêmea 130 26 Imaturo 0
9 9 Tanafjord 7 Macho 2900 75 Maduro 0
10 10 Soroya 6 Fêmea 3948 72 Maduro 0
11 11 Varangerfjord 8 Macho 2814 66 Maduro 0
12 12 Tanafjord 10 Macho 8426 92 Maduro 0
13 13 Varangerfjord 4 Macho 760 44 Imaturo 4
14 14 Soroya 6 Macho 2404 61 Intermediário 2
15 15 Tanafjord 2 Fêmea 240 31 Imaturo 0
16 16 Tanafjord 6 Fêmea 3426 68 Maduro 0
17 17 Mageroya 5 Macho 3888 71 Imaturo 0
18 18 Mageroya 2 Fêmea 440 36 Imaturo 0
19 19 Mageroya 6 Fêmea 1316 49 Intermediário 0
20 20 Tanafjord 3 Macho 1108 51 Imaturo 0
21 21 Soroya 5 Macho 1726 54 Intermediário 0
22 22 Soroya 6 Fêmea 3042 69 Maduro 0
23 23 Mageroya 3 Macho 968 49 Imaturo 2
24 24 Mageroya 6 Macho 1608 54 Imaturo 0
25 25 Tanafjord 6 Fêmea 1680 58 Imaturo 1
26 26 Mageroya 6 Macho 2410 62 Imaturo 1
27 27 Tanafjord 2 Macho 178 28 Intermediário 0
28 28 Tanafjord 4 Macho 1154 52 Imaturo 0
29 29 Soroya 6 Macho 1824 57 Imaturo 0
30 30 Soroya 4 Macho 1354 55 Imaturo 0
31 31 Tanafjord 5 Macho 3412 74 Maduro 3
32 32 Mageroya 3 Fêmea 844 45 Imaturo 0
33 33 Tanafjord 3 Macho 612 40 Imaturo 0
34 34 Mageroya 2 Macho 220 30 Imaturo 0
35 35 Tanafjord 4 Macho 1522 55 Imaturo 0
36 36 Varangerfjord 3 Macho 794 44 Imaturo 0
37 37 Varangerfjord 3 Fêmea 554 40 Imaturo 2
38 38 Varangerfjord 7 Fêmea 6044 84 Maduro 1
39 39 Soroya 7 Macho 3266 72 Maduro 0
40 40 Tanafjord 3 Macho 544 38 Imaturo 0
41 41 Varangerfjord 6 Fêmea 4076 76 Maduro 2
42 42 Soroya 5 Macho 2710 69 Imaturo 3
43 43 Mageroya 4 Fêmea 982 47 Imaturo 0
44 44 Soroya 6 Macho 1072 51 Imaturo 1
45 45 Tanafjord 6 Fêmea 2508 63 Intermediário 0
46 46 Tanafjord 6 Macho 2280 62 Imaturo 0
47 47 Mageroya 4 Fêmea 1276 53 Imaturo 1
48 48 Soroya 3 Macho 1070 48 Imaturo 1
49 49 Tanafjord 3 Fêmea 856 46 Imaturo 0
50 50 Soroya 7 Fêmea 2724 65 Intermediário 0
51 51 Tanafjord 8 Fêmea 4130 73 Maduro 0
52 52 Tanafjord 6 Fêmea 4228 76 Intermediário 0
53 53 Tanafjord 5 Fêmea 3618 70 Intermediário 0
54 54 Tanafjord 6 Fêmea 1346 55 Imaturo 0
Efetuamos a leitura do arquivo, mas apenas imprimimos o banco de dados em tela. Precisamos salvá-lo para uso posterior.
Para isso, basta atribuir o resultado da leitura a um objeto, assim como fazemos com vetores.
Vamos salvar os dados no objeto bacalhau:
'data.frame': 54 obs. of 8 variables:
$ Bacalhau : int 1 2 3 4 5 6 7 8 9 10 ...
$ Area : chr "Mageroya" "Soroya" "Soroya" "Varangerfjord" ...
$ Idade : int 6 4 5 4 6 5 8 1 7 6 ...
$ Sexo : chr "Fêmea" "Fêmea" "Macho" "Fêmea" ...
$ Peso : int 1548 1382 4336 986 4292 1746 6934 130 2900 3948 ...
$ Compr : int 59 51 76 48 77 56 93 26 75 72 ...
$ Estagio : chr "Imaturo" "Imaturo" "Maduro" "Imaturo" ...
$ Tripanosomas: int 1 0 3 0 0 0 0 0 0 0 ...
Agora que o arquivo foi importado e salvo, podemos usar seus dados em análises.
Utilizaremos bastante essa rotina de importação em nossas aulas. Por isso é muito importante que o processo esteja bem claro a todos.
Agora que sabemos os principais modos de ingressar com dados no R, vamos começar a trabalhar algumas análises estatísticas básicas.
Como já foi visto, o R é focado principalmente em análise estatística
As principais funções estatísticas são as seguintes:
Soma: sum()
Média: mean()
Variância: var()
Mediana: median()
Desvio Padrão: sd()
Valor mínimo: min()
Valor máximo: max()
Amplitude: range()
Quantis: quantile(, probs)
Tabela de frequências: table()
Essas funções podem necessitar de parâmetros adicionais, como a função quantile()
.
Para acessar o detalhamento e os parêmetros de uma função, podemos usar o sinal de ? antes da função.
Vamos verificar a função quantile()
, digitando no console ?quantile
Vamos utilizar o conjunto de dados bacalhau
para fazer alguns exemplos:
Some o peso de todos os bacalhaus ;
Calcule a média, a mediana, a variância e o desvio padrão das idades dos bacalhaus;
Qual o comprimento do menor bacalhau? E do maior?
Faça uma tabela de frequência do número de bacalhaus de cada área?
Resolução dos exemplos
Resolução dos exemplos
Com essa aula, encerramos o tópico de introdução ao R;
No decorrer das aulas práticas, aprenderemos novas funcionalidades, como novas funções, geração de gráficos, uso de modelos, dentre outras.
Caso tenha alguma dúvida ou dificuldade nas noções básicas de R, retorne sempre às aulas 1 e 2 ou tire suas dúvidas com o professor ou monitor da disciplina.
Crie um script e salve com o nome atv2_est212
Leia os dados do arquivo Bacalhau.csv;
Calcule o Peso
médio e o desvio padrão do Peso
dos bacalhaus;
Faça tabelas de frequência das variáveis Sexo
e Estagio
;
Verifique qual o número máximo de Tripanosomas
encontrado nos bacalhaus;
Calcule o coeficiente de variação do Peso
e do comprimento (Compr
) dos bacalhaus. Lembrando que o coeficiente de variação é calculado da seguinte forma:
\[ CV = \dfrac{\text{desvio padrão}}{\text{média}} \]