alt text

GET00130 - Métodos Computacionais para Estatística II

Jony Arrais Pinto Junior

Conteúdo da aula

  • Revisando importação/exportação de arquivos;
  • Revisando manipulação de base de dados;
  • Revisando como combinar base de dados.

1 - Revisando conceitos estudados nos tópicos de 1 a 3

Suponha que possuímos uma amostra com dados referentes a vendas de produtos em lojas espalhadas por diversas cidades brasileiras.

Na base Vendas.txt possuímos dados do número de um conjunto de produtos vendidos nos meses de Janeiro a Junho, do número de funcionários, da cidade na qual a loja está localizada e se a loja participou de uma campanha publicitária para esses produtos. Todas as informações estão disponíveis para os anos de 2019 e 2020. Foi usado a codificação 999 para indicar valores faltantes. Na importação da base, trate a variável cod_loja como um character. Caso o número de funcionários seja 0, considere essa informação como NA.

Atividade: Importe o arquivo Vendas.txt de modo que o objeto criado seja um tibble. Armazene em um objeto chamado base_com

#Visualizando o objeto base_geral
base_com
# A tibble: 400 x 12
   cod_loja cidade        campanha   ano venda_JAN venda_FEV venda_MAR venda_ABR
   <chr>    <chr>            <dbl> <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
 1 5654     Niterói              0  2019        73        96        48        59
 2 5654     Niterói              1  2020        76       103        56        61
 3 23029    Belo Horizon…        0  2019        78       104        58        61
 4 23029    Belo Horizon…        1  2020        79       104        59        62
 5 26994    São Gonçalo          0  2019        79       107        61        62
 6 26994    São Gonçalo          0  2020        80       107        63        62
 7 23507    São Gonçalo          1  2019        80       109        63        64
 8 23507    São Gonçalo          0  2020        82       110        63        64
 9 38465    Cabo Frio            1  2019        82       111        64        64
10 38465    Cabo Frio            0  2020        83       113        64        65
# … with 390 more rows, and 4 more variables: venda_MAI <dbl>, venda_JUN <dbl>,
#   funcionarios <dbl>, porc <dbl>

Fazendo o tratamento da base.

#transformando em factor as variáveis qualitativas
base_com$cidade = factor(base_com$cidade)
base_com$campanha = factor(base_com$campanha,
                       labels = c("Não","Sim"))

#transformando o 0 em NA na variável número de funcionários
base_com$funcionarios = na_if(base_com$funcionarios, 0)


#Visualizando os objetos
base_com
# A tibble: 400 x 12
   cod_loja cidade        campanha   ano venda_JAN venda_FEV venda_MAR venda_ABR
   <chr>    <fct>         <fct>    <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
 1 5654     Niterói       Não       2019        73        96        48        59
 2 5654     Niterói       Sim       2020        76       103        56        61
 3 23029    Belo Horizon… Não       2019        78       104        58        61
 4 23029    Belo Horizon… Sim       2020        79       104        59        62
 5 26994    São Gonçalo   Não       2019        79       107        61        62
 6 26994    São Gonçalo   Não       2020        80       107        63        62
 7 23507    São Gonçalo   Sim       2019        80       109        63        64
 8 23507    São Gonçalo   Não       2020        82       110        63        64
 9 38465    Cabo Frio     Sim       2019        82       111        64        64
10 38465    Cabo Frio     Não       2020        83       113        64        65
# … with 390 more rows, and 4 more variables: venda_MAI <dbl>, venda_JUN <dbl>,
#   funcionarios <dbl>, porc <dbl>

Suponha que queremos acrescentar na base completa a variável venda_trim_1, que representa a venda no 1o trimestre para cada loja. Como obtemos essa variável?

#Acrescentando a variavel na base
base_com = base_com |>
  mutate(venda_trim_1 = venda_JAN + venda_FEV + venda_MAR)

#Visualizando o objeto
base_com
# A tibble: 400 x 13
   cod_loja cidade        campanha   ano venda_JAN venda_FEV venda_MAR venda_ABR
   <chr>    <fct>         <fct>    <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
 1 5654     Niterói       Não       2019        73        96        48        59
 2 5654     Niterói       Sim       2020        76       103        56        61
 3 23029    Belo Horizon… Não       2019        78       104        58        61
 4 23029    Belo Horizon… Sim       2020        79       104        59        62
 5 26994    São Gonçalo   Não       2019        79       107        61        62
 6 26994    São Gonçalo   Não       2020        80       107        63        62
 7 23507    São Gonçalo   Sim       2019        80       109        63        64
 8 23507    São Gonçalo   Não       2020        82       110        63        64
 9 38465    Cabo Frio     Sim       2019        82       111        64        64
10 38465    Cabo Frio     Não       2020        83       113        64        65
# … with 390 more rows, and 5 more variables: venda_MAI <dbl>, venda_JUN <dbl>,
#   funcionarios <dbl>, porc <dbl>, venda_trim_1 <dbl>

Se desejamos exportar o arquivo com o menor tamanho possível, podemos usar a extensão prprópria do R.

#Acrescentando a variavel na base
write_rds(x = base_com,
          path = "base modificada.rds",
          compress = "gz")

Atividade: Crie um objeto chamado base2020 que contenha somente as informações do ano de 2020, contendo as variáveis código da loja, cidade, todas que iniciam com venda e a venda_1_sem.

#Visualizando o objeto
base2020
# A tibble: 200 x 10
   cod_loja venda_JAN venda_FEV venda_MAR venda_ABR venda_MAI venda_JUN
   <chr>        <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
 1 5654            76       103        56        61        45        78
 2 23029           79       104        59        62        46        82
 3 26994           80       107        63        62        46        82
 4 23507           82       110        63        64        48        84
 5 38465           83       113        64        65        49        85
 6 33280           84       114        66        66        49        85
 7 17506           85       114        66        67        49        86
 8 6484            85       114        66        67        50        87
 9 33668           86       115        68        68        51        87
10 39292           86       115        68        69        52        88
# … with 190 more rows, and 3 more variables: venda_trim_1 <dbl>,
#   venda_trim_1_alt <dbl>, venda_1_sem <dbl>

Suponha que desejamos calcular o número médio de produtos vendidos nas lojas em Janeiro por cidade e o número de lojas por cidade no ano de 2019.

#Obtendo as medidas solicitadas
resultado_1 = base_com |>
  filter(ano == 2019) |> 
  group_by(cidade) |>
  summarise(media = mean(venda_JAN, na.rm = TRUE),
            n = n())

#Visualizando o objeto
resultado_1
# A tibble: 7 x 3
  cidade         media     n
  <fct>          <dbl> <int>
1 Belo Horizonte  99.5    24
2 Cabo Frio       94.8    23
3 Macaé           99.3    33
4 Niterói        100.     28
5 Rio de Janeiro 100.     30
6 São Gonçalo     99.1    37
7 São Paulo      102.     25

Vamos agora tentar fazer algo mais elaborado. Suponha que desejamos calcular a média, a mediana e o desvio-padrão do número de produtos vendidos nos meses do primeiro semestre por cidade no ano de 2019.

Para realizar tal procedimento, precisaremos da função sumarise_at.

Principais argumentos da função sumarise_at:

  - .tbl - o tibble que contém as variáveis;

  - .vars - as variáveis que serão utilizadas nas funções;

  - .fun - as funções que serão aplicadas as variáveis que foram indicadas em .vars;

  - na.rm - variável lógica que indica que os na devem ser removidos (default = TRUE).

#Obtendo as medidas solicitadas
resultado_2 = base_com |>
  filter(ano == 2019) |>
  group_by(cidade) |>
  summarise_at(.vars = vars(venda_JAN:venda_JUN),
               .funs = list(media = mean,
                            mediana = median,
                            desvio = sd),
               na.rm = TRUE)

#Visualizando o objeto
resultado_2
# A tibble: 7 x 19
  cidade         venda_JAN_media venda_FEV_media venda_MAR_media venda_ABR_media
  <fct>                    <dbl>           <dbl>           <dbl>           <dbl>
1 Belo Horizonte            99.5            118.            68.8            53.0
2 Cabo Frio                 94.8            113.            65.0            48.7
3 Macaé                     99.3            119.            69.4            54.1
4 Niterói                  100.             124.            74.1            65.1
5 Rio de Janeiro           100.             120.            70.2            55.3
6 São Gonçalo               99.1            118.            69.4            54.3
7 São Paulo                102.             120.            70.5            53.4
# … with 14 more variables: venda_MAI_media <dbl>, venda_JUN_media <dbl>,
#   venda_JAN_mediana <dbl>, venda_FEV_mediana <dbl>, venda_MAR_mediana <dbl>,
#   venda_ABR_mediana <dbl>, venda_MAI_mediana <dbl>, venda_JUN_mediana <dbl>,
#   venda_JAN_desvio <dbl>, venda_FEV_desvio <dbl>, venda_MAR_desvio <dbl>,
#   venda_ABR_desvio <dbl>, venda_MAI_desvio <dbl>, venda_JUN_desvio <dbl>

Atividade: Calcule o número de lojas e o número total de produtos vendidos em janeiro considerando a cidade da loja, se participaram da campanha e o ano da venda.

#Visualizando o objeto
resultado_3
# A tibble: 28 x 5
# Groups:   cidade, ano [14]
   cidade           ano campanha num_lojas total_prod
   <fct>          <dbl> <fct>        <int>      <dbl>
 1 Belo Horizonte  2019 Não             12       1206
 2 Belo Horizonte  2019 Sim             12       1183
 3 Belo Horizonte  2020 Não             10        984
 4 Belo Horizonte  2020 Sim             14       1412
 5 Cabo Frio       2019 Não             11       1055
 6 Cabo Frio       2019 Sim             12       1125
 7 Cabo Frio       2020 Não              8        735
 8 Cabo Frio       2020 Sim             15       1452
 9 Macaé           2019 Não             18       1770
10 Macaé           2019 Sim             15       1507
# … with 18 more rows

Atividade: Importe a planilha 2020 do arquivo socio.xlsx de modo que o objeto criado seja um tibble. Armazene em um objeto chamado base_socio. Garanta que a variável matricula será importada como um character.

#Visualizando o objeto base_socio
base_socio
# A tibble: 300 × 4
   matricula sexo  idade escolaridade
   <chr>     <chr> <dbl>        <dbl>
 1 4046      M        43            3
 2 8902      F        60            2
 3 9922      M        35            1
 4 5634      M        40            3
 5 9378      M        42            2
 6 9275      F        23            2
 7 7860      M        39            1
 8 2674      M        41            1
 9 3253      F        39            3
10 4867      F        51            1
# … with 290 more rows

Transforme em fator as variáveis qualitativas da base.

#Visualizando os objetos
base_socio
# A tibble: 300 × 4
   matricula sexo  idade escolaridade
   <chr>     <fct> <dbl> <ord>       
 1 4046      M        43 Superior    
 2 8902      F        60 Médio       
 3 9922      M        35 Fundamental 
 4 5634      M        40 Superior    
 5 9378      M        42 Médio       
 6 9275      F        23 Médio       
 7 7860      M        39 Fundamental 
 8 2674      M        41 Fundamental 
 9 3253      F        39 Superior    
10 4867      F        51 Fundamental 
# … with 290 more rows