3.4) Explorando a distribuição dos dados
Last updated
Last updated
Objetivo: introduzir as medidas básicas para análise exploratória de dados (IQR, mediana, primeiro e terceiro quartil) e a criação de resumos com histograma e as medidas de distribuição dos dados com o pacote {summarytools}
Como fazer: assista ao vídeo, procure reproduzir o script em anexo no seu computador.
# _ __
#(_) / _|
# _ _ __ | |_ ___ ___ ___ ___
#| | '_ \| _/ _ \/ __|/ _ \ / __|
#| | | | | || (_) \__ \ (_) | (__
#|_|_| |_|_| \___/|___/\___/ \___|
# ...................................................
# Informática Aplicada às Ciências Sociais
# Centro de Letras e Ciências Humanas - CCH
# Universidade Estadual de Londrina - UEL
# Autores: - Prof. Ronaldo Baltar
# - Prof.ª Cláudia Siqueira Baltar
# Curso: Explorando Indicadores Sociais com R
# Atividade: 3
# Versão: 2023
# --------
# Objetivo
# --------
# Primeiros passos com a análise exploratória de dados
#
# -----------------------------
# Passos anteriores necessários
# -----------------------------
# Ter importado para tabelas tibble as planilhas em Excel com os indicadores municipais baseados nos Censos Demográficos e em Registros Administrativos.
# As descrições do dicionário de variáveis devem ter sido incluídas nas tabelas.
# ----------------------
# Configurações iniciais
# -----------------------
library(tidyverse)
library(labelled)
library(summarytools)
# -----------------
# Importar os dados
# -----------------
# Carrega a área de trabalho, criada no exercício anterior
# com as tabelas c_dic_tbl e r_dic_tbl
# Esse procedimento deve ser feito apenas se as respectivas
# tabelas não estiverem na área de trabalho global da sessão do R
# Confira se o caminho do diretório corresponde ao que você criou no seu computador. Mude o caminho e o nome do arquivo .RData se necessário.
load("dados/indicadores_censo_registro.RData")
# ---------------------------------
# Conhecendo a distribuição do dados
# com {summarytools} descr, ctable
# e dfSummary
# ----------------------------------
st_options(lang = "pt") #opção de língua para summarytools
# Sumário padrão do R
summary(c_dic_tbl)
# Sumário com descrição numérica de uma variável com descr()
descr(c_dic_tbl$IDHM)
descr(c_dic_tbl$IDHM, transpose = TRUE)
# Sumário com a descrição numérica das variáveis que começam com IDHM
c_dic_tbl |>
select(starts_with("IDHM")) |>
descr(transpose = TRUE)
# Sumário com histograma de todas as variáveis
view(dfSummary(c_dic_tbl))
# Sumário das variáveis que começam com IDHM,
# agrupadas por ano na tabela c_dic_tbl
c_dic_tbl |>
group_by(ANO) |>
select(starts_with("IDHM")) |>
dfSummary() |>
view()
# Sumário das variáveis que começam com IDDB
# agrupadas por ano na tabela r_dic_tbl
r_dic_tbl |>
group_by(ANO) |>
select(starts_with("IDEB")) |>
dfSummary() |>
view()
# ----------------------------
# Criar variáveis categóricas
# ----------------------------
# Criar três novas variáveis categorizando IDHM, tamanho e perfil urbano ou rural dos municípios. O resultado será salvo em uma nova tabela c1_dic_tbl.
c_dic_tbl |>
mutate(classe_pop = case_when(
(POP < 5001) ~ "1) Até 5.000",
(POP > 5000 & POP < 20001) ~ "2) 5.001 a 20.000",
(POP > 20000 & POP < 100001) ~ "3) 20.001 a 100.000",
(POP > 100000 & POP < 500001) ~ "4) 100.001 a 500.000",
(POP > 500000) ~ "5) Mais de 500.000"
)) |>
mutate(classe_idhm = case_when(
(IDHM < 0.5) ~ "1) Muito baixo",
(IDHM >= 0.5 & IDHM < 0.6) ~ "2) Baixo",
(IDHM >= 0.6 & IDHM < 0.7) ~ "3) Médio",
(IDHM >= 0.7 & IDHM < 0.8) ~ "4) Alto",
(IDHM >= 0.8) ~ "5) Muito Alto"
)) |>
mutate(taxa_urbanizacao = (pesourb / pesotot) * 100) |>
mutate(urbano_rural = case_when(
(taxa_urbanizacao >= 50) ~ "Urbano",
(taxa_urbanizacao < 50) ~ "Rural")) |>
select(ANO,
UF,
Codmun7,
Município,
IDHM,
IDHM_E,
IDHM_L,
IDHM_R,
classe_idhm,
classe_pop,
urbano_rural) |>
filter(ANO == 2010) -> c1_dic_tbl
# Na tabela com os dados de registro, selecionar as variáveis
# relativas ao IDEB
r_dic_tbl |>
select(ANO, NOME, IBGE7, IDEB_AI, IDEB_AF) |>
filter(ANO == 2013) -> r1_dic_tbl
# r1_dic_tbl <- r_dic_tbl |>
# select(ANO, NOME, IBGE7, IDEB_AI, IDEB_AF) |>
# filter(ANO == 2013)
# juntar tabelas pela chave do código do município de sete dígitos do IBGE
c1_dic_tbl |>
full_join(r1_dic_tbl, by = c("Codmun7"="IBGE7")) |>
na.omit() -> c1r1_dic_tbl # elimina os casos omissos
# Confere a nova tabela criada
glimpse(c1r1_dic_tbl)
# Exclui da seleção as variáveis que não são indicadores
# para criar um sumário da tabela unificada c1r1_dic_tbl
c1r1_dic_tbl |>
select(-ANO.x,
-ANO.y,
-UF,
-NOME,
-Codmun7,
-Município) |>
dfSummary() |>
view()
# Tabela cruzada com ctable()
# Sitaxe com o R padrão
ctable(x = c1_dic_tbl$urbano_rural,
y = c1_dic_tbl$classe_idhm)
# Sintaxe com o R padrão, usando a função with()
with(c1_dic_tbl,
stby(
data = list(x = urbano_rural, y = classe_idhm),
FUN = ctable
))
# Criando uma tabela com os parâmetros dos valores extremos
c_dic_tbl %>%
group_by(ANO) %>%
reframe(media_idhm = mean(IDHM),
mediana_idhm = median(IDHM),
iqr_idhm = IQR(IDHM),
desvp_idhm = sd(IDHM),
q1_idhm = quantile(IDHM, 0.25),
q3_idhm = quantile(IDHM, 0.75),
maximo_idhm = max(IDHM),
limite_inferior_idhm =
q1_idhm - (1.5 * iqr_idhm),
limite_superior_idhm =
q3_idhm + (1.5 * iqr_idhm)
) -> limites_idhm_por_ano
# Lista dos valores extremos
c_dic_tbl %>%
filter(ANO == 2010) %>%
mutate(iqr_idhm = IQR(IDHM),
q1_idhm = quantile(IDHM, 0.25),
q3_idhm = quantile(IDHM, 0.75),
limite_inferior_idhm = q1_idhm - (1.1 * iqr_idhm),
limite_superior_idhm = q3_idhm + (1.1 * iqr_idhm)
) %>%
filter(IDHM < limite_inferior_idhm |
IDHM > limite_superior_idhm) %>%
select(Município, UF, IDHM)
# Ranking
c_dic_tbl %>%
filter(ANO == 2010) %>%
mutate(decil_idhm = ntile(desc(IDHM), 10)) %>%
filter(decil_idhm == 1) %>%
select(Município, UF, IDHM,decil_idhm)
Khan Academy: Como resumir dados quantitativos
No material da Khan Academy, o intervalo interquartil (IQR - Interquartile Range) é traduzido como faixa interquartil FIQ.
Os gráficos Boxplot, que veremos na próxima unidade desse curso, são chamados de Gráficos de Caixa no material da Khan Academy.