R para análise de dados em Psicologia

Uma Introdução - Encontro 1

Francisco Pablo Huascar Aragão Pinheiro

Quem sou eu

  • Psicólogo
  • Doutor em educação
  • Professor do campus Sobral da UFC
  • Recentemente, um entusiasta do R

Por que usar o R?

  • Gratuito
  • Pesquisa reprodutível (para outros cientistas e o seu eu do futuro)
  • Flexível
  • Milhares de funções para todo tipo de análise
    • Novos funções são desenvolvidas o tempo todo ao redor do mundo

O que eu preciso saber para participar desse minicurso?

  • Criar e navegar entre pastas
  • Abrir arquivos
  • Criar arquivos etc.

Estatística

  • Medidas de tendência central e dispersão
  • Anova e Teste T
  • Correlação
  • Regressão

Eu tenho que aprender uma linguagem de programação para usar o R?

Sim, mas é como aprender um novo idioma: há desconforto inicial, mas, com a prática, é possível se tornar fluente!

R

R Studio

Vamos começar!

Criação de um projeto - Passo 1

Criação de um projeto - Passo 2

Criação de um projeto - Passo 3

Criação de um projeto - Passo 4

  • É muito importante que todos os arquivos do projeto fiquem dentro de uma mesma pasta
  • A pasta “raiz” não pode conter caracteres especiais
  • Dica: crie seus projetos dentro da pasta “documentos” do Windows (ou em uma subpasta “projetos” dentro da pasta “documentos”)

E você vai chegar aqui

Criando o seu primeiro Script

Paineis do R Studio

Ajuste dos paineis

Source Code

É onde o código é escrito. Vários tipos de arquivos podem ser utilizados: Scripts, Rmarkdown etc.

Console

Mostra a saída do que é feito no source code. Também pode ser usado para escrever códigos, mas não é possível salvá-los

Environment/History

No environment estão os diversos objetos que são criados pelo código: vetores, dataframes (bancos de dados), tibbles etc.

File/Plots/Packages/Help

Neste painel são mostrados os arquivos do projeto, os gráficos produzidos, a ajuda e informações sobre os pacotes (instalar, ativar, desativar etc).

File/Plots/Packages/Help

Cheat Sheets

R for Data Science

Livro base para o mini curso

Capa do livro R for Data Science. Uma coruja se destaca na ilustração

R for Data Science

  • Neste link você pode acessar a primeira edição do livro:

https://r4ds.had.co.nz/

  • E aqui você pode acessar a segunda edição que ainda está sendo finalizada:

https://r4ds.hadley.nz/

3 Fluxo de trabalho: básico

3.1 Noções básicas de codificação

Execução de códigos no Script

  • Atalho de de teclado: ctrl + enter

Cálculos matemáticos básicos

10+10
[1] 20
10/2
[1] 5
10*2+5
[1] 25
10-3
[1] 7
10^2
[1] 100
sqrt(100)
[1] 10

Exercícios

  • Divida 250 por 10
  • Eleve 11 ao quadrado
  • Multiplique 10 por 2 e some 5
  • Subtraia 10 de 20 e divida por 10
  • Some 40 e 50 e multiplique por 10

Respostas

250/10
[1] 25
11^2
[1] 121
10*2+5
[1] 25
(20-10)/10
[1] 1
(40+50)/10
[1] 9

Criação de objetos com o operador de atribuição <-

x <- 3
x
[1] 3
y <- 10*10
y
[1] 100
  • O valores de x ou y não são impressos; apenas armazenados.
  • Para visualizar o valor de um objeto, execute-o no script.

Todas as instruções de atribuição têm o mesmo formato

nome_do_objeto <- "valor"

nome_do_objeto
[1] "valor"
  • Ao ler esse código, diga: “o nome do objeto obtém valor”
  • Atalho de teclado do R Studio: Alt + “-” (sinal de menos)

Exercícios

Crie os seguintes objetos:

  • a com valor 2
  • b com valor 10
  • c com valor 5
  • d com valor 10*2

Respostas

a <- 2
a
[1] 2
b <- 10
b
[1] 10
c <- 5
c
[1] 5
d <- 10*2
d
[1] 20

As operações podem ser realizadas entre objetos

a*b
[1] 20
a+b
[1] 12
a/b
[1] 0.2
a-b
[1] -8

Exercícios

  • Divida c por d e some a
  • Some a e b e divida por c
  • Multiplique a por b e some d
  • Some c com d e divida por a

Respostas

(c/d) + a
[1] 2.25
(a+b)/c
[1] 2.4
(a*b)+d
[1] 40
(c+d)/a
[1] 12.5

Exercício desafio

Para encontrar as soluções para uma equação do formato \(ax^{2} + bx + c\), use a equação quadrática:

\(x = \frac{-b \pm \sqrt{(b^2-4ac)}}{2a}\).

Quais as duas soluções para \(2x^2-x-4=0\)?

Resposta

# Definindo os coeficientes da equação
a <- 2

b <- -1

c <- -4

# Calculando as soluções da equação
x1 <- (-b + sqrt(b^2 - 4*a*c)) / (2*a)

x2 <- (-b - sqrt(b^2 - 4*a*c)) / (2*a)

x1
[1] 1.686141
x2
[1] -1.186141

É possível combinar múltiplos elmentos em um vetor com c() - “concatenar”

z <- c(1,2,10,12)
z
[1]  1  2 10 12
w <- c(3,5,6,8)
w
[1] 3 5 6 8

Aritimética básica nos vetores é aplicada a cada elemento do vetor

z
[1]  1  2 10 12
z*2
[1]  2  4 20 24
w
[1] 3 5 6 8
w*3
[1]  9 15 18 24

Também é possível realizar operações com vetores

z+w
[1]  4  7 16 20
z-w
[1] -2 -3  4  4
z-w^2
[1]  -8 -23 -26 -52

Exercícios

  • Crie os vetores z <- c(1,2,10,12) e w <- c(3,5,6,8)
  • Eleve z ao quadrado
  • Some 10 a w
  • Divida z por 3
  • Multiplique z e w
  • Divida z por w

Respostas

z <- c(1,2,10,12)
z
[1]  1  2 10 12
w <- c(3,5,6,8)
w
[1] 3 5 6 8
z^2
[1]   1   4 100 144
w+10
[1] 13 15 16 18
z/3
[1] 0.3333333 0.6666667 3.3333333 4.0000000
z+w
[1]  4  7 16 20
z/w
[1] 0.3333333 0.4000000 1.6666667 1.5000000

Exercícios

  • Crie o objeto peso com os seguintes valores: 80.2, 56.3, 70.5 e 60.3
  • Crie o objeto altura com os seguintes valores: 1.75, 1.60, 1.65 e 1.72
  • Assuma que os valores acima estão, respectivamente, em quilogramas e em metros
  • Sabendo que o Índice de Massa Corpórea (IMC) é obtido dividindo o peso (em kg) pela altura (em metros) ao quadrado, crie um objeto imc com os valores do IMC de cada caso.

Respostas

peso <- c(80.2, 56.3, 70.5,  60.3)
peso
[1] 80.2 56.3 70.5 60.3
altura <- c(1.75, 1.60, 1.65, 1.72)
altura
[1] 1.75 1.60 1.65 1.72
imc <- peso/altura^2
imc
[1] 26.18776 21.99219 25.89532 20.38264

Dica 1

  • O R diferencia MAIÚSCULAS de minúsculas (case sensitive)
a <- letters

A
Error: object 'A' not found
a <- letters

a
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
[20] "t" "u" "v" "w" "x" "y" "z"

Dica 2

  • Cuidado com erros de digitação
data("cars")

carz
Error: object 'carz' not found

Cars

data("cars")

cars 
   speed dist
1      4    2
2      4   10
3      7    4
4      7   22
5      8   16
6      9   10
7     10   18
8     10   26
9     10   34
10    11   17
11    11   28
12    12   14
13    12   20
14    12   24
15    12   28
16    13   26
17    13   34
18    13   34
19    13   46
20    14   26
21    14   36
22    14   60
23    14   80
24    15   20
25    15   26
26    15   54
27    16   32
28    16   40
29    17   32
30    17   40
31    17   50
32    18   42
33    18   56
34    18   76
35    18   84
36    19   36
37    19   46
38    19   68
39    20   32
40    20   48
41    20   52
42    20   56
43    20   64
44    22   66
45    23   54
46    24   70
47    24   92
48    24   93
49    24  120
50    25   85

3.2 Comentários

R irá ignorar qualquer texto após # para essa linha.

# Criação de um vetor com os 5 primeiros números pares

pares <- c(2,4,6,8,10)

pares
[1]  2  4  6  8 10
# Elevando os pares ao quadrado

(pares)^2
[1]   4  16  36  64 100

Uso dos comentários: Demarcar seções do no código

# Obtenção dos dados

penguins <- penguins

# Gráficos

penguins |> 
  filter(!is.na(sex)) |> 
  ggplot(aes(flipper_length_mm, 
             bill_length_mm, 
             color = sex,
             size = body_mass_g)) +
  geom_point(alpha = 0.5) +
  facet_wrap(~species) 

Outro uso dos comentários: explicações

  • Use comentários para explicar o porquê do seu código, não o como ou o quê
  • O que e como do seu código são sempre possíveis de descobrir
  • Descobrir por que algo foi feito é muito mais difícil

Sem explicações para a equipe

penguins |> 
  filter(island == "Biscoe",
         !is.na(sex)) |>
  ggplot(aes(flipper_length_mm, 
             bill_length_mm, 
             color = sex, size = 
               body_mass_g)) +
  geom_point(alpha = 0.5) +
  facet_wrap(~species)

Sem explicações para a equipe

Com explicações para a equipe

# O relatório 3 só precisava dos 
#dados da ilha Biscoe
penguins |> 
  filter(island == "Biscoe",
         !is.na(sex)) |>
  ggplot(aes(flipper_length_mm, 
             bill_length_mm, color = 
               sex, 
             size = body_mass_g)) +
  geom_point(alpha = 0.5) +
  facet_wrap(~species)

Com explicações para a equipe

3.3 O que é um nome?

  • Os nomes dos objetos devem começar com uma letra
  • Podem conter apenas letras, números, _ e .
  • Os nomes de seus objetos devem ser descritivos
  • Sugerimos a seguinte convenção:
    • letras_minúsculas_separadas_com _

Exemplos de nomes

  • i_use_snake_case
  • otherPeopleUseCamelCase
  • some.people.use.periods
  • And_aFew.People_RENOUNCEconvention

Dica: auto completar

  • Digite ao menos 3 caracteres e use a tecla tab
  • O R Studio vai dar opções para escolher
  • A função de auto completar é nossa amiga: use sempre!

3.4 Usando Funções

O R possui uma grande coleção de funções integradas que são chamadas desta maneira:

nome_da_funcao(argumento1 = valor1, argumento2 = valor2, ...)

Ao pressionar Tab dentro dos parênteses o R irá mostrar os argumentos disponíveis

Exemplo: Função seq()

Os dois primeiros argumentos da função seq são: from e to

# Crie uma sequência de números de 1 a 10
seq(from=1, to=10)
 [1]  1  2  3  4  5  6  7  8  9 10

Terceiro argumento: by

# Agora, o incremento da sequência é por 2
seq(from=1, to=10, by = 2)
[1] 1 3 5 7 9

Se os valores dos argumentos estiverem na ordem da função, é possível omití-los

seq(1,10,2)
[1] 1 3 5 7 9

Exemplo: Função seq()

Ao explicitar os argumentos, eles podem aparecer em qualquer ordem:

seq(by=2,to=10,from=1)
[1] 1 3 5 7 9

Porém, não será obitdo o mesmo resultado mudando os valores de lugar sem a explicitação dos argumentos

seq(2,10,1)
[1]  2  3  4  5  6  7  8  9 10

Como saber os argumentos e a função das funções?

?nome_da_funcao

help(nome_da_funcao)

args(nome_da_funcao)

Help

?seq

args()

args(rnorm)
function (n, mean = 0, sd = 1) 
NULL

Exercícios

  • A partir da ajuda, descubra para que servem as funções a seguir e tente utilizá-las:
    • ls
    • round
    • rnorm

Funções básicas importantes

z <- c(2,2,6,11,9,20)
sum(z)
[1] 50
mean(z)
[1] 8.333333
median(z)
[1] 7.5

Funções básicas importantes

f <- c(2,2,6,11,9,20)
range(f)
[1]  2 20
min(f)
[1] 2
max(f)
[1] 20
quantile(f)
  0%  25%  50%  75% 100% 
 2.0  3.0  7.5 10.5 20.0 

Exercícios

  • Use a função rnorm e crie um objeto chamado mil com mil casos com média 30 e desvio padrão 4
  • Calcule as seguintes estatísticas do objeto mil:
    • Soma
    • Média
    • Desvio padrão
    • Mediana
    • Mínimo
    • Máximo
    • Quartis

Resposta

mil <- rnorm(n = 100, mean = 30, sd = 4)

sum(mil)
[1] 2972.341
mean(mil)
[1] 29.72341
sd(mil)
[1] 3.858418
median(mil)
[1] 29.80381
min(mil)
[1] 19.60692
max(mil)
[1] 38.78129
quantile(mil)
      0%      25%      50%      75%     100% 
19.60692 27.28170 29.80381 32.13637 38.78129 

Compartilhar conhecimento sempre!

O código e as imagens utilizados para a construção desse slide estão disponíveis no link a seguir:

https://github.com/pablo-huascar/curso_r