R

O R é um ambiente de programação para computação, estatística e análise gráfica. Seu código fonte é disponível sobre licença GPU-GPL, basicamente se configurando cujo código fonte é livre. Dentro das ciências sociais e biológicas têm sido das linguagens mais utilizadas (https://stackoverflow.blog/2017/10/10/impressive-growth-r/).

Outra vantagem é o uso de pacotes que permitem a inclusão de novas funções que permitem ao usuários a prática de diversas atividades comuns a análise de bancos de dados, ou ciência de dados, como: organização, limpeza, descrição, visualização, modelagem e comunicação.

Seu download pode ser realizado em: https://cran.r-project.org/mirrors.html

RStudio

O Rstudio é um software livre, assim como o R, e integrado a este. Funciona como uma máscara, oferecendo algumas vantagens que tornam o processo de programação mais eficiente e intuíto.

Seu download pode ser realizado em: https://www.rstudio.com/products/rstudio/download/

Criando nosso primeiro projeto

Uma vez realizado os downloads do R e RStudio, abriremos o último destes. Para criar nosso primeiro projeto devemos seguir o passo-a-passo abaixo:

A partir de agora, tudo o que trabalharemos ficará salvo nesta pasta de trabalho, facilitando assim a reprodutibilidade das análises e a visualização de materiais gerados durante o estudo.

As quatro telas:

As telas do RStudio são divididas em quatro:

  1. Para rodar uma linha de código, deve-se chegar ao seu final e apertar Crtl + Enter.

  2. Para adicionar uma anotação (que não é código, ou seja não gera resultado) deve-se usar a #.

É importante que tente comentar os seus códigos para garantir reprodutibilidade e, claro, para que não esqueça o que está fazendo em cada parte dele.
  1. No Files podendo observar quais arquivos estão dentro do projeto criado (como figuras, gráficos, textos, códigos e etc…).

  2. No Plots aparecerá os gráficos que fomos criando durante nossas aulas ou seus futuros projetos.

  3. Packages controla os pacotes que estão ativos no R, não o utilizaremos.

  4. O Help aparece os documentos relacionados a ajuda solicitada, para solicitar ajuda basta colocar no Console (3): ?“função desejada”, ou seja, se eu quiser ajuda sobre a média é só digitar no console: “?mean()”"

  5. Viewer: Usado para gráficos interativos.

Instalando e requisitando pacotes:

Nesta nossa primeira aula trabalharemos, principalmente, com dois pacotes:

Para instalar pacotes podemos utilizar os seguintes comandos:

install.packages("psych")
install.packages("tidyverse")

Não há necessidade de se reinstalar frequentemente os pacotes, ou seja, uma vez instalados, devemos apenas requisitá-los (geralmente se faz isto no ínicio do código). Para requistar um determinado pacote usamos os seguintes comandos:

require("psych")
require("tidyverse")

A requisição dos pacotes é mandatória em todos os códigos, caso não seja feito, geralmente, ao se rodar o código será observado uma mensagem que diz respeito a ausência da função utilizada.

Banco de dados

Utilizaremos para nossa aula 0 o banco de dados bfi que segundo o pacote psych diz respeito a: 25 personality self report items taken from the International Personality Item Pool (ipip.ori.org) were included as part of the Synthetic Aperture Personality Assessment (SAPA) web based personality assessment project. The data from 2800 subjects are included here as a demonstration set for scale construction, factor analysis, and Item Response Theory analysis. Three additional demographic variables (sex, education, and age) are also included.)

A primeira função que aprenderemos no R será: head(database,x). Esta função retorna as x primeiras linhas de cada coluna do nosso banco de dados.

head(bfi,5)
##       A1 A2 A3 A4 A5 C1 C2 C3 C4 C5 E1 E2 E3 E4 E5 N1 N2 N3 N4 N5 O1 O2 O3
## 61617  2  4  3  4  4  2  3  3  4  4  3  3  3  4  4  3  4  2  2  3  3  6  3
## 61618  2  4  5  2  5  5  4  4  3  4  1  1  6  4  3  3  3  3  5  5  4  2  4
## 61620  5  4  5  4  4  4  5  4  2  5  2  4  4  4  5  4  5  4  2  3  4  2  5
## 61621  4  4  6  5  5  4  4  3  5  5  5  3  4  4  4  2  5  2  4  1  3  3  4
## 61622  2  3  3  4  5  4  4  5  3  2  2  2  5  4  5  2  3  4  4  3  3  3  4
##       O4 O5 gender education age
## 61617  4  3      1        NA  16
## 61618  3  3      2        NA  18
## 61620  5  2      2        NA  17
## 61621  3  5      2        NA  17
## 61622  3  3      1        NA  17

É importante observamos também que alguns bancos de dados, como este em questão, possuem um dicionário que descreve as variáveis utilizadas e seu significado. É muito importante que em pesquisas reais se disponibilize este dicionário afim de facilitar a reprodutibilidade.

bfi.dictionary
##           ItemLabel                                       Item     Giant3
## A1            q_146  Am indifferent to the feelings of others.   Cohesion
## A2           q_1162          Inquire about others' well-being.   Cohesion
## A3           q_1206                Know how to comfort others.   Cohesion
## A4           q_1364                             Love children.   Cohesion
## A5           q_1419                  Make people feel at ease.   Cohesion
## C1            q_124                    Am exacting in my work.  Stability
## C2            q_530      Continue until everything is perfect.  Stability
## C3            q_619             Do things according to a plan.  Stability
## C4            q_626            Do things in a half-way manner.  Stability
## C5           q_1949                             Waste my time.  Stability
## E1            q_712                          Don't talk a lot. Plasticity
## E2            q_901      Find it difficult to approach others. Plasticity
## E3           q_1205              Know how to captivate people. Plasticity
## E4           q_1410                       Make friends easily. Plasticity
## E5           q_1768                               Take charge. Plasticity
## N1            q_952                          Get angry easily.  Stability
## N2            q_974                      Get irritated easily.  Stability
## N3           q_1099                 Have frequent mood swings.  Stability
## N4           q_1479                           Often feel blue.  Stability
## N5           q_1505                              Panic easily.  Stability
## O1            q_128                          Am full of ideas. Plasticity
## O2            q_316          Avoid difficult reading material. Plasticity
## O3            q_492  Carry the conversation to a higher level. Plasticity
## O4           q_1738           Spend time reflecting on things. Plasticity
## O5           q_1964      Will not probe deeply into a subject. Plasticity
## gender       gender                         males=1, females=2       <NA>
## education education in HS, fin HS, coll,  coll grad , grad deg       <NA>
## age             age                               age in years       <NA>
##                          Big6        Little12 Keying IPIP100
## A1              Agreeableness      Compassion     -1    B5:A
## A2              Agreeableness      Compassion      1    B5:A
## A3              Agreeableness      Compassion      1    B5:A
## A4              Agreeableness      Compassion      1    B5:A
## A5              Agreeableness      Compassion      1    B5:A
## C1          Conscientiousness     Orderliness      1    B5:C
## C2          Conscientiousness     Orderliness      1    B5:C
## C3          Conscientiousness     Orderliness      1    B5:C
## C4          Conscientiousness Industriousness     -1    B5:C
## C5          Conscientiousness Industriousness     -1    B5:C
## E1               Extraversion     Sociability     -1    B5:E
## E2               Extraversion     Sociability     -1    B5:E
## E3               Extraversion   Assertiveness      1    B5:E
## E4               Extraversion     Sociability      1    B5:E
## E5               Extraversion   Assertiveness      1    B5:E
## N1        Emotional Stability         Balance     -1    B5:N
## N2        Emotional Stability         Balance     -1    B5:N
## N3        Emotional Stability         Balance     -1    B5:N
## N4        Emotional Stability         Balance     -1    B5:N
## N5        Emotional Stability         Balance     -1    B5:N
## O1                   Openness       Intellect      1    B5:O
## O2                   Openness       Intellect     -1    B5:O
## O3                   Openness       Intellect      1    B5:O
## O4                   Openness        Openness      1    B5:O
## O5                   Openness        Openness     -1    B5:O
## gender                   <NA>            <NA>     NA    <NA>
## education                <NA>            <NA>     NA    <NA>
## age                      <NA>            <NA>     NA    <NA>

Algumas operações no banco de dados

Introduziremos, a partir de agora, alguns dos verbos do pacote dplyr que está contido no tidyverse. o Dplyr é focado na limpeza e organização dos dados, para isto, este pacote conta com funções que tem uma equivalência verbal muito interessante. Porém, antes disto, veremoso pipe.

O pipe nos acompanhará durante esta jornada e dificilmente não será utilizado em qualquer uma das aulas. O pipe é a seguinte função: %>% e significa: “e então…” ou “depois disto…”, é um sequenciador de funções.

Um bom exemplo de esclarecimento sobre o uso do pipe pode ser uma transcrição da receita de um bolo:

Atividade 1 : Escrever uma atividade do dia-a-dia utilizando o operador *pipe*.

Selecionando variáveis

Primeiramente, iremos salvar bfi em um banco de dados (objeto) chamado: data. Observe que o “<-” corresponde a dizer de uma forma bem introdutória: “é igual”

data <- bfi

Uma vez indexado nosso banco de dados, vamos aprender nossa primeira função do dplyr: select(). A função select tem como objetivo selecionar colunas de um determinado banco de dados. É utilizada quando queremos trabalhar com apenas algumas das variáveis.

data <- bfi %>%  # Data passa a ser bfi e então...
  select(A1,A2,A3,A4,A5, gender, age) # e então selecione estas variáveis relacionadas a coesão (?)


glimpse(data)
## Observations: 2,800
## Variables: 7
## $ A1     <int> 2, 2, 5, 4, 2, 6, 2, 4, 4, 2, 4, 2, 5, 5, 4, 4, 4, 5, 4...
## $ A2     <int> 4, 4, 4, 4, 3, 6, 5, 3, 3, 5, 4, 5, 5, 5, 5, 3, 6, 5, 4...
## $ A3     <int> 3, 5, 5, 6, 3, 5, 5, 1, 6, 6, 5, 5, 5, 5, 2, 6, 6, 5, 5...
## $ A4     <int> 4, 2, 4, 5, 4, 6, 3, 5, 3, 6, 6, 5, 6, 6, 2, 6, 2, 4, 4...
## $ A5     <int> 4, 5, 4, 5, 5, 5, 5, 1, 3, 5, 5, 5, 4, 6, 1, 3, 5, 5, 3...
## $ gender <int> 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2...
## $ age    <int> 16, 18, 17, 17, 17, 21, 18, 19, 19, 17, 21, 16, 16, 16,...

Retornando médias

Nossa segunda função é summarise ou sumarizar ou reduzir os dados seguindo uma determinada função. Queremos, então, reduzir as observações das variáveis selecionadas acima a somente suas médias.

data <- bfi %>%  # Data passa a ser bfi e então...
  select(A1,A2,A3,A4,A5, gender, age) %>%  # e então selecione estas variáveis relacionadas a coesão (?)  e então
  na.omit() %>% # retire todos os valores faltantes e então
  summarise_all(mean) # retorne todas as médias (summarise_all)


data
##         A1       A2       A3       A4       A5   gender      age
## 1 2.412329 4.797342 4.599114 4.682171 4.551126 1.669251 28.73902

Olhando os resultados rapidamente percebemos que a média não agrega informação a cerca das variáveis, exceto para idade, não existe, por exemplo, uma média do sexo dos entrevistados e nem um significado para pontuações médias nos quisitos dos testes de personalidades. Para isto, a mediana faz muito mais sentido.

Mediana e Moda

Retornaremos, então, a mediana (medida central) dos resultados obtidos nos testes de personalidade:

data <- bfi %>%  # Data passa a ser bfi e então...
  select(A1,A2,A3,A4,A5) %>%  # e então selecione estas variáveis relacionadas a coesão (?)  e então
  na.omit() %>% # retire todos os valores faltantes e então
  summarise_all(median) # retorne todas (summarise_all) as medianas (median).


data # visualizando data
##   A1 A2 A3 A4 A5
## 1  2  5  5  5  5
Atividade 2: Criar um objeto que armazene o dicionário (bfi.dictionary) e interpretar o resultado acima.

Agrupando os dados

Antes do desafio final, aprenderemos nossa última função: group_by. Por exemplo, se desejassemos saber quais são os resultados medianos para os homens e mulheres, precisariamos os agrupar em distintos grupos e obter dois resultados de medianas.

data <- bfi %>%  # Data passa a ser bfi e então...
  select(A1,A2,A3,A4,A5, gender, age) %>%  # e então selecione estas variáveis relacionadas a coesão (?)  e então
  na.omit() %>% # retire todos os valores faltantes e então
  group_by(gender) %>%  #Agrupando pelo sexo
  summarise_all(median) # retorne todas (summarise_all) as medianas (median).


data # visualizando data
## # A tibble: 2 x 7
##   gender    A1    A2    A3    A4    A5   age
##    <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1      1     2     5     5     5     5    25
## 2      2     2     5     5     5     5    26
Atividade 3: Reflita sobre os resultados obtidos
Atividade 4: Escolhendo outra categória C,E,N,O, quais os resultados serião obtidos? Reproduza os códigos para algum destas categórias, bem como, realize sua interpretação.

Desafio Final

Na figura abaixo temos a quantidade de vezes que Harry, Hermione e Ron são citados em duplas durante os livros da franquia Harry Potter. Usar a média para inferir qual a dupla que, realmente, é inseparável é adequado? Justifique sua resposta.

Resumos da semana:

* https://stackoverflow.blog/2017/10/10/impressive-growth-r/

* https://www.psychologicalscience.org/observer/why-you-should-become-a-user-a-brief-introduction-to-r#.WP4NTlLMzrI