Na aula conhecendo os dados, vimos algumas funções que são interessantes para ver estatísticas descritivas de todas as variáveis de uma vez, como a summary() e a skim().
Podemos utilizar também funções do R para calcular estatísticas descritivas de uma variável.
Por exemplo, para calcular a média da variável perc_desocupacao, podemos usar a função mean():
mean(dados$perc_desocupacao)
[1] 10.2724
Nesse caso, estamos fazendo a média de TODOS os valores da variável prop_desocupacao, incluindo proporções de períodos diferentes. Veremos em breve como podemos calcular a média considerando grupos (por exemplo, qual é a média em cada período?).
A seguir, temos uma lista de funções que podem ser utilizadas para calcular estatísticas descritivas de uma variável:
Função
O que retorna?
min()
Valor mínimo
max()
Valor máximo
sum()
Soma
mean()
Média
median()
Mediana
var()
Variância (simples)
sd()
Desvio Padrão
Vamos calcular algumas dessas estatísticas para a variável perc_desocupacao:
min(dados$perc_desocupacao)
[1] 2.344666
max(dados$perc_desocupacao)
[1] 21.7527
mean(dados$perc_desocupacao)
[1] 10.2724
median(dados$perc_desocupacao)
[1] 9.776482
var(dados$perc_desocupacao)
[1] 14.88816
sd(dados$perc_desocupacao)
[1] 3.858517
Aviso
As variáveis que estamos trabalhando não possuem valores faltantes (NA). Caso a variável que você esteja trabalhando possua valores faltantes, é importante considerar o argumento na.rm = TRUE nas funções de estatísticas descritivas, para que os valores faltantes sejam ignorados ao realizar os cálculos.
Atribuindo a variável height (altura) da base starwars ao objeto altura_personagens_starwars.
2
Tentando calcular a média da altura dos personagens de Star Wars. O resultado será NA pois temos NA na variável altura_personagens_starwars.
[1] NA
mean(altura_personagens_starwars, na.rm =TRUE)
1
Calculando a média da altura dos personagens de Star Wars, ignorando os valores faltantes (NA).
[1] 174.6049
Estatísticas agregadas (summarise())
Uma função importante do pacote dplyr é a summarise(). Ela permite calcular estatísticas descritivas de variáveis de uma base de dados, usando as funções que vimos anteriormente. A diferença é que retornará um novo data frame com as estatísticas calculadas.
Porém isso não é muito diferente de usar as funções do R diretamente, como fizemos anteriormente.
A grande vantagem da função summarise() é que podemos calcular estatísticas descritivas para grupos de dados, o que veremos a seguir.
Agrupando dados (group_by())
Imagine que queremos calcular a média da taxa de desemprego para cada estado. Para isso, precisaríamos agrupar a base de dados por cada estado.
A função group_by() do pacote dplyr permite agrupar dados usando uma ou mais variáveis. Ela não faz alterações nas linhas e colunas da base de dados, porém ela cria um atributo que indica que a base de dados está agrupada. Assim, as etapas seguintes que utilizarem a base de dados agrupada irão considerar os grupos criados.
Veja o exemplo a seguir: ao agrupar a base dados por uf, estamos criando grupos de dados para cada estado. Veja que o resultado é uma tibble, mas a diferença é que agora temos um grupo para cada estado (# Groups: uf [27]):
dados |>group_by(uf)
# A tibble: 1,350 × 16
# Groups: uf [27]
uf uf_codigo uf_sigla regiao trimestre trimestre_codigo ano
<chr> <fct> <chr> <chr> <chr> <chr> <dbl>
1 Amapá 16 AP Norte 1º trime… 201201 2012
2 Bahia 29 BA Norde… 1º trime… 201201 2012
3 Rio Grande do Nor… 24 RN Norde… 1º trime… 201201 2012
4 Alagoas 27 AL Norde… 1º trime… 201201 2012
5 Amazonas 13 AM Norte 1º trime… 201201 2012
6 Sergipe 28 SE Norde… 1º trime… 201201 2012
7 Paraíba 25 PB Norde… 1º trime… 201201 2012
8 Pernambuco 26 PE Norde… 1º trime… 201201 2012
9 Acre 12 AC Norte 1º trime… 201201 2012
10 Distrito Federal 53 DF Centr… 1º trime… 201201 2012
# ℹ 1,340 more rows
# ℹ 9 more variables: trimestre_inicio <date>, mil_pessoas_total <dbl>,
# mil_pessoas_forca_de_trabalho <dbl>,
# mil_pessoas_forca_de_trabalho_ocupada <dbl>,
# mil_pessoas_forca_de_trabalho_desocupada <dbl>,
# mil_pessoas_fora_da_forca_de_trabalho <dbl>, prop_desocupacao <dbl>,
# perc_desocupacao <dbl>, periodo_pandemia <dbl>
Podemos agrupar também usando mais que uma variável. Neste exemplo, vamos agrupar por uf e ano: uf, ano [351]. Isso significa que temos um grupo para cada combinação de estado (27) e ano (13), totalizando 351 grupos.
dados |>group_by(uf, ano)
# A tibble: 1,350 × 16
# Groups: uf, ano [351]
uf uf_codigo uf_sigla regiao trimestre trimestre_codigo ano
<chr> <fct> <chr> <chr> <chr> <chr> <dbl>
1 Amapá 16 AP Norte 1º trime… 201201 2012
2 Bahia 29 BA Norde… 1º trime… 201201 2012
3 Rio Grande do Nor… 24 RN Norde… 1º trime… 201201 2012
4 Alagoas 27 AL Norde… 1º trime… 201201 2012
5 Amazonas 13 AM Norte 1º trime… 201201 2012
6 Sergipe 28 SE Norde… 1º trime… 201201 2012
7 Paraíba 25 PB Norde… 1º trime… 201201 2012
8 Pernambuco 26 PE Norde… 1º trime… 201201 2012
9 Acre 12 AC Norte 1º trime… 201201 2012
10 Distrito Federal 53 DF Centr… 1º trime… 201201 2012
# ℹ 1,340 more rows
# ℹ 9 more variables: trimestre_inicio <date>, mil_pessoas_total <dbl>,
# mil_pessoas_forca_de_trabalho <dbl>,
# mil_pessoas_forca_de_trabalho_ocupada <dbl>,
# mil_pessoas_forca_de_trabalho_desocupada <dbl>,
# mil_pessoas_fora_da_forca_de_trabalho <dbl>, prop_desocupacao <dbl>,
# perc_desocupacao <dbl>, periodo_pandemia <dbl>
Podemos usar função ungroup() para remover os grupos criados. Porém as funções que utilizaremos muitas vezes já remove os grupos. Veremos exemplos a seguir.
Estatísticas agregadas utilizando grupos (group_by() + summarise())
Agora que sabemos como agrupar dados, podemos calcular estatísticas descritivas para cada grupo.
`summarise()` has grouped output by 'uf'. You can override using the `.groups` argument.
Isso significa que a função summarise() retornou um data frame agrupado por uf. Se quisermos remover o agrupamento, podemos usar o argumento .groups = "drop":
dados |>group_by(uf, ano) |>summarise(media =mean(perc_desocupacao),.groups ="drop" )
1
O argumento .groups = "drop" retorna uma tibble sem grupos.
Porém como o summarise() apenas retorna as colunas de grupo e as colunas criadas, não temos a informação do trimestre.
Para isso, podemos utilizar a função filter() para filtrar os dados por estado, filtrando a linha que apresenta o maior valor encontrado (max(perc_desocupacao)) na coluna perc_desocupacao:
dados |>group_by(uf) |>filter(perc_desocupacao ==max(perc_desocupacao)) |>arrange(desc(perc_desocupacao)) |>select(uf, trimestre, perc_desocupacao)
1
Agrupando por estado (uf).
2
Filtrando as linhas que apresentam o maior valor encontrado na coluna perc_desocupacao.
3
Ordenando os dados de forma decrescente, segundo o perc_desocupacao.
4
Selecionando apenas as colunas relevantes para a pergunta.
# A tibble: 27 × 3
# Groups: uf [27]
uf trimestre perc_desocupacao
<chr> <chr> <dbl>
1 Pernambuco 2º trimestre 2021 21.8
2 Amapá 2º trimestre 2018 21.7
3 Bahia 1º trimestre 2021 21.7
4 Sergipe 3º trimestre 2020 20.8
5 Alagoas 4º trimestre 2020 20.4
6 Rio de Janeiro 1º trimestre 2021 19.6
7 Roraima 3º trimestre 2020 19.1
8 Acre 1º trimestre 2019 18.2
9 Amazonas 1º trimestre 2017 18.0
10 Rio Grande do Norte 3º trimestre 2020 17.9
# ℹ 17 more rows
Criando colunas utilizando grupos (group_by() + mutate())
Podemos criar novas colunas utilizando a função mutate().
Podemos utilizar essa pergunta como exemplo: - Qual é a média da taxa de desocupação para cada trimestre?
Podemos fazer calcular a média com a função summarise():
dados |>group_by(trimestre) |>summarise(media =mean(perc_desocupacao))
A média foi calculada, porém o resultado é apenas uma tabela contendo o trimestre (a coluna de agrupamento), e a média (a coluna criada dentro do summarise()). Porém, se quisermos ter essa média como uma coluna da tabela, podemos fazer esse cálculo utilizando o mutate()
dados_media_trimestre <- dados |>group_by(trimestre) |>mutate(media_desocupacao_trimestre =mean(perc_desocupacao))
Tabelas de frequência
Utilizamos tabelas de frequência para representar a quantidade de ocorrências de linhas segundo um grupo de variáveis.
A função count() do pacote dplyr é uma forma simples de criar tabelas de frequência.
Por exemplo: Se queremos saber quantos estados temos em cada região, podemos filtrar para apenas um período (para que não haja duplicações), e contar a quantidade de linhas em cada categoria da coluna regiao, usando a função count():
dados |>filter(trimestre_codigo =="202402") |>count(regiao)
1
Filtrando o trimestre mais recente
2
Contando a quantidade de linhas para cada região (nesse caso, quantos estados tem por região).
# A tibble: 5 × 2
regiao n
<chr> <int>
1 Centro Oeste 4
2 Nordeste 9
3 Norte 7
4 Sudeste 4
5 Sul 3
Exercícios sugeridos
Calcule média da taxa de desocupação nos dois primeiros trimestres de 2024, por região.
Qual foi o período (trimestre) para cada estado onde a taxa de desocupação foi menor?
Qual foi a mediana da taxa de desocupação para cada estado, durante o período da pandemia?