Pessoal, espero que estejam ótimos!
Aqui é o lugar onde eu vou fazer as ilustrações para a ERU 487. Com este material eu espero que vocês consigam, em um futuro próximo, fazer as suas próprias ilustrações, análises, etc.
Se o library("nomedopacote")
não funcionar, talvez você
não tenha instalado o pacote ainda. Por isso, talvez você precise
utilizar o install.packages("nomedopacote")
antes. Este
procedimento de instalar algo precisa ser feito apenas uma vez, mas o
carregamento do pacote, library("nomedopacote")
precisa ser
feito toda vez que você abrir o Rstudio.
Por isso, faça isso apenas da PRIMEIRA VEZ QUE ESTIVER USANDO O R:
install.packages("ipeadatar")
install.packages("ggplot2")
install.packages("ggthemes")
install.packages("sidrar")
install.packages("tidyr")
install.packages("tidyverse")
install.packages("wbstats")
install.packages("geobr")
install.packages("sp")
install.packages("sf", dependencies = TRUE)
install.packages("jsonlite")
Já esta parte aqui você precisa fazer TODA VEZ QUE INICIAR UMA NOVA SESSÃO:
library("ipeadatar")
library("ggplot2")
library("ggthemes")
library("sidrar")
library("tidyr")
library("tidyverse")
library("wbstats")
library("geobr")
library("sp")
library("sf")
library("jsonlite")
As bases de dados usadas aqui são públicas e eu não preciso enviá-las para vocês. A gente faz o download delas de três fontes preferencialmente:
IPEADATA com o library("ipeadatar")
Our World in Data com o read.csv combinado com
library("jsonlite")
Dados do IBGE pelo library("sidrar")
Isso facilita a vida porque você não vai se preocupar com criar as bases, nem se a base está separada por vírgulas, por pontos, etc. A parte ruim é que você não vai aprender a lidar com esses problemas básicos logo no início.
Eu fiz as ilustrações da aula de hoje com o ipeadatar
.
Vale a pena usar o pacote!
Primeiro a gente vai olhar todas as séries disponíveis. Assim vai ficar bem mais fácil de procurar por elas depois.
A gente vai fazer isso usando este pacote ipeadatar
.
as<-available_series(language = c("br"))
Agora você pode visualizar o objeto “as” e filtrar pelos nomes que está procurando.
De posse das bases, você precisa fazer boas perguntas e entender qual a melhor forma de respondê-las.
Procure por homicídios no objeto “as”.
Vamos então olhar as bases: THOMIC e THOMICJ.
th1<-ipeadata("THOMIC", language = c("br"), quiet = FALSE)
th2<-ipeadata("THOMICJ", language = c("br"), quiet = FALSE)
save(th1, file="th1.Rda")
save(th2, file="th2.Rda")
metadata("BM12_NUCLEOPIPCA12")
#DERAL12_ATFMAC12
farinha_crua <- ipeadata("DERAL12_ATFMAC12", language = c("br"), quiet = FALSE)
farinha_torrada <- ipeadata("DERAL12_ATFMAT12", language = c("br"), quiet = FALSE)
raiz <- ipeadata("DERAL12_PRMAN12", language = c("br"), quiet = FALSE)
Agora a gente vai filtrar as duas bases (th1 e th2) pelo código que indica que o valor é para o Brasil inteiro. Você pode fazer isso tanto pela coluna “uname” quanto pela “tcode”.
load("th1.Rda")
load("th2.Rda")
i1<-th1 %>% filter(uname=="Brasil")
i2<-th2 %>% filter(uname=="Brasil")
i1 <- i1 %>% mutate(th_total = value)
i2 <- i2 %>% mutate(th_jovem = value)
th3 <- merge(i1, i2, by="date") %>% select(date, th_jovem, th_total)
th3$ano <- as.numeric(substr(th3$date, 1, 4))
ggplot(th3, aes(x = ano)) +
geom_line(aes(y = th_total, color = "Total", linetype = "Total"), size = 1) +
geom_point(aes(y = th_total, color = "Total"), size = 2) +
geom_line(aes(y = th_jovem, color = "Jovem (15-29)", linetype = "Jovem (15-29)"), size = 1) +
geom_point(aes(y = th_jovem, color = "Jovem (15-29)"), size = 2) +
scale_color_manual(values = c("Total" = "gray20", "Jovem (15-29)" = "darkorange")) +
scale_linetype_manual(values = c("Total" = "solid", "Jovem (15-29)" = "dotted")) +
labs(x = "", y = "Taxa de homicídios (mortes/100mil)", color = "", linetype = "") +
theme_minimal()
Provável que os pais de vocês fossem jovens por volta da década de 1990. Então, quando eles falarem que “na minha época era mais seguro”. Provavelmente eles tão certos.
#tcode==3171303
i1 <- th1 %>%
filter(tcode == 3171303, date < "2022-01-01")
i2<-th2 %>%
filter(tcode == 3171303, date < "2022-01-01")
i1 <- i1 %>% mutate(th_total = value)
i2 <- i2 %>% mutate(th_jovem = value)
th3 <- merge(i1, i2, by="date") %>% select(date, th_jovem, th_total)
th3$ano <- as.numeric(substr(th3$date, 1, 4))
ggplot(th3, aes(x = ano)) +
geom_line(aes(y = th_total, color = "Total", linetype = "Total"), size = 1) +
geom_point(aes(y = th_total, color = "Total"), size = 2) +
geom_line(aes(y = th_jovem, color = "Jovem (15-29)", linetype = "Jovem (15-29)"), size = 1) +
geom_point(aes(y = th_jovem, color = "Jovem (15-29)"), size = 2) +
scale_color_manual(values = c("Total" = "gray20", "Jovem (15-29)" = "darkorange")) +
scale_linetype_manual(values = c("Total" = "solid", "Jovem (15-29)" = "dotted")) +
labs(x = "", y = "Taxa de homicídios (mortes/100mil)", color = "", linetype = "") +
theme_minimal()
#2909802
i1 <- th1 %>%
filter(tcode == 2909802, date < "2022-01-01")
i2<-th2 %>%
filter(tcode == 2909802, date < "2022-01-01")
i1 <- i1 %>% mutate(th_total = value)
i2 <- i2 %>% mutate(th_jovem = value)
th3 <- merge(i1, i2, by="date") %>% select(date, th_jovem, th_total)
th3$ano <- as.numeric(substr(th3$date, 1, 4))
ggplot(th3, aes(x = ano)) +
geom_line(aes(y = th_total, color = "Total", linetype = "Total"), size = 1) +
geom_point(aes(y = th_total, color = "Total"), size = 2) +
geom_line(aes(y = th_jovem, color = "Jovem (15-29)", linetype = "Jovem (15-29)"), size = 1) +
geom_point(aes(y = th_jovem, color = "Jovem (15-29)"), size = 2) +
scale_color_manual(values = c("Total" = "gray20", "Jovem (15-29)" = "darkorange")) +
scale_linetype_manual(values = c("Total" = "solid", "Jovem (15-29)" = "dotted")) +
labs(x = "", y = "Taxa de homicídios (mortes/100mil)", color = "", linetype = "") +
theme_minimal()
Pelo menos a mortalidade infantil caiu.
Fui no “as” e procurei por “infantil”.
#DEPIS_TMI
#ADH_MORT1
mo1<-ipeadata("DEPIS_TMI", language = c("br"), quiet = FALSE)
mo2<-ipeadata("ODS_MORT5UF", language = c("br"), quiet = FALSE)
mo3<-mo2 %>% filter(uname=="Brasil")
mo3$ano<-year(mo3$date)
save(mo3, file="mo3.Rda")
Fazendo o gráfico para mo3.
load("mo3.Rda")
ggplot(mo3, aes(x = ano, y=value)) +
geom_line(size=1, color="darkred") +
geom_point(size=2, color="darkred")+
theme_minimal()+
labs(x = "", y = "Mortalidade Infantil (5 anos, mortes/mil)")
As vezes a gente tem um problema com gráficos com o eixo truncado. O gráfico acima parece que a taxa de mortalidade zerou. Mas isso não é verdade.
ggplot(mo3, aes(x = ano, y = value)) +
geom_line(size = 1, color = "darkred") +
geom_point(size = 2, color = "darkred") +
scale_y_continuous(breaks = c(pretty(mo3$value), min(mo3$value))) +
theme_minimal() +
labs(x = "", y = "Mortalidade Infantil (5 anos, mortes/mil)")
Então, boa parte dessa queda de 50 para 14, uma redução de 72%, deve-se aos avanços da medicina, vacinas, etc.
#IDHMLO
#DEPIS_ESVIDA
longevidade<-ipeadata("DEPIS_ESVIDA", language = c("br"), quiet = FALSE)
longevidade2 <-ipeadata("EVNNEW", language = "br")
longevidade2$ano<-year(longevidade2$date)
l1<-ggplot(subset(longevidade2, uname == "Brasil"), aes(x = ano, y = value)) +
geom_line(size = 1, color = "darkred") +
geom_point(size = 2, color = "darkred") +
scale_y_continuous(breaks = c(pretty(longevidade2$value), min(longevidade2$value))) +
theme_minimal() +
labs(x = "", y = "Expectativa de vida ao nascer (anos)")
l1
ggsave(file = "l1.png", plot = l1, width = 6.472, height = 4)
Isso é muito ou pouco comparado ao resto do mundo?
Vamos olhar então como são esses dados no resto do mundo…
# Fetch the data
expectativadevida <- read.csv("https://ourworldindata.org/grapher/life-expectancy.csv?v=1&csvType=full&useColumnShortNames=true")
# Fetch the metadata
metadata <- fromJSON("https://ourworldindata.org/grapher/life-expectancy.metadata.json?v=1&csvType=full&useColumnShortNames=true")
save(expectativadevida, file="expectativadevida.Rda")
load("expectativadevida.Rda")
df_filtered <-expectativadevida %>%
filter(Entity %in% c("World", "Brazil", "United States", "France", "Germany", "Canada", "Argentina")) %>%
filter(Year>1900)
# Criar o gráfico
l3 <- ggplot(df_filtered, aes(x = Year, y = life_expectancy_0__sex_total__age_0, color = Entity)) +
geom_line() +
geom_point(size = 1)+
labs(title = "",
x = "",
y = "Expectativa de Vida ao Nascer",
color = "") +
theme_minimal()
l3
ggsave(file = "l3.png", plot = l3, width = 6.472, height = 4)
Há dois gráficos que eu fiz, mas que não estão aqui, aqueles sobre o gênero das crianças nascidas na China. Não vou repetir agora, mas se alguém quiser especificamente aquele gráfico, eu incluo.
Mostrar a disparidade do IDH no Brasil. Algumas cidades apresentam índices comparáveis aos de países desenvolvidos, enquanto outras possuem valores próximos aos da África Subsaariana.
Apresentar os dados e o mapa (possivelmente o que foi elaborado para o artigo sobre o peso dos BB serve pra isso).
Se você colocar um mapa feito por você mesmo no seu TCC, eu duvido ele não tirar mais de 70. Mapa é vida.
Mostrar também que todo país tem governo. Pra não ocorrer o caso exótico de alguém achar que dá pra não ter governo. Veja bem, o TAMANHO DO GOVERNO é um questionamento válido e importante. A EXISTÊNCIA DE GOVERNO parece ser um questionamento que só os meus amigos estranhos do twitter fazem (o Ronaldinho Gaúcho, o Dragon Ball, o Cebolinha, ou algum outro personagem – nunca é uma pessoa).
Pra medir o tamanho do governo geralmente a gente divide o gasto do governo (G) pelo PIB
\[ \frac{G}{Y}, \quad Y=PIB \]
library(jsonlite)
# Fetch the data
gastosgoverno <- read.csv("https://ourworldindata.org/grapher/historical-gov-spending-gdp.csv?v=1&csvType=full&useColumnShortNames=true")
save(gastosgoverno, file="gastosgoverno.Rda")
# Fetch the metadata
metadata <- fromJSON("https://ourworldindata.org/grapher/historical-gov-spending-gdp.metadata.json?v=1&csvType=full&useColumnShortNames=true")
Eu vou fazer para todos os países, destacando apenas o Brasil
load("gastosgoverno.Rda")
df2<-gastosgoverno %>% filter(expenditure<100) %>% filter(Year>"1950")
gastos1<-ggplot(df2, aes(x = Year, y = expenditure, group = Entity, color = Entity == "Brazil")) +
geom_line(alpha = 0.4) + # Linhas para todos os países com transparência
geom_point(data = df2[df2$Entity == "Brazil", ], size = 2) + # Pontos só para o Brasil
geom_line(data = df2[df2$Entity == "Brazil", ], size = 1.2) + # Linha destacada para o Brasil
scale_color_manual(values = c("gray70", "red"), labels = c("Outros", "Brasil")) + # Ajuste na legenda
theme_minimal() +
labs(y = "Gastos do Governo (% do PIB)", x = NULL, color = NULL) # Remove nome do eixo X e da legenda
ggsave(file = "gastos1.png", plot = gastos1, width = 6.472, height = 4)
gastos1
Vou olhar só para 2020
df3 <- gastosgoverno %>% filter(Year == "2020", expenditure < 70)
media_expenditure <- mean(df3$expenditure, na.rm = TRUE) # Calcula a média
gastos2 <- ggplot(df3, aes(x = expenditure)) +
geom_density(fill = "gray70", alpha = 0.5) + # Distribuição dos dados
geom_vline(data = df3 %>% filter(Entity == "Brazil"),
aes(xintercept = expenditure),
color = "darkgreen", size = 1.2) + # Linha vertical para o Brasil
geom_vline(aes(xintercept = media_expenditure), color = "blue", linetype = "dashed", size = 1) + # Linha média
geom_text(aes(x = media_expenditure, y = 0.025, label = paste0("Avg = ", round(media_expenditure, 1))),
color = "blue", angle = 0, vjust = -0.5, hjust = -0.3) + # Texto da média
geom_text(data = df3 %>% filter(Entity == "Brazil"),
aes(x = expenditure, y = 0.02, label = "Brasil (2020)"),
color = "darkgreen", angle = 0, vjust = -0.5, hjust = -0.3) + # Texto Brasil
theme_minimal() +
labs(x = "Gastos do Governo (% do PIB)", y = "Densidade")
ggsave(file = "gastos2.png", plot = gastos2, width = 6.472, height = 4)
gastos2
df4 <- gastosgoverno %>% filter(Year == "1980", expenditure < 70)
media_expenditure <- mean(df4$expenditure, na.rm = TRUE) # Calcula a média
gastos3 <- ggplot(df4, aes(x = expenditure)) +
geom_density(fill = "gray70", alpha = 0.5) + # Distribuição dos dados
geom_vline(data = df4 %>% filter(Entity == "Brazil"),
aes(xintercept = expenditure),
color = "darkgreen", size = 1.2) + # Linha vertical para o Brasil
geom_vline(aes(xintercept = media_expenditure), color = "blue", linetype = "dashed", size = 1) + # Linha média
geom_text(aes(x = media_expenditure, y = 0.025, label = paste0("Avg = ", round(media_expenditure, 1))),
color = "blue", angle = 0, vjust = -0.5, hjust = -0.3) + # Texto da média
geom_text(data = df4 %>% filter(Entity == "Brazil"),
aes(x = expenditure, y = 0.02, label = "Brasil (1980)"),
color = "darkgreen", angle = 0, vjust = -0.5, hjust = -0.3) + # Texto Brasil
theme_minimal() +
labs(x = "Gastos do Governo (% do PIB)", y = "Densidade")
ggsave(file = "gastos3.png", plot = gastos3, width = 6.472, height = 4)
gastos3
Vou olhar como que o Brasil se comporta em relação à média mundial
df2 <- gastosgoverno %>% filter(expenditure < 100, Year > 1950)
# Calculando a média mundial por ano
media_mundial <- df2 %>%
group_by(Year) %>%
summarise(expenditure = mean(expenditure, na.rm = TRUE)) %>%
mutate(Entity = "Média Mundial") # Criando um identificador
gastos5 <- ggplot(df2, aes(x = Year, y = expenditure, group = Entity)) +
geom_line(alpha = 0.4, color = "gray70") + # Linhas para todos os países com transparência
geom_line(data = df2 %>% filter(Entity == "Brazil"), size = 1.2, color = "red") + # Linha destacada para o Brasil
geom_point(data = df2 %>% filter(Entity == "Brazil"), size = 2, color = "red") + # Pontos só para o Brasil
geom_line(data = media_mundial, aes(x = Year, y = expenditure), size = 1.2, color = "blue") + # Linha da média mundial
theme_minimal() +
labs(y = "Gastos do Governo (% do PIB)", x = NULL) + # Remove nome do eixo X
geom_text(data = media_mundial %>% filter(Year == 2010),
aes(x = Year, y = expenditure, label = "Média Mundial"),
color = "blue", hjust = 0.5, vjust = -1, fontface = "bold") + # Rótulo da média mundial
geom_text(data = df2 %>% filter(Entity == "Brazil", Year == 1980),
aes(x = Year, y = expenditure, label = "Brasil"),
color = "red", hjust = -1.2, vjust = -0.5, fontface = "bold") # Rótulo do Brasil
ggsave(file = "gastos5.png", plot = gastos5, width = 6.472, height = 4)
gastos5
df2 <- gastosgoverno %>% filter(expenditure < 100, Year > 1950)
# Calculando a média mundial por ano
media_mundial <- df2 %>%
group_by(Year) %>%
summarise(expenditure = mean(expenditure, na.rm = TRUE)) %>%
mutate(Entity = "Média Mundial") # Criando um identificador
gastos6 <- ggplot(df2, aes(x = Year, y = expenditure, group = Entity)) +
geom_line(alpha = 0.4, color = "gray70") + # Linhas para todos os países com transparência
geom_line(data = df2 %>% filter(Entity == "Brazil"), size = 1.2, color = "red") + # Linha destacada para o Brasil
geom_point(data = df2 %>% filter(Entity == "Brazil"), size = 2, color = "red") + # Pontos só para o Brasil
geom_line(data = df2 %>% filter(Entity == "Argentina"), size = 1.2, color = "green4") + # Linha destacada para Argentina
geom_point(data = df2 %>% filter(Entity == "Argentina"), size = 2, color = "green4") + # Pontos só para Argentina
geom_line(data = media_mundial, aes(x = Year, y = expenditure), size = 1.2, color = "blue") + # Linha da média mundial
theme_minimal() +
labs(y = "Gastos do Governo (% do PIB)", x = NULL) + # Remove nome do eixo X
geom_text(data = media_mundial %>% filter(Year == 1980),
aes(x = Year, y = expenditure, label = "Mundo"),
color = "blue", hjust = 0.5, vjust = -1, fontface = "bold") + # Rótulo da média mundial
geom_text(data = df2 %>% filter(Entity == "Brazil", Year == 1980),
aes(x = Year, y = expenditure, label = "Brasil"),
color = "red", hjust = -1.2, vjust = -0.5, fontface = "bold") + # Rótulo do Brasil
geom_text(data = df2 %>% filter(Entity == "Argentina", Year == 1990),
aes(x = Year, y = expenditure+10, label = "Argentina"),
color = "green4", hjust = -1.2, vjust = 1, fontface = "bold") # Rótulo da Argentina
ggsave(file = "gastos6.png", plot = gastos6, width = 6.472, height = 4)
gastos6
Desses primeiros gráficos:
Não existe lugar sem gasto do governo
O gasto brasileiro está entre os maiores
Pós-1985 o gasto sobe muito, provavelmente por conta da Constituição de 1988
as<-available_series(language = c("br"))
idh<-ipeadata("IDHM", language = c("br"))
save(idh, file="idh.Rda")
load("idh.Rda")
idh$ano<-year(idh$date)
# Filtrar os dados
idh_filtrado <- idh %>% filter(tcode == 0)
# Encontrar a última observação
ultima_obs <- idh_filtrado %>% filter(ano == max(ano))
# Criar o gráfico
g_idh1 <- ggplot(idh_filtrado, aes(x = ano, y = value)) +
geom_line(color = "darkblue") +
geom_point(color = "darkblue") +
geom_text(data = ultima_obs, aes(label = round(value, 2)),
vjust = 1.5, hjust = 0.8, color = "darkblue", size = 4) +
theme_minimal() +
labs(x = "", y = "IDH", title = "")
# Salvar o gráfico
ggsave(file = "g_idh1.png", plot = g_idh1, width = 6.472, height = 4)
g_idh1
Fazer por estado
idh$ano <- year(idh$date)
# Filtrar os estados
idh3 <- idh %>% filter(uname == "Estados")
# Identificar os estados destacados
estados_destacados <- c(35, 27, 31)
# Criar o gráfico
g_idh2 <- ggplot(idh3, aes(x = ano, y = value, group = tcode, color = as.factor(tcode))) +
geom_line(data = idh3 %>% filter(!tcode %in% estados_destacados), color = "gray85", size = 0.7) +
geom_line(data = idh3 %>% filter(tcode %in% estados_destacados), aes(color = as.factor(tcode)), size = 1) +
geom_point(data = idh3 %>% filter(tcode %in% estados_destacados), aes(color = as.factor(tcode)), size = 2) +
scale_color_manual(values = c("35" = "darkblue", "27" = "darkred", "31" = "darkgreen"),
labels = c("27" = "Alagoas", "31" = "Minas Gerais", "35" = "Sao Paulo"),
name = "") +
theme_minimal() +
labs(x = "", y = "IDH", title = "")
# Salvar o gráfico
ggsave(file = "g_idh2.png", plot = g_idh2, width = 6.472, height = 4)
g_idh2
idh4 <- ipeadata("IDHM", language = "en")
idh4 <- idh4 %>% filter(uname == "Municipality")
idh4$ano <- year(idh4$date)
Incluindo “geom” das cidades para fazer os mapas.
muni <- read_municipality(year=2010)
## Using year/date 2010
state <- read_state(year=2010)
## Using year/date 2010
# Supondo que idh4 e muni são seus data frames
muni2 <- merge(idh4, muni, by.x = "tcode", by.y = "code_muni")
muni2<- st_as_sf(muni2)
# Criar o mapa
map1 <- ggplot() +
geom_sf(data = subset(muni2, ano == 2010), aes(fill = value), color = NA) +
scale_fill_viridis_c(option = "viridis") +
geom_sf(data = state, fill = NA, color = "black", linewidth = 0.5) +
theme_minimal() # Tema minimalista
map1
Pra ficar bom mesmo, eu queria um mapa do IDH nos anos 2000 e um IDH nos 2010, mas mantendo as cores nos dois… ou seja, a intensidade de verdade que representa 0.6 tem que ser a mesma para os dois mapas
library(patchwork)
## Warning: package 'patchwork' was built under R version 4.3.3
# Encontrar o valor mínimo e máximo da variável `value` em ambos os anos
min_value <- min(muni2$value, na.rm = TRUE)
max_value <- max(muni2$value, na.rm = TRUE)
# Criar o mapa para o ano 2010 (map1)
map1 <- ggplot() +
geom_sf(data = subset(muni2, ano == 2010), aes(fill = value), color = NA) +
scale_fill_viridis_c(
option = "viridis",
limits = c(min_value, max_value),
name = "IDH" # Substituir "value" por "IDH" na legenda
) +
geom_sf(data = state, fill = NA, color = "black", linewidth = 0.5) +
theme_minimal() +
labs(title = "IDH em 2010")
# Criar o mapa para o ano 2000 (map2)
map2 <- ggplot() +
geom_sf(data = subset(muni2, ano == 2000), aes(fill = value), color = NA) +
scale_fill_viridis_c(
option = "viridis",
limits = c(min_value, max_value),
name = "IDH" # Substituir "value" por "IDH" na legenda
) +
geom_sf(data = state, fill = NA, color = "black", linewidth = 0.5) +
theme_minimal() +
labs(title = "IDH em 2000")
# Combinar os mapas lado a lado com patchwork
combined_plot <- map2 | map1
# Exibir o gráfico combinado
print(combined_plot)
ggsave(file = "idh_combined_plot.png", plot = combined_plot, width = 6.472, height = 4)
Vou fazer uma correlação entre o IDH em 2000 e o IDH em 2010 pra você perceber persistência
idh_2000 <- muni2 %>%
filter(ano==2000) %>%
st_drop_geometry() %>% # Remove a coluna de geometria
select(tcode, value)
idh_2000$idh2000<-idh_2000$value
idh_2010 <- muni2 %>%
filter(ano==2010) %>%
st_drop_geometry() %>% # Remove a coluna de geometria
select(tcode, value)
idh_2010$idh2010<-idh_2010$value
idh_comparison <- idh_2000 %>%
left_join(idh_2010, by = "tcode")
# Criar o gráfico de correlação
correlation_plot <- ggplot(idh_comparison, aes(y = idh2000, x = idh2010)) +
geom_point(alpha = 0.2, color = "darkblue") + # Pontos com transparência
geom_smooth(method = "lm", color = "darkred", se = FALSE) + # Linha de tendência
labs(
y = "IDH em 2000",
x = "IDH em 2010",
title = "",
subtitle = ""
) +
theme_minimal()
correlation_plot
## `geom_smooth()` using formula = 'y ~ x'
ggsave(file = "idh_correlation_plot.png", plot = correlation_plot, width = 6.472, height = 4)
## `geom_smooth()` using formula = 'y ~ x'
Quero fazer um mapa evidenciando só os lugares com IDH baixo (menor do que 0.55) e IDH elevado (maior do que 0.7)
muni2_categorized <- muni2 %>%
mutate(
idh_category = case_when(
value < 0.55 ~ "IDH Baixo (< 0.55)",
value > 0.7 ~ "IDH Elevado (> 0.7)",
TRUE ~ "IDH Médio (0.55 - 0.7)"
)
)
idh_colors <- c(
"IDH Baixo (< 0.55)" = "darkred", # Vermelho escuro para IDH baixo
"IDH Médio (0.55 - 0.7)" = "gray", # Cinza para IDH médio
"IDH Elevado (> 0.7)" = "darkblue" # Azul escuro para IDH alto
)
map10 <- ggplot() +
geom_sf(
data = subset(muni2_categorized, ano == 2010),
aes(fill = idh_category), # Usar a categoria de IDH para preenchimento
color = NA # Sem borda nos polígonos
) +
scale_fill_manual(values = idh_colors) + # Definir cores manualmente
geom_sf(
data = state,
fill = NA, # Sem preenchimento para os estados
color = "black", # Bordas pretas para os estados
linewidth = 0.5
) +
theme_minimal() + # Tema minimalista
labs(
title = "IDH em 2010",
fill = "" # Título da legenda
)
# Exibir o mapa
print(map10)
ggsave(file = "idh_map10.png", plot = map10, width = 6.472, height = 4)
A gente precisa falar sobre desigualdade:
Você precisa ter uma ideia clara de quão pobre e desigual é o Brasil pra saber se uma política pública atinge o top-10 ou o bottom-10. E se essa política diminui ou aumenta a desigualdade. Eu não quero que você seja especialista em diversas políticas públicas, a gente não vai conseguir. Mas você tem que saber se a desigualdade sobe ou desce para políticas públicas que de forma bem explícita beneficiem os mais ricos ou os mais pobres. Pra isso, você precisa conhecer a distribuição de renda.
Não rodar isso porque demora muito, o código fica lento. Mas incluir caso alguém precise.
library(PNADcIBGE)
library(convey)
library(survey)
dadosPNADc <- get_pnadc(year=2023, quarter=4)
giniBR <- svygini(formula=~VD4020, design=dadosPNADc, na.rm=TRUE)
giniBR
giniUF <- svyby(formula=~VD4020, by=~UF, design=dadosPNADc, FUN=svygini, na.rm=TRUE)
giniUF
UF | VD4020 | se.VD4020 |
---|---|---|
Rondônia | 0.42590 | 0.01450 |
Acre | 0.46787 | 0.01266 |
Amazonas | 0.50803 | 0.01172 |
Roraima | 0.48410 | 0.01797 |
Pará | 0.54699 | 0.01193 |
Amapá | 0.47034 | 0.01393 |
Tocantins | 0.49613 | 0.01342 |
Maranhão | 0.50309 | 0.01022 |
Piauí | 0.58273 | 0.02885 |
Ceará | 0.53087 | 0.01450 |
Rio Grande do Norte | 0.52879 | 0.01700 |
Paraíba | 0.57711 | 0.02112 |
Pernambuco | 0.50914 | 0.01279 |
Alagoas | 0.47199 | 0.01492 |
Sergipe | 0.54081 | 0.01456 |
Bahia | 0.53149 | 0.01155 |
Minas Gerais | 0.47790 | 0.01091 |
Espírito Santo | 0.46552 | 0.00960 |
Rio de Janeiro | 0.52018 | 0.00708 |
São Paulo | 0.49774 | 0.00772 |
Paraná | 0.44894 | 0.00910 |
Santa Catarina | 0.41157 | 0.00624 |
Rio Grande do Sul | 0.48388 | 0.00628 |
Mato Grosso do Sul | 0.47293 | 0.01204 |
Mato Grosso | 0.45805 | 0.01254 |
Goiás | 0.47544 | 0.01127 |
Distrito Federal | 0.55957 | 0.00983 |
curvaLorenz <- svylorenz(formula=~VD4020, design=dadosPNADc, quantiles=seq(from=0, to=1, by=0.05), na.rm=TRUE)
curvaLorenz
decis <- svyquantile(x=~VD4020, design=dadosPNADc, quantiles=c(0.1,0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99), ci=FALSE, na.rm=TRUE)
decis
VD4020 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 0.95 | 0.99 |
---|---|---|---|---|---|---|---|---|---|---|---|
[1,] | 600 | 1200 | 1320 | 1500 | 2000 | 2300 | 3000 | 4000 | 6000 | 10000 | 21750 |
Isso quer dizer que o primeiro decil, os 10% mais pobres estão separados por este valor de 600. Quem ganha isso ou menos, está no 10% que menos ganha. Quem ganha 6000 ou mais está no 10% que mais recebe salários. Quem ganha 10.000 ou mais está nos 5% mais recebe salários… e assim por diante.
# Dados
decis <- c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99)
valores <- c(600, 1200, 1320, 1500, 2000, 2300, 3000, 4000, 6000, 10000, 21750)
# Dados
decis <- c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99)
valores <- c(600, 1200, 1320, 1500, 2000, 2300, 3000, 4000, 6000, 10000, 21750)
# Configurar a janela gráfica para 2 linhas e 3 colunas
par(mfrow = c(2, 3))
# 1. Gráfico de Barras
barplot(valores, names.arg = decis, col = "skyblue",
main = "Gfico de Barras", xlab = "Decis", ylab = "Valores",
border = "darkblue")
pib1<-ipeadata("WDI_PIBPPCCAPBRA", language="en")
pib1$ano<-year(pib1$date)
pib1$ppp<-pib1$value
# Criar o gráfico
kru<-ggplot(pib1, aes(x = ano, y = ppp)) +
geom_line(size = 1, color = "black") + # Linha do PIB
geom_point(size = 2, color = "black") + # Pontos do PIB
geom_vline(xintercept = 2014, linetype = "dashed", color = "darkblue", size = 1) + # Linha tracejada em 2014
annotate("segment", x = 2012, xend = 2014, y = max(pib1$ppp) * 0.9, yend = max(pib1$ppp) * 0.9,
color = "black", arrow = arrow(type = "closed", length = unit(0.2, "cm"))) + # Seta (agora apontando para a direita)
annotate("text", x = 2011.5, y = max(pib1$ppp) * 0.9, label = "Fala do Krugman de que estava tudo bem",
color = "black", hjust = 1, vjust = 0) + # Texto da seta (agora à esquerda)
scale_y_log10() + # Escala logarítmica no eixo y
labs(
title = "",
x = "",
y = "PIB per capita (ppp, escala logarítmica)"
) +
theme_minimal()
kru
ggsave(file = "kru.png", plot = kru, width = 6.472, height = 4)
as<-available_series(language = c("br"))
#FAM_PBF
#VAL_PBF
x<-metadata("VAL_PBF")
beneficiarios<-ipeadata("FAM_PBF", language="en")
## Warning: There was 1 warning in `dplyr::mutate()`.
## ℹ In argument: `TERCODIGO = as.integer(.data$TERCODIGO)`.
## Caused by warning:
## ! NAs introduzidos por coerção
valor<-ipeadata("VAL_PBF", language="en")
## Warning: There was 1 warning in `dplyr::mutate()`.
## ℹ In argument: `TERCODIGO = as.integer(.data$TERCODIGO)`.
## Caused by warning:
## ! NAs introduzidos por coerção
b<-beneficiarios %>% filter(uname=="Brazil")
v<-valor %>% filter(uname=="Brazil")
b$ano<-year(b$date)
v$ano<-year(v$date)
b$quantidade<-b$value
b$valor<-v$value
bf<-merge(b, v, by="ano") %>% select(ano, quantidade, valor)
bf$media<-bf$valor/bf$quantidade
bf1<-ggplot(bf, aes(x=ano, y=valor/1000000)) + geom_line() + geom_point() + theme_minimal()
bf1
#VAL_PBF12
valor<-ipeadata("VAL_PBF12", language="en")
v<-valor %>% filter(uname=="Brazil")
bf2<-ggplot(v, aes(x=date, y=value/1000000)) + geom_line() + geom_point() + theme_minimal()
bf2