Laboratório de Econometria


Lab. 1 - Comandos básicos no R

Lab. 1

Antonio Vinícius Barbosa

19-08-2024


IDE

RStudio

O ambiente de desenvolvimento integrado (IDE) RStudio:

VSCode

O ambiente de desenvolvimento integrado (IDE) Positron:

Positron

O ambiente de desenvolvimento integrado (IDE) VSCode:

Como o R funciona?

R Básico

A forma mais simples de se utilizar o R é através de operações básicas:

2 + 2
## [1] 4
sqrt(81)
## [1] 9
pi
## [1] 3.141593
print("Olá, mundo!")
## [1] "Olá, mundo!"

Neste caso, o R executa a operação e retorna seu valor na tela.

Operações básicas

# Adicao
23 + 4
## [1] 27

# Subtracao
13 - 5
## [1] 8

# Multiplicao
9 * 7
## [1] 63

# Divisao
64/16
## [1] 4

# Exponeciacao
2^5
## [1] 32

# Raiz quadrada
sqrt(16)
## [1] 4

# Arredondar
round(pi, 2)
## [1] 3.14

# Logaritmo (base e)
log(10)
## [1] 2.302585

# Logaritmo (outras bases)
log(10, 10)
## [1] 1

O símbolo # é utilizado para adicionar comentários ao código.

Salvando valores em objetos

  • Uma atribuição salva o valor em um objeto (ou variável).
  • É, normalmente, feito através do operador especial <-
  • Além do operador <-, atribuições podem ser feitas através =
# Lados do triângulo 
a <- 3
b <- 4
# Obter o tamanho da hipotenusa
h = sqrt(a^2 + b^2)
h
## [1] 5

Gerenciando objetos

Para listar todos os objetos armazenados na memória, basta utilizar a função ls()

# Criar objetos
p <- pi
e <- exp(1)
r <- sqrt(2)

# Listar objetos
ls()
## [1] "e" "p" "r"

Para excluir ou remover um objeto, utilizamos a função rm()

rm(e)
ls()
## [1] "p" "r"

Quizz #1

  • Crie a variável renda_dom para armazenar o valor da renda total aproximada do seu domicílio.
  • Agora, atribua à variável n_pessoas o número de pessoas que moram no seu domicílio.
  • Calcule a renda domiciliar per capita e atribua à variável renda_pc.
03:00

Pacotes

Pacotes no R

Um pacote é um conjunto de funções que servem para uma dada finalidade. Cada pacote possui uma documentação própria explicando sua funcionalidade e exemplos de uso.

Pacotes no R

Para instalar um pacote específico no R, fazemos:

# Pacotes do repositorio oficial (CRAN)
install.packages("dplyr")
install.packages("remotes")

# Pacotes externos
remotes::install_github("https://github.com/ccolonescu/PoEdata")

Uma vez instalado, não é necessário reinstalar a cada uso. No entanto, para utilizar as funcionalidades de um pacote é necessário carregá-lo sempre que a sessão for iniciada:

library(PoEdata)
library(dplyr)

Vetores

Criando vetores

A construção de vetores (conjunto de valores) é feito através do operador c():

# Características dos participantes
idade <- c(19, 21, 23, 24, 25, 31, 33)
idade
## [1] 19 21 23 24 25 31 33

sexo <- c("M", "M", "F", "F", "M", "F", "M")
sexo
## [1] "M" "M" "F" "F" "M" "F" "M"

aluno_econ <- c(TRUE, FALSE, FALSE, TRUE, TRUE, T, F)
aluno_econ
## [1]  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE

cra <- c(8.26, 7.18, 8.02, 7.33, 6.79, 9.45, 7.65)
cra
## [1] 8.26 7.18 8.02 7.33 6.79 9.45 7.65

Classes

Para determinar a classe de um vetor, utilizamos a função class()

class(idade)
## [1] "numeric"
class(sexo)
## [1] "character"
class(aluno_econ)
## [1] "logical"
class(cra)
## [1] "numeric"

As classes definem a forma de armazenamento na memória. Por exemplo, um vetor de números inteiros requer menos espaço de armazenamento do que os vetores numéricos.

Operação com vetores

Considere o vetor cra. Podemos fazer algumas operações básicas, tais como:

# Vetor 
cra <- c(8.26, 7.18, 8.02, 7.33, 6.79, 9.45, 7.65)

# Média de cra
mean(cra)
## [1] 7.811429

# Variância 
var(cra)
## [1] 0.771581

Operação com vetores

A função summary() apresenta um conjunto de estatísticas básicas sobre um vetor:

summary(cra)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   6.790   7.255   7.650   7.811   8.140   9.450

Para obter o tamanho de um vetor, utilizamos a função length():

length(cra)
## [1] 7

Operação com vetores

Outras operações com vetores:

# Valor mínimo  
min(cra) 
## [1] 6.79

# Valor máximo
max(cra)
## [1] 9.45

# Soma dos elementos 
sum(cra)
## [1] 54.68

# Soma acumulada dos elementos 
cumsum(cra)
## [1]  8.26 15.44 23.46 30.79 37.58 47.03 54.68

# Multiplicação por um escalar
2 * cra
## [1] 16.52 14.36 16.04 14.66 13.58 18.90 15.30

Operação com vetores

Outras operações básicas com vetores:

# Operações entre vetores 
a <- c(1, 2, 3, 4)
b <- c(4, 3, 2, 1)

a + b
## [1] 5 5 5 5

a - b
## [1] -3 -1  1  3

a * b
## [1] 4 6 6 4

Operação com vetores

Algumas destas operações não funcionam quando existem elementos faltantes (representados por NA)

valores_na <- c(21, 34, NA, 17, 25)
mean(valores_na)
## [1] NA
sd(valores_na)
## [1] NA

Neste caso, devemos remover os dados faltantes da seguinte forma:

mean(valores_na, na.rm = TRUE)
## [1] 24.25
sd(valores_na, na.rm = T)
## [1] 7.274384

Selecionando elementos no vetor

Para selecionar um ou mais elementos de um vetor, utilizamos o operador [ ]

# Vetor com informacoes de receita (em mil reais)
receita <- c(43.9, 45.4, 48.2, 51.8, 56.5)

# Selecionar o primeiro elemento
receita[1]
## [1] 43.9

# Selecionar uma sequência de elementos
receita[3:5]
## [1] 48.2 51.8 56.5

No R, o indexador dos elementos começa em 1.

Sequências

O R possui algumas funcionalidades para gerar sequências numéricas:

# Sequencias
1:7
## [1] 1 2 3 4 5 6 7

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

letters[1:8] 
## [1] "a" "b" "c" "d" "e" "f" "g" "h"

rep(2, times = 5)
## [1] 2 2 2 2 2

rep(c(6, 7), each = 3)
## [1] 6 6 6 7 7 7

Operações lógicas

O R possui dois valores lógicos, TRUE e FALSE. Os operadores de comparação entre dois objetos são:

  • ==   igual
  • !=   diferente
  • <   menor que
  • >   maior que
  • <=   menor ou igual que
  • >=   maior ou igual que

Operações lógicas

# Operacoes logicas
4 >= 3
## [1] TRUE

"a" == "A"
## [1] FALSE

c(12, 4) != c(12, 5)
## [1] FALSE  TRUE

4 < pi
## [1] FALSE

Matrizes

Matrizes

Uma matriz é simplesmente uma estruturação de vetores em linhas e colunas:

# Matrizes
mt_a <- matrix(data = c(2, 1, 7, 2), 
               nrow = 2, 
               ncol = 2)
mt_a
##      [,1] [,2]
## [1,]    2    7
## [2,]    1    2

mt_b <- matrix(1:6, 3, 2, byrow = TRUE)
mt_b
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6

Matrizes

Os elementos de uma matriz podem ser selecionado pelo operador [i,j], com i representando linhas e j representando colunas:

mt_a[1,2]
## [1] 7

mt_b[3,2]
## [1] 6

mt_a[1, ]
## [1] 2 7

mt_b[ ,2]
## [1] 2 4 6

Operações com matrizes

Podemos realizar operações básicas com matrizes

# Produto
mt_b %*%  mt_a
##      [,1] [,2]
## [1,]    4   11
## [2,]   10   29
## [3,]   16   47

# Determinante
det(mt_a)
## [1] -3

# Matriz inversa
solve(mt_a)
##            [,1]       [,2]
## [1,] -0.6666667  2.3333333
## [2,]  0.3333333 -0.6666667

Data frames

Data frames

Um data frame é uma das estruturas mais importantes para armazanamento de dados. Equivale, de certa forma, às planilhas eletrônicas com linhas e colunas.

  • Um data frame é um conjunto de vetores de mesmo tamanho;
  • Cada linha representa informações para uma única unidade de observação
  • Cada coluna representa uma característica observada das unidades;
  • Elementos da mesma coluna devem ser do mesma classe.

Data frames

É possível criar, carregar (dados dos pacotes) ou ler arquivos diretamente no R. Para criar um data frame, fazemos:

alunos_ufpb <- data.frame(
  aluno = c("José", "Maria", "Pedro", "Carla", "Isabel"),
  economia = c(1, 0, 0, 1, 1),
  periodo = c(3, 4, 7, 2, 3),
  cra = c(7.34, 8.45, 8.05, 7.98, 9.03)
  )

alunos_ufpb
##    aluno economia periodo  cra
## 1   José        1       3 7.34
## 2  Maria        0       4 8.45
## 3  Pedro        0       7 8.05
## 4  Carla        1       2 7.98
## 5 Isabel        1       3 9.03

Data frames

Para carregar dados dos pacotes, fazemos:

#install.packages("dados")
head(dados::dados_gapminder)
## # A tibble: 6 × 6
##   pais        continente   ano expectativa_de_vida populacao pib_per_capita
##   <fct>       <fct>      <int>               <dbl>     <int>          <dbl>
## 1 Afeganistão Ásia        1952                28.8   8425333           779.
## 2 Afeganistão Ásia        1957                30.3   9240934           821.
## 3 Afeganistão Ásia        1962                32.0  10267083           853.
## 4 Afeganistão Ásia        1967                34.0  11537966           836.
## 5 Afeganistão Ásia        1972                36.1  13079460           740.
## 6 Afeganistão Ásia        1977                38.4  14880372           786.

Data frames

Algumas características dos dados:

# Estrutura dos dados
str(dados::dados_gapminder)
## tibble [1,704 × 6] (S3: tbl_df/tbl/data.frame)
##  $ pais               : Factor w/ 142 levels "Afeganistão",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ continente         : Factor w/ 5 levels "África","Américas",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ ano                : int [1:1704] 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
##  $ expectativa_de_vida: num [1:1704] 28.8 30.3 32 34 36.1 ...
##  $ populacao          : int [1:1704] 8425333 9240934 10267083 11537966 13079460 14880372 12881816 13867957 16317921 22227415 ...
##  $ pib_per_capita     : num [1:1704] 779 821 853 836 740 ...

# Listar variaveis
names(dados::dados_gapminder)
## [1] "pais"                "continente"          "ano"                
## [4] "expectativa_de_vida" "populacao"           "pib_per_capita"