# Carregando bibliotecas
library(tidyverse)
library(MASS)

1 Aula 01

1.1 Noções básicas

  • Executar linha atual: Ctrl+Enter
  • Auto-complete (ajuda a escrever): Tab
  • Tirar dúvidade de comandos: help()
  • Atribuir objetos: -> , <- e =
  • Listar objetos: ls()
  • Remover objeto X: rm(X)
  • Remover todos os objetos: rm(list = ls())
exemplo = 1
exemplo2 <- 1
1 -> exemplo3 

1.2 Tipo de Dados (objetos)

1.2.1 Numérico (numeric)

A dados do tipo numeric são simplesmente número inteiros ou reais. Os números podem serem escritos normalmente ou com notação científica, utiliando o E (ou e). Além dele há o tipo de dado interger que só registra números inteiros, mas a distinção geralmente não é util.

x <- 4.5 # O . é o separador decimal
class(x)
## [1] "numeric"
is.numeric(x) # Confere se o objeto é um da classe numeric
## [1] TRUE
1E4 # Notação científica
## [1] 10000

1.2.2 Caracter (character)

Os dados do tipo character são caracteres ou texto. São escritos obrigatoriamente entre aspas (“” ou ’’). Os caracteres podem conter espaços ou acentos.

x <- "floresta" # Sempre entre aspas
class(x)
## [1] "character"
is.character(x) # Confere se o objeto é um da classe character
## [1] TRUE
y <- "Diversidade (Simpson)" # Pode conter espaços ou acentos
y
## [1] "Diversidade (Simpson)"

1.2.3 Lógico (logical)

A dados do tipo logical indicam indicam verdadeiro ou falso. Sendo TRUE ou T, verdadeiro e FALSE ou F, falso. São utilizados para indicar opções onde há apenas duas opções ou como resultado de um teste lógico.

x <- TRUE # Não precisa estar entre aspas, é uma palavra especial no R
class(x)
## [1] "logical"
is.logical(x) # Confere se o objeto é um da classe logical
## [1] TRUE
y <- F # Pode ser abreviada
class(y)
## [1] "logical"

1.3 Vetor

vector('logical',10)
##  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
vector('numeric',10)
##  [1] 0 0 0 0 0 0 0 0 0 0
vector('character',10)
##  [1] "" "" "" "" "" "" "" "" "" ""
#entre outros
  • Concaternar
c('a','b')
## [1] "a" "b"
  • Outras formas
x=1:20;x
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
x = seq(10,40,3);x
##  [1] 10 13 16 19 22 25 28 31 34 37 40

1.3.1 Exercício 01

#a) Crie um vetor que seja uma sequência numérica que inicie no valor 5 e termine no valor 17 e atribua à variável x
x = 5:17 
x2 = seq(5,17,1)
x; x2
##  [1]  5  6  7  8  9 10 11 12 13 14 15 16 17
##  [1]  5  6  7  8  9 10 11 12 13 14 15 16 17
#b) Crie um vetor que seja uma sequência numérica que inicie no valor 3 e termine no valor 40, incrementando de 2 em 2, e atribua à variável y.
y = seq(3,40,3)
y
##  [1]  3  6  9 12 15 18 21 24 27 30 33 36 39
#c) Combine os dois vetores atribuindo-os à variável z.
z  <- cbind(x,y) # Junta os vetores em colunas
z2 <- rbind(x,y) # Junta os vetores em Linhas (row)
z; z2
##        x  y
##  [1,]  5  3
##  [2,]  6  6
##  [3,]  7  9
##  [4,]  8 12
##  [5,]  9 15
##  [6,] 10 18
##  [7,] 11 21
##  [8,] 12 24
##  [9,] 13 27
## [10,] 14 30
## [11,] 15 33
## [12,] 16 36
## [13,] 17 39
##   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
## x    5    6    7    8    9   10   11   12   13    14    15    16    17
## y    3    6    9   12   15   18   21   24   27    30    33    36    39
#d) Crie um vetor que seja um sequência numérica iniciando em 7 e terminando em 38 que possua exatamente 12 elementos com intervalos iguais entre os valores.

help(seq)
seq(7,38, length.out = 12)
##  [1]  7.000000  9.818182 12.636364 15.454545 18.272727 21.090909 23.909091
##  [8] 26.727273 29.545455 32.363636 35.181818 38.000000

1.4 Matriz

A matriz é uma maneira de representar dados dividindo-os em linhas e colunas.

m = matrix(nrow = 2, ncol = 3)
m
##      [,1] [,2] [,3]
## [1,]   NA   NA   NA
## [2,]   NA   NA   NA
matrix(1:6,nrow = 2, ncol = 3)
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
attributes(m)
## $dim
## [1] 2 3
dim(m)
## [1] 2 3
a = 1:4
b = 6:9
cbind(a, b) # Junta os vetores em colunas
##      a b
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
rbind(a, b) # Junta os vetores em Linhas (row)
##   [,1] [,2] [,3] [,4]
## a    1    2    3    4
## b    6    7    8    9

1.5 Subset

[ ] à Retorna um objeto da mesma classe do original. Pode retornar mais de um elemento

Para vetor

x = c('a', 'd', 'd', 'x', 'b', 'z')
x[2] # retorna o segundo elemento
## [1] "d"
x[1:4] # retona os elementos de 1 a 4
## [1] "a" "d" "d" "x"
x[c(1,3:5)]
## [1] "a" "d" "x" "b"
x > "b"
## [1] FALSE  TRUE  TRUE  TRUE FALSE  TRUE
x[x > "b"] # Utiliza vetor lógico para escolher elementos
## [1] "d" "d" "x" "z"
k = x > "b" 
sum(k) # Pode ser usado para contar elementos
## [1] 4

Para matrizes

x = matrix(1:8,2,4)
x
##      [,1] [,2] [,3] [,4]
## [1,]    1    3    5    7
## [2,]    2    4    6    8
x[2,3] # Escolhe o elemnto na linha 2, coluna 3
## [1] 6
x[1,]  # Todos da linha 1
## [1] 1 3 5 7
x[,3]  # Todos da coluna 3
## [1] 5 6
head(x, n = 1) # Primeira linha (cabeça)
##      [,1] [,2] [,3] [,4]
## [1,]    1    3    5    7
tail(x, n = 1) # Ultima linha  (Cauda)
##      [,1] [,2] [,3] [,4]
## [2,]    2    4    6    8

1.5.1 Exercício 02

#a) Crie uma matriz de 5 linhas por 8 colunas e valores de 1 a 40 e atribua à variável x.
x <- matrix(1:40, 5, 8)
x
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,]    1    6   11   16   21   26   31   36
## [2,]    2    7   12   17   22   27   32   37
## [3,]    3    8   13   18   23   28   33   38
## [4,]    4    9   14   19   24   29   34   39
## [5,]    5   10   15   20   25   30   35   40
#b) Substitua o elemento da linha 3 e coluna 2 por 55.
x[3,2] <- 55
x
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,]    1    6   11   16   21   26   31   36
## [2,]    2    7   12   17   22   27   32   37
## [3,]    3   55   13   18   23   28   33   38
## [4,]    4    9   14   19   24   29   34   39
## [5,]    5   10   15   20   25   30   35   40
#c) Substitua todos os elementos da 2 linha pelo valor 9.
x[2,] <- 9
x
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,]    1    6   11   16   21   26   31   36
## [2,]    9    9    9    9    9    9    9    9
## [3,]    3   55   13   18   23   28   33   38
## [4,]    4    9   14   19   24   29   34   39
## [5,]    5   10   15   20   25   30   35   40
#d) Atribua todos os valores da coluna 7 a um novo vetor y.
y <- x[,7]
y
## [1] 31  9 33 34 35
#e) 5. Crie uma nova matriz x2 (3 x 3) a partir dos três primeiros elementos da 1ª, 3ª e 5ª colunas de x
x2 <- cbind(head(x[,cbind(1,3,5)], n = 3))
x2
##      [,1] [,2] [,3]
## [1,]    1   11   21
## [2,]    9    9    9
## [3,]    3   13   23

1.6 Operações dos valores

1.6.1 Operações aritmeticas

2+2 # Soma
## [1] 4
8-3 # Subtração
## [1] 5
3*8 # Multiplicação
## [1] 24
8/2 # Divisão
## [1] 4
2^8 # Potências
## [1] 256
(2+4)/7 # Prioridade de solução
## [1] 0.8571429
a = 1:4
b = 5:8
a + b # Soma vetores
## [1]  6  8 10 12
a * b # Multiplica elemento por elemento
## [1]  5 12 21 32
a %% b # Modulo
## [1] 1 2 3 4
t(a) %*% b # Multiplicação de matrizes
##      [,1]
## [1,]   70

1.6.2 Operações lógicas

valor <- 0.83 # Valor de exemplo
valor < 0.9 # Menor (> para maior)
## [1] TRUE
valor <= 0.83 # Menor ou igual (>= para maior ou igual)
## [1] TRUE
valor == 9 # valor exatamente igual
## [1] FALSE
valor != 0.8 # valor diferente de
## [1] TRUE
ex1 <- 1:4
ex1 == 4 # Podem ser aplicados a vetores
## [1] FALSE FALSE FALSE  TRUE
0<=valor & valor>=0.1 # Dois criterios aditivos; & -> significa E (AND) 
## [1] TRUE
0<=valor | valor<=0.9 # Dois criterios, um ou outro; | -> significa OU (OR)
## [1] TRUE
!valor == 0.83 # Inverter o argumento lógico (Resultado contrário)
## [1] FALSE
ifelse(ex1>4, yes = "M", no = "F") # Teste condicional para categorizar 
## [1] "F" "F" "F" "F"

1.6.3 Exercício

Utilizando as variáveis criadas no exercício anterior, faça:

#a) Some elemento por elemento da coluna 3 de x com y e atribua a um novo vetor z
z <- x[,3] + y
z
## [1] 42 18 46 48 50
#b) Verifique quantos valores em x são maiores que 20.
sum (x>20)
## [1] 17
#c) Some todos os valores maiores que 20 em x.
sum(x[x>20])
## [1] 547
#d) Ache média e desvio padrão dos valores acima de 20 em x
sd(x[x>20])
## [1] 8.247994
mean(x[x>20])
## [1] 32.17647
summary (x[x>20])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   21.00   26.00   31.00   32.18   36.00   55.00

1.7 Lista (list)

Elementos de uma lista podem ser de tipos diferentes:

list (1, 'a', 'FALSE', c(4,5,6))
## [[1]]
## [1] 1
## 
## [[2]]
## [1] "a"
## 
## [[3]]
## [1] "FALSE"
## 
## [[4]]
## [1] 4 5 6

Subset [[ ]] à Retorna um objeto de uma lista ou data frame. Não necessariamente uma lista.

x = list (vet=1:4, pi = 3.14)

a= x[1] # Extrai o superior com a lista
a
## $vet
## [1] 1 2 3 4
is.list(a)
## [1] TRUE
a= x[[1]] #Extrai o vetor da lista
a
## [1] 1 2 3 4
is.list(a)
## [1] FALSE
x [["pi"]] # Pode escolher por nome -> vetor
## [1] 3.14
x ["pi"] # Pode escolher por nome -> lista
## $pi
## [1] 3.14
x$pi # Extrai vetor pelo nome
## [1] 3.14

1.7.1 Data frame

É uma estrutura de dados utilizada para armazenar valores de qualquer tipo de dados

x = data.frame(numero = 1:4, logica = c(T,T,F,F))
x
##   numero logica
## 1      1   TRUE
## 2      2   TRUE
## 3      3  FALSE
## 4      4  FALSE
nrow(x) # Número de linhas
## [1] 4
ncol(x) # Número de colunas
## [1] 2
colnames(x) # Lista os nomes das colunas
## [1] "numero" "logica"

1.8 Ler e escrever arquivos (Input/Output)

Podemos ler dados externos armazenados em arquivos na nossa area de trabalho.

read.table ( ) data = read.table (“arquivo.txt”, header=T, sep=“ ”, row.names = 1, stringsAsFactors = F) * header: se a primeira linha é cabeçalho. * sep: separador – “ “, tab), “,”, “;”, etc. * row.names: qual das colunas representa o nome das linhas * stringAsFactors: se o texto da tabela será considerado uma variável do tipo Factor (as vezes ajuda, as vezes atrapalha). * Várias funções no R são similares ao read.table: read.csv, read.delim, etc.

Podemos escrever os nosso dados em arquivos também write.table (x) write.table (data, ”arquivo.txt”, sep=“, col.names=F, row.4names=T, append=F, quote=F) • Escreve a tabela data no arquivo destino “arquivo.txt” • sep: separador – “ “, tab), “,”, “;”, etc. • row.names: lógico – indica se é para escrever o nome das linhas. • col.names: lógico – indica se é para escrever o nome das colunas. • append: se o arquivo destino já existir, se é pra acrescentar linhas (T) ou sobrescrever o arquivo (F). • quote: escrever strings com aspas (T).

1.8.1 Exercício 04

#a) Leia o arquivo “barcodes.txt”, que está separado por tab, sem cabeçalho, sinalizando que o nome das linhas está na 1ª linha do arquivo e que o valor stringAsFactors é falso, atribua à variável barcodes.
barcodes <- read.table("barcodes.txt", sep = "\t", header = T, stringsAsFactors = F)

#b) Crie um vetor de valores lógicos informando quais valores na 1ª coluna são maiores que 10 reads e atribua a uma variável, faça o mesmo para a 4ª coluna, atribuindo a uma outra variável.
col1 = barcodes$bar_01 > 10
col2 = barcodes$bar_04 > 10

#c) A partir dos vetores criados na questão 2, crie dois vetores de valores lógicos: um informando quais miRNAs possuem mais de 10 reads em ambas amostras e outro informando quais miRNAs possuem mais de 10 reads em pelo menos uma amostra
E  <- col1 + col2 > 1
ou <- col1 + col2 > 0

# d) Copie para a variável ‘expressao’ os valores de reads de miRNAs da 1ª e 4ª colunas expressos com mais de 10 reads em ambas as amostras.
temp <- data.frame(mirnas = barcodes$mirnas, bar_01 = barcodes$bar_01, bar_04 = barcodes$bar_04) # Criei um data frame com o nome dos mirns, e a coluna 1 e 4 preservando os nomes
expressao <- temp[E,] # Escolhi somente as linhas que atendessem os critérios 
expressao
##           mirnas bar_01 bar_04
## 35   hsa-mir-660     16     66
## 52   hsa-mir-574     43    305
## 53   hsa-mir-19a     11    181
## 58   hsa-mir-145    453  13399
## 73    hsa-mir-93     30    304
## 100   hsa-mir-21    240   3160
## 107  hsa-mir-23a     45    652
## 108  hsa-mir-23b     58   1022
## 124  hsa-mir-150     40     95
## 130  hsa-mir-215     23    124
## 152  hsa-mir-223     70   1362
## 160   hsa-mir-17     39    792
## 170   hsa-mir-28     12    116
## 178  hsa-mir-195     12     47
## 225 hsa-mir-200a     52   1355
## 235  hsa-mir-484     13    196
## 240  hsa-mir-99a     21   1154
## 258  hsa-mir-29c    359   1478
## 265  hsa-mir-126     14    176
## 267  hsa-mir-140     52    724
## 278   hsa-mir-31     47    214
## 286  hsa-mir-141     22    133
## 287  hsa-mir-342     14     94
## 303 hsa-mir-200b     16    243
## 304  hsa-mir-29a    444   2724
## 305   hsa-let-7g     13    198
## 322  hsa-mir-451    143   1277
## 350   hsa-let-7b     21   1181
## 393  hsa-mir-34a     20    609
## 408 hsa-mir-125a     42    711
## 416  hsa-mir-192    140    858
## 431 hsa-mir-148a    109    257
## 447  hsa-mir-361     13     77
## 449  hsa-mir-15b     30    343
## 506 hsa-mir-3607     33    238
## 512 hsa-mir-199b     21    198
## 513  hsa-mir-191    133   1237
#5) Copie para a variável ‘exp1’ os valores de reads de miRNAs da 1ª e 4ª colunas expresso com mais de 10 reads em pelo menos uma das amostras.
temp <- data.frame(mirnas = barcodes$mirnas, bar_01 = barcodes$bar_01, bar_04 = barcodes$bar_04)
exp1 <- temp[ou,]
exp1
##             mirnas bar_01 bar_04
## 1       hsa-mir-22      4    147
## 7     hsa-mir-193b      4     42
## 8      hsa-mir-188      0     20
## 20     hsa-mir-224      0     43
## 21     hsa-mir-26b      3     38
## 29     hsa-mir-590      5     57
## 30     hsa-mir-455      5    134
## 34      hsa-let-7d      1     29
## 35     hsa-mir-660     16     66
## 47    hsa-mir-1246      0     32
## 49     hsa-mir-99b      1     43
## 52     hsa-mir-574     43    305
## 53     hsa-mir-19a     11    181
## 55     hsa-mir-155      1     13
## 58     hsa-mir-145    453  13399
## 73      hsa-mir-93     30    304
## 76     hsa-mir-20b      0     14
## 78     hsa-mir-502      1     25
## 83     hsa-mir-151      6    143
## 90     hsa-mir-429      1     16
## 91     hsa-mir-10a     10    388
## 95     hsa-mir-7-1      1     15
## 99     hsa-mir-222      5     61
## 100     hsa-mir-21    240   3160
## 106    hsa-mir-10b      2     45
## 107    hsa-mir-23a     45    652
## 108    hsa-mir-23b     58   1022
## 122  hsa-mir-92a-2      0     21
## 124    hsa-mir-150     40     95
## 130    hsa-mir-215     23    124
## 146    hsa-mir-23c      2     12
## 149     hsa-let-7e      2     61
## 152    hsa-mir-223     70   1362
## 154   hsa-mir-24-2      0     15
## 159   hsa-mir-193a      3     34
## 160     hsa-mir-17     39    792
## 165    hsa-mir-501      1     17
## 167    hsa-mir-296      0     22
## 170     hsa-mir-28     12    116
## 175 hsa-mir-196a-1      0     12
## 178    hsa-mir-195     12     47
## 179    hsa-mir-107      3    152
## 186    hsa-mir-378      3     55
## 189   hsa-mir-130b      2     35
## 192   hsa-mir-135b      0     66
## 194    hsa-mir-708      1     52
## 198   hsa-mir-200c      7     38
## 203    hsa-mir-324      3     42
## 205   hsa-mir-16-2      0     23
## 209    hsa-mir-375      6     26
## 214    hsa-mir-30e      6     35
## 215    hsa-mir-339      6     91
## 223    hsa-mir-424      2     41
## 225   hsa-mir-200a     52   1355
## 235    hsa-mir-484     13    196
## 240    hsa-mir-99a     21   1154
## 243   hsa-mir-130a      3     98
## 248    hsa-mir-182      4     24
## 258    hsa-mir-29c    359   1478
## 262    hsa-mir-30d      2     95
## 265    hsa-mir-126     14    176
## 267    hsa-mir-140     52    724
## 278     hsa-mir-31     47    214
## 279    hsa-mir-425      8    177
## 282    hsa-mir-30b      1     45
## 286    hsa-mir-141     22    133
## 287    hsa-mir-342     14     94
## 293    hsa-mir-331      5     68
## 301   hsa-mir-1248      1     23
## 303   hsa-mir-200b     16    243
## 304    hsa-mir-29a    444   2724
## 305     hsa-let-7g     13    198
## 312    hsa-mir-221     10     73
## 314    hsa-mir-132      2     19
## 321     hsa-mir-25      9     92
## 322    hsa-mir-451    143   1277
## 330    hsa-mir-142      6     14
## 335     hsa-let-7i      5    126
## 342    hsa-mir-326      1     33
## 344    hsa-mir-345      4     71
## 350     hsa-let-7b     21   1181
## 362   hsa-mir-106b      2     18
## 377    hsa-mir-15a      9     68
## 384    hsa-mir-143      7    383
## 389  hsa-mir-92a-1      1     39
## 391   hsa-mir-320a      0     11
## 393    hsa-mir-34a     20    609
## 396     hsa-let-7c      3    118
## 401    hsa-mir-887      1     13
## 403   hsa-mir-146b      3     24
## 408   hsa-mir-125a     42    711
## 416    hsa-mir-192    140    858
## 420    hsa-mir-409      1     16
## 425   hsa-mir-1306      0     11
## 431   hsa-mir-148a    109    257
## 437  hsa-mir-29b-2      3     13
## 444    hsa-mir-30a      3     17
## 446    hsa-mir-100     10    277
## 447    hsa-mir-361     13     77
## 449    hsa-mir-15b     30    343
## 469   hsa-mir-378c      3     41
## 471    hsa-mir-532      2     89
## 472    hsa-mir-210      2    277
## 480   hsa-mir-4284      0     14
## 483    hsa-mir-27a      3     60
## 486    hsa-mir-27b      4     35
## 489    hsa-mir-362      2     76
## 494    hsa-mir-92b      0     27
## 498    hsa-mir-505      0     16
## 506   hsa-mir-3607     33    238
## 511   hsa-mir-301a      2     26
## 512   hsa-mir-199b     21    198
## 513    hsa-mir-191    133   1237
#6) Escreva em arquivos as variáveis expressao e exp1.
write.table(exp1, file = "exp1.txt", sep = "\t")
write.table(expressao, file = "expressao.txt", sep = "\t")

1.8.2 Exercício 05

#1) Leia o arquivo “barcodes.txt”, que está separado por tab, com cabeçalho, sinalizando que o nome das linhas está na 1ª linha do arquivo e que o valor stringAsFactors é falso, atribua à variável barcodes.
nomeada <- read.table("barcodes.txt", header = T, sep = "\t")
barcodes <- read.table("barcodes.txt", header = T, sep = "\t", row.names = 1)

#2) A partir da tabela barcodes crie uma tabela com as 200 primeiras linhas e 5 primeiras colunas.
tab = barcodes[1:200,1:5]

#3) A partir da tabela barcodes crie duas tabelas, uma contendo os miRNAs das linhas ímpares e outra contendo os miRNAs das linhas pares

impar = seq(nrow(barcodes)) %% 2 # Tiro o modulo do indice da linha 
b <- barcodes[impar == 1,]
c <- barcodes[impar == 0,]

#4) Crie um vetor de 10 posições em que cada valor seja a soma de cada barcode
colSums(barcodes)
## bar_01 bar_02 bar_03 bar_04 bar_05 bar_06 bar_07 bar_08 bar_09 bar_10 
##   3180 246427  14896  42562  42934  33660 618112  58318 191846  50388
#5) Identifique quantos miRNAs estão expressos em todas as amostras
a <- barcodes >= 10
b <- rowSums(a) == 10
c <- barcodes[b,]

#6) Identifique quantos miRNAs possuem expressão maior que 10 reads em pelo menos uma amostra 
a <- barcodes >= 10
b <- rowSums(a) > 0
c <- barcodes[b,]

#7) Crie uma nova tabela apenas com reads com expressão maior que 10 reads

#8) Crie uma tabela com os barcodes 1, 4, 6, 7, 9.
a <- barcodes[,c(1,4,6,7,9)]

#9) Crie um vetor de 5 posições em que cada valor seja a soma de cada barcode da questão anterior (utilize o  vetor de soma anteriormente criado)
colSums(a)
## bar_01 bar_04 bar_06 bar_07 bar_09 
##   3180  42562  33660 618112 191846
#10). Crie dois vetores com as expressões dos miRNAs hsa-miR-29c e hsa-miR-145 para os barcodes selecionados
b <- barcodes[,c(1,4,6,7,9)]
c <- b[c("hsa-mir-145", "hsa-mir-29c"),]

#11) 4. Normalize as expressões desses miRNAs para um milhão. (transforme em expressão relativa e multiplique por um milhão)
sweep(c, 2,colSums(c), "/")
##                bar_01     bar_04    bar_06    bar_07    bar_09
## hsa-mir-145 0.5578818 0.90065201 0.9488036 0.5511729 0.8899968
## hsa-mir-29c 0.4421182 0.09934799 0.0511964 0.4488271 0.1100032

2 Aula 02 - Estatística descritiva e distribuição normal

2.1 Estatística Descritiva

Organizar, classificar, descrever e comunicar dados Medidas de tendência central ou de posição

a <- 1:6
mean(a)# Média
## [1] 3.5
median(a) # Mediana
## [1] 3.5
quantile(a) # Quartis
##   0%  25%  50%  75% 100% 
## 1.00 2.25 3.50 4.75 6.00
summary(a) # Tudo
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    2.25    3.50    3.50    4.75    6.00
# Moda -> Se quiser fazer... boa sorte

3 Exercício

# 1) Utilizando os dados pré e pós tratamento, gere dados descritivos a respeito dos conjuntos
summary(anorexia)
##   Treat        Prewt           Postwt      
##  CBT :29   Min.   :70.00   Min.   : 71.30  
##  Cont:26   1st Qu.:79.60   1st Qu.: 79.33  
##  FT  :17   Median :82.30   Median : 84.05  
##            Mean   :82.41   Mean   : 85.17  
##            3rd Qu.:86.00   3rd Qu.: 91.55  
##            Max.   :94.90   Max.   :103.60
# 2) Gere um gráfico boxplot que contenha ambas amostras lado a lado
boxplot(list(Pretratamento = anorexia$Prewt, PosTratamento = anorexia$Postwt))

anorexia %>% ggplot( mapping = aes(x = Treat, y = Prewt ))+
#  geom_bar() +
  geom_boxplot()+
  geom_point()

# 2.1) versão alternativa
a = gather(anorexia, key = "Periodo", value = "Peso", -Treat) 
a
##     Treat Periodo  Peso
## 1    Cont   Prewt  80.7
## 2    Cont   Prewt  89.4
## 3    Cont   Prewt  91.8
## 4    Cont   Prewt  74.0
## 5    Cont   Prewt  78.1
## 6    Cont   Prewt  88.3
## 7    Cont   Prewt  87.3
## 8    Cont   Prewt  75.1
## 9    Cont   Prewt  80.6
## 10   Cont   Prewt  78.4
## 11   Cont   Prewt  77.6
## 12   Cont   Prewt  88.7
## 13   Cont   Prewt  81.3
## 14   Cont   Prewt  78.1
## 15   Cont   Prewt  70.5
## 16   Cont   Prewt  77.3
## 17   Cont   Prewt  85.2
## 18   Cont   Prewt  86.0
## 19   Cont   Prewt  84.1
## 20   Cont   Prewt  79.7
## 21   Cont   Prewt  85.5
## 22   Cont   Prewt  84.4
## 23   Cont   Prewt  79.6
## 24   Cont   Prewt  77.5
## 25   Cont   Prewt  72.3
## 26   Cont   Prewt  89.0
## 27    CBT   Prewt  80.5
## 28    CBT   Prewt  84.9
## 29    CBT   Prewt  81.5
## 30    CBT   Prewt  82.6
## 31    CBT   Prewt  79.9
## 32    CBT   Prewt  88.7
## 33    CBT   Prewt  94.9
## 34    CBT   Prewt  76.3
## 35    CBT   Prewt  81.0
## 36    CBT   Prewt  80.5
## 37    CBT   Prewt  85.0
## 38    CBT   Prewt  89.2
## 39    CBT   Prewt  81.3
## 40    CBT   Prewt  76.5
## 41    CBT   Prewt  70.0
## 42    CBT   Prewt  80.4
## 43    CBT   Prewt  83.3
## 44    CBT   Prewt  83.0
## 45    CBT   Prewt  87.7
## 46    CBT   Prewt  84.2
## 47    CBT   Prewt  86.4
## 48    CBT   Prewt  76.5
## 49    CBT   Prewt  80.2
## 50    CBT   Prewt  87.8
## 51    CBT   Prewt  83.3
## 52    CBT   Prewt  79.7
## 53    CBT   Prewt  84.5
## 54    CBT   Prewt  80.8
## 55    CBT   Prewt  87.4
## 56     FT   Prewt  83.8
## 57     FT   Prewt  83.3
## 58     FT   Prewt  86.0
## 59     FT   Prewt  82.5
## 60     FT   Prewt  86.7
## 61     FT   Prewt  79.6
## 62     FT   Prewt  76.9
## 63     FT   Prewt  94.2
## 64     FT   Prewt  73.4
## 65     FT   Prewt  80.5
## 66     FT   Prewt  81.6
## 67     FT   Prewt  82.1
## 68     FT   Prewt  77.6
## 69     FT   Prewt  83.5
## 70     FT   Prewt  89.9
## 71     FT   Prewt  86.0
## 72     FT   Prewt  87.3
## 73   Cont  Postwt  80.2
## 74   Cont  Postwt  80.1
## 75   Cont  Postwt  86.4
## 76   Cont  Postwt  86.3
## 77   Cont  Postwt  76.1
## 78   Cont  Postwt  78.1
## 79   Cont  Postwt  75.1
## 80   Cont  Postwt  86.7
## 81   Cont  Postwt  73.5
## 82   Cont  Postwt  84.6
## 83   Cont  Postwt  77.4
## 84   Cont  Postwt  79.5
## 85   Cont  Postwt  89.6
## 86   Cont  Postwt  81.4
## 87   Cont  Postwt  81.8
## 88   Cont  Postwt  77.3
## 89   Cont  Postwt  84.2
## 90   Cont  Postwt  75.4
## 91   Cont  Postwt  79.5
## 92   Cont  Postwt  73.0
## 93   Cont  Postwt  88.3
## 94   Cont  Postwt  84.7
## 95   Cont  Postwt  81.4
## 96   Cont  Postwt  81.2
## 97   Cont  Postwt  88.2
## 98   Cont  Postwt  78.8
## 99    CBT  Postwt  82.2
## 100   CBT  Postwt  85.6
## 101   CBT  Postwt  81.4
## 102   CBT  Postwt  81.9
## 103   CBT  Postwt  76.4
## 104   CBT  Postwt 103.6
## 105   CBT  Postwt  98.4
## 106   CBT  Postwt  93.4
## 107   CBT  Postwt  73.4
## 108   CBT  Postwt  82.1
## 109   CBT  Postwt  96.7
## 110   CBT  Postwt  95.3
## 111   CBT  Postwt  82.4
## 112   CBT  Postwt  72.5
## 113   CBT  Postwt  90.9
## 114   CBT  Postwt  71.3
## 115   CBT  Postwt  85.4
## 116   CBT  Postwt  81.6
## 117   CBT  Postwt  89.1
## 118   CBT  Postwt  83.9
## 119   CBT  Postwt  82.7
## 120   CBT  Postwt  75.7
## 121   CBT  Postwt  82.6
## 122   CBT  Postwt 100.4
## 123   CBT  Postwt  85.2
## 124   CBT  Postwt  83.6
## 125   CBT  Postwt  84.6
## 126   CBT  Postwt  96.2
## 127   CBT  Postwt  86.7
## 128    FT  Postwt  95.2
## 129    FT  Postwt  94.3
## 130    FT  Postwt  91.5
## 131    FT  Postwt  91.9
## 132    FT  Postwt 100.3
## 133    FT  Postwt  76.7
## 134    FT  Postwt  76.8
## 135    FT  Postwt 101.6
## 136    FT  Postwt  94.9
## 137    FT  Postwt  75.2
## 138    FT  Postwt  77.8
## 139    FT  Postwt  95.5
## 140    FT  Postwt  90.7
## 141    FT  Postwt  92.5
## 142    FT  Postwt  93.8
## 143    FT  Postwt  91.7
## 144    FT  Postwt  98.0
a$Periodo = factor(a$Periodo, levels = c("Prewt", "Postwt"))
a
##     Treat Periodo  Peso
## 1    Cont   Prewt  80.7
## 2    Cont   Prewt  89.4
## 3    Cont   Prewt  91.8
## 4    Cont   Prewt  74.0
## 5    Cont   Prewt  78.1
## 6    Cont   Prewt  88.3
## 7    Cont   Prewt  87.3
## 8    Cont   Prewt  75.1
## 9    Cont   Prewt  80.6
## 10   Cont   Prewt  78.4
## 11   Cont   Prewt  77.6
## 12   Cont   Prewt  88.7
## 13   Cont   Prewt  81.3
## 14   Cont   Prewt  78.1
## 15   Cont   Prewt  70.5
## 16   Cont   Prewt  77.3
## 17   Cont   Prewt  85.2
## 18   Cont   Prewt  86.0
## 19   Cont   Prewt  84.1
## 20   Cont   Prewt  79.7
## 21   Cont   Prewt  85.5
## 22   Cont   Prewt  84.4
## 23   Cont   Prewt  79.6
## 24   Cont   Prewt  77.5
## 25   Cont   Prewt  72.3
## 26   Cont   Prewt  89.0
## 27    CBT   Prewt  80.5
## 28    CBT   Prewt  84.9
## 29    CBT   Prewt  81.5
## 30    CBT   Prewt  82.6
## 31    CBT   Prewt  79.9
## 32    CBT   Prewt  88.7
## 33    CBT   Prewt  94.9
## 34    CBT   Prewt  76.3
## 35    CBT   Prewt  81.0
## 36    CBT   Prewt  80.5
## 37    CBT   Prewt  85.0
## 38    CBT   Prewt  89.2
## 39    CBT   Prewt  81.3
## 40    CBT   Prewt  76.5
## 41    CBT   Prewt  70.0
## 42    CBT   Prewt  80.4
## 43    CBT   Prewt  83.3
## 44    CBT   Prewt  83.0
## 45    CBT   Prewt  87.7
## 46    CBT   Prewt  84.2
## 47    CBT   Prewt  86.4
## 48    CBT   Prewt  76.5
## 49    CBT   Prewt  80.2
## 50    CBT   Prewt  87.8
## 51    CBT   Prewt  83.3
## 52    CBT   Prewt  79.7
## 53    CBT   Prewt  84.5
## 54    CBT   Prewt  80.8
## 55    CBT   Prewt  87.4
## 56     FT   Prewt  83.8
## 57     FT   Prewt  83.3
## 58     FT   Prewt  86.0
## 59     FT   Prewt  82.5
## 60     FT   Prewt  86.7
## 61     FT   Prewt  79.6
## 62     FT   Prewt  76.9
## 63     FT   Prewt  94.2
## 64     FT   Prewt  73.4
## 65     FT   Prewt  80.5
## 66     FT   Prewt  81.6
## 67     FT   Prewt  82.1
## 68     FT   Prewt  77.6
## 69     FT   Prewt  83.5
## 70     FT   Prewt  89.9
## 71     FT   Prewt  86.0
## 72     FT   Prewt  87.3
## 73   Cont  Postwt  80.2
## 74   Cont  Postwt  80.1
## 75   Cont  Postwt  86.4
## 76   Cont  Postwt  86.3
## 77   Cont  Postwt  76.1
## 78   Cont  Postwt  78.1
## 79   Cont  Postwt  75.1
## 80   Cont  Postwt  86.7
## 81   Cont  Postwt  73.5
## 82   Cont  Postwt  84.6
## 83   Cont  Postwt  77.4
## 84   Cont  Postwt  79.5
## 85   Cont  Postwt  89.6
## 86   Cont  Postwt  81.4
## 87   Cont  Postwt  81.8
## 88   Cont  Postwt  77.3
## 89   Cont  Postwt  84.2
## 90   Cont  Postwt  75.4
## 91   Cont  Postwt  79.5
## 92   Cont  Postwt  73.0
## 93   Cont  Postwt  88.3
## 94   Cont  Postwt  84.7
## 95   Cont  Postwt  81.4
## 96   Cont  Postwt  81.2
## 97   Cont  Postwt  88.2
## 98   Cont  Postwt  78.8
## 99    CBT  Postwt  82.2
## 100   CBT  Postwt  85.6
## 101   CBT  Postwt  81.4
## 102   CBT  Postwt  81.9
## 103   CBT  Postwt  76.4
## 104   CBT  Postwt 103.6
## 105   CBT  Postwt  98.4
## 106   CBT  Postwt  93.4
## 107   CBT  Postwt  73.4
## 108   CBT  Postwt  82.1
## 109   CBT  Postwt  96.7
## 110   CBT  Postwt  95.3
## 111   CBT  Postwt  82.4
## 112   CBT  Postwt  72.5
## 113   CBT  Postwt  90.9
## 114   CBT  Postwt  71.3
## 115   CBT  Postwt  85.4
## 116   CBT  Postwt  81.6
## 117   CBT  Postwt  89.1
## 118   CBT  Postwt  83.9
## 119   CBT  Postwt  82.7
## 120   CBT  Postwt  75.7
## 121   CBT  Postwt  82.6
## 122   CBT  Postwt 100.4
## 123   CBT  Postwt  85.2
## 124   CBT  Postwt  83.6
## 125   CBT  Postwt  84.6
## 126   CBT  Postwt  96.2
## 127   CBT  Postwt  86.7
## 128    FT  Postwt  95.2
## 129    FT  Postwt  94.3
## 130    FT  Postwt  91.5
## 131    FT  Postwt  91.9
## 132    FT  Postwt 100.3
## 133    FT  Postwt  76.7
## 134    FT  Postwt  76.8
## 135    FT  Postwt 101.6
## 136    FT  Postwt  94.9
## 137    FT  Postwt  75.2
## 138    FT  Postwt  77.8
## 139    FT  Postwt  95.5
## 140    FT  Postwt  90.7
## 141    FT  Postwt  92.5
## 142    FT  Postwt  93.8
## 143    FT  Postwt  91.7
## 144    FT  Postwt  98.0
a %>%
ggplot(mapping = aes (x = Treat, y = Peso))+
  geom_boxplot(aes(fill = Periodo), outlier.stroke = ) +
  geom_jitter(aes(col = Peso), size =1, width = 0.5)

# 3) Crie um histograma para cada amostra e plote a normal correspondente para comparação
# 4)Crie gráficos quantil-quantil, comparando cada amostra com a normal
par(mfrow =c(2,2))
hist(anorexia$Prewt, probability = T)
curve(dnorm(x, sd = sd(anorexia$Prewt), mean = mean(anorexia$Prewt)), add = T)
qqnorm (anorexia$Prewt)
qqline(anorexia$Prewt)

hist(anorexia$Postwt, probability = T)
curve(dnorm(x, sd = sd(anorexia$Postwt), mean = mean(anorexia$Postwt)), add = T)
qqnorm(anorexia$Postwt)
qqline(anorexia$Postwt)

# 5) Crie gráficos quantil-quantil, comparando cada amostra com a normal
shapiro.test(anorexia$Prewt)
## 
##  Shapiro-Wilk normality test
## 
## data:  anorexia$Prewt
## W = 0.99248, p-value = 0.9484
shapiro.test(anorexia$Postwt)
## 
##  Shapiro-Wilk normality test
## 
## data:  anorexia$Postwt
## W = 0.9673, p-value = 0.05781
#6)Faça teste de variância entre as amostras
var.test(anorexia$Prewt, anorexia$Postwt)
## 
##  F test to compare two variances
## 
## data:  anorexia$Prewt and anorexia$Postwt
## F = 0.41599, num df = 71, denom df = 71, p-value = 0.000288
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.2602635 0.6648930
## sample estimates:
## ratio of variances 
##          0.4159896
#7)Verifique se as amostras diferem significativamente
t.test(anorexia$Prewt, anorexia$Postwt, paired = T)
## 
##  Paired t-test
## 
## data:  anorexia$Prewt and anorexia$Postwt
## t = -2.9376, df = 71, p-value = 0.004458
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -4.6399424 -0.8878354
## sample estimates:
## mean difference 
##       -2.763889

4 Aula 06

4.1 Qui-Quadrado - χ²

  • Utilizado em Dados categóricos
  • Avalia a diferença das frequências observadas x esperadas e o quão provável que sejam secundária ao acaso
  • Graus de liberdade (GL): Número de variaves (N) -1
  • Quanto maior o GL, mais aparenta ser normal
par(mfrow = c(1,1))
x = seq(0,25, by = 0.1)
plot(x, dchisq(x, 1), type = "l", ylim = c(0,0.4))
for (i in 2:6) {
      curve(dchisq(x,i), from = 0, to=25, add = T, col = i)
}

par(mfrow = c(1,1))
x = seq(0,25, by = 0.1)
y = dchisq(x,5)
plot(x,y,type = "l")
abline(v = qchisq(0.95,5), col="red")
abline(v=15.14)

4.2 Limitações de chi-quadrado

  • Altamente sensivel a pequenas e grandes amostras

4.3 TIPOS

4.3.1 Teste de Aderência: frequencia sobre uma frequencia teórica conhecida

Os dados são classificados em tabelas simples de uma entrada apenas * gl = no de categorias -1 Exemplo - Você joga um dado 600 vezes e os valores obtidos foram de acordo com a tabela abaixo. Com uma certeza de 95%, o que vc conclui sobre o dado:

dado = c(115,120,82,86,112,85)
chisq.test(dado)
## 
##  Chi-squared test for given probabilities
## 
## data:  dado
## X-squared = 15.14, df = 5, p-value = 0.009781
qchisq(0.95, 2)
## [1] 5.991465
par(mfrow = c(1,1))
x = seq(0,25, by = 0.1)
y = dchisq(x,5)
plot(x,y,type = "l")
abline(v = qchisq(0.95,5), col="red")
abline(v=15.14)

# b) Teste de comparação entre populações: Compara 2+ populações # c) Teste de associação: testar correlação entre variaveis categóriccas

#exercicio t = read.delim(“genotipo.txt”, sep = “, stringsAsFactors = T) t\(genotype=NA t\)genotype[t\(genotipo == 11] = "Wt/Wt" t\)genotype[t\(genotipo == 12] = "Alt/Wt" t\)genotype[t$genotipo == 22] =”Alt/Alt”

tab = xtabs(~pop + genotype, t) tab mosaicplot(tab, color = 1:3) chisq.test(tab)

p = data.frame(sucesso = c(rep(1,3), rep(0,32), rep(1,15), rep(0,50))

4.4 Stage vs N

x <- seq(0, 20, by = 0.1) # Define a range of x values plot(x, dchisq(x, df = 1), type = “l”, ylim = c(0, 0.5), ylab = “Density”, xlab = “x”, main = “Chi-Squared Distribution with df = 1 to 6”) for (df in 2:6) { lines(x, dchisq(x, df = df), col = df) } legend(“topright”, legend = paste(“df =”, 1:6), col = 1:6, lty = 1)

4.5 Comandos uteis

ifelse(ex1>4, yes = "M", no = "F") # Teste condicional para categorizar valores
## [1] "F" "F" "F" "F"
t.test(anorexia$Prewt, anorexia$Postwt, paired = T)
## 
##  Paired t-test
## 
## data:  anorexia$Prewt and anorexia$Postwt
## t = -2.9376, df = 71, p-value = 0.004458
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -4.6399424 -0.8878354
## sample estimates:
## mean difference 
##       -2.763889

5 Aula 07 - Correlação e regressão

5.1 Correlação

Avalia se existe associação entre duas variáveis quantitativas

###Coeficiente de Pearson * Valor numérico, e portanto, comparável * Adimensional (Como não tem unidades, pode fazer comparação entre si - mesmo que os objetos estudados sejam incomparaveis) * Varia de +1 a -1

5.1.0.1 Níveis de Correlação

  • 0 Nula
  • 0 —- 0.3 Fraca
  • 0.3 |- 0.6 Regular
  • 0.6 |- 0.9 Forte
  • 0.9 |- 1 Muito forte
  • 1 Plena ou perfeita

5.1.0.2 Requisitos

  • Exige distribuição normal das x e y
  • Homocedasticidade

5.1.0.3 Teste de hipótese

H₀: Não existe correlação entre as amostras (r =0) Não significante -> Não é possivel afirmar que apresenta correlação (mesmo que tenha níveis altos)

Spearman * Não exige distribuição Normal ##