Evolução do uso da LGPD nas solicitações de acesso a informação via LAI para o governo Federal
Números totais
Foi feita uma busca pelos termos relacionados à Lei Geral de Proteção de Dados Pessoais (LGPD) nos conteúdos de 368.390 mil Pedidos de Acesso a Informação (pedidos LAI) enviados aos órgãos do Governo Federal e disponibilizados pelo portal FalaBr.
A busca foi realizada na solicitação do usuário e na resposta do órgão público. Os termos buscados são:
"lei geral de protecao de dados|lei de protecao de dados pessoais|lgpd|13709|13 709"
Para a detecção dos termos, foram utilizadas técnicas de processamento de linguagem natural para remoção de acentos e pontuações, URL’s e datas. pós este tratamento, foram detectados 4.697 pedidos que faziam menções à LGPD.
A base de dados da CGU não é completa, pois os pedidos contendo dados pessoais e informações consideradas sensíveis são descartados e o seu conteúdo não é divulgado. Os critérios para descarte desses pedidos da transparência ativa é adotado pelos órgãos do governo Federal e pela CGU e não é claro. Tal incompletude dos dados resulta em subnotificação das detecções dos termos, uma vez que eles dizem respeito aos temas “sigilo” e “dados pessoais”.
Outra fonte de subnotificação importante é a ausência de dados da Caixa Econômica Federal (CEF). A CEF era um dos principais órgãos solicitados via LAI sendo responsável por pelo menos x% de todas as solicitações disponibilizadas pelo FalaBr entre 2015 e 2018.
A detecção de termos relacionados à LGPD são divididas em duas partes.
De um lado, pedidos de acesso a informação onde o usuário cita a LGPD na própria solicitação são indicativos do interesse da sociedade sobre a legislação e/ou do cuidado dos solicitantes em delimitar o pedido a informações públicas.
Por outro lado, pedidos em que o órgão menciona “unilateralmente” a LGPD são indicativos do uso da legislação para restringir a divulgação de informações que o próprio órgão considera que sejam de cunho pessoal. Como a detecção dos termos não é qualitativa, não é possível dizer se o uso da LGPD nas respostas está sendo feito de maneira adequada ou abusiva.
Considerando situações onde os usuários não mencionam LGPD na solicitação. O campo “assuntos” é preenchido pelo usuário a partir de uma lista de assuntos fornecida pela plataforma FalaBr.
---title: "Evolução do uso da LGPD nas solicitações de acesso a informação via LAI para o governo Federal"lang: pt-BRformat: html: anchor-sections: true code-fold: true code-tools: true code-link: true code-line-numbers: true code-summary: "Código" toc: true toc-title: "Índice" toc-depth: 4 footnotes-hover: true smooth-scroll: true fig-width: 9 search: true comments: hypothesis: trueknitr: opts_chunk: collapse: true comment: "#>" echo: false message: false warning: falseeditor_options: chunk_output_type: consoleexecute: cache: false---```{=html}<style>.nav-tabs .nav-link { margin-bottom: -1px; background: none; border: 1px solid transparent; border-top-left-radius: .25rem; border-top-right-radius: .25rem; color: #fcaa27; font-size: 0.875em;}.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { color: #495057; background-color: #ececec"; border-color: #dee2e6 #dee2e6 #fff; color: #d81755; font-size: 1em;}</style>``````{r}#| label: libslibrary(tidyverse)library(here)library(lubridate)library(patchwork)library(scales)library(gt)library(tidytext)library(wordcloud)source(here("src/00-plot-aesthetics.R"), encoding ="utf-8")#' lista de regexlista_de_regex <-readRDS(here::here("data/lista-de-regex.rds"))`%notin%`<-function(x, y) !(x %in% y)``````{r}#| label: bases-de-dados#| eval: falsebase <-readRDS(here("data/base-cgu-filtrada.rds"))recorte_da_base <-"data/base-cgu-filtrada.rds"%>%here() %>%readRDS() %>%filter(base =="Pedidos") %>%transmute(datasets =map( datasets,~select( .x, assunto, id_pedido, decisao, data_registro, protocolo ) )) %>%unnest(datasets) %>%distinct() %>%filter(year(data_registro) >2017, decisao %notin%c("Pergunta Duplicada/Repetida","Não se trata de solicitação de informação" ))recursos <-readRDS(here("data/recursos-clean.rds"))pedidos <-readRDS(here("data/pedidos-clean.rds")) %>%distinct() %>% tidylog::inner_join(select(recorte_da_base, id_pedido, protocolo, decisao, assunto)) %>%mutate(possui_recurso =if_else( id_pedido %in%unique(recursos$id_pedido), TRUE, FALSE ))saveRDS(pedidos, here("data/pedidos_busca"))``````{r}#| label: busca-por-pedidospedidos_busca <-"data/pedidos_busca"%>%here() %>%readRDS() %>%transmute(id_pedido = id_pedido,protocolo = protocolo,data_registro = data_registro,data_resposta = data_resposta,assunto = assunto,decisao = decisao,possui_recurso = possui_recurso,orgao = orgao,detalhamento = detalhamento_clean,resposta_pedido = resposta_clean,resumo = resumo_clean,usa_lgpd_assunto = assunto =="Dados Pessoais - LGPD",usa_lgpd_pedido_resumido =if_else(year(data_registro) >2017,str_detect(resumo_clean, "LGPD"),FALSE ) %>%replace_na(FALSE),usa_lgpd_pedido =if_else(year(data_registro) >2017,str_detect(detalhamento_clean, "LGPD"),FALSE ),usa_lgpd_resposta =if_else(year(data_registro) >2017,str_detect(resposta_clean, "LGPD"),FALSE ) %>%replace_na(FALSE) ) %>%mutate(cita_onde =case_when(!usa_lgpd_assunto &!usa_lgpd_pedido_resumido &!usa_lgpd_pedido &!usa_lgpd_resposta ~"Não foram encontradas citações da LGPD", usa_lgpd_assunto ~"Usuário menciona LGPD na solitiação", usa_lgpd_pedido_resumido ~"Usuário menciona LGPD na solitiação", usa_lgpd_pedido ~"Usuário menciona LGPD na solitiação",!usa_lgpd_assunto &!usa_lgpd_pedido_resumido &!usa_lgpd_pedido & usa_lgpd_resposta ~"Somente na resposta do órgão público",TRUE~NA_character_ ) )```### Números totaisFoi feita uma busca pelos termos relacionados à [Lei Geral de Proteção de Dados Pessoais (LGPD)](http://www.planalto.gov.br/ccivil_03/_ato2015-2018/2018/lei/l13709.htm) nos conteúdos de 368.390 mil Pedidos de Acesso a Informação (pedidos LAI) enviados aos órgãos do Governo Federal e disponibilizados pelo portal [FalaBr](http://www.consultaesic.cgu.gov.br/busca/_layouts/15/DownloadPedidos/DownloadDados.aspx).A busca foi realizada na solicitação do usuário e na resposta do órgão público. Os termos buscados são:- `"lei geral de protecao de dados|lei de protecao de dados pessoais|lgpd|13709|13 709"`Para a detecção dos termos, foram utilizadas técnicas de processamento de linguagem natural para remoção de acentos e pontuações, URL's e datas. pós este tratamento, foram detectados 4.697 pedidos que faziam menções à LGPD.A base de dados da CGU não é completa, pois os pedidos contendo dados pessoais e informações consideradas sensíveis são descartados e o seu conteúdo não é divulgado. Os critérios para descarte desses pedidos da transparência ativa é adotado pelos órgãos do governo Federal e pela CGU e não é claro. Tal incompletude dos dados resulta em subnotificação das detecções dos termos, uma vez que eles dizem respeito aos temas “sigilo” e “dados pessoais”.Outra fonte de subnotificação importante é a ausência de dados da Caixa Econômica Federal (CEF). A CEF era um dos principais órgãos solicitados via LAI sendo responsável por pelo menos x% de todas as solicitações disponibilizadas pelo FalaBr entre 2015 e 2018.::: {.panel-tabset}#### Mês a mês```{r}#| label: plot-total-mensalpedidos_busca %>%mutate(deteccao_lgpd =if_else( cita_onde =="Não foram encontradas citações da LGPD", cita_onde, "Citação à LGPD encontrada" ) ) %>%count(data_registro, deteccao_lgpd) %>%ggplot(aes(x = data_registro, y = n, fill =reorder(deteccao_lgpd, -n))) +geom_col() +geom_text(data = . %>%add_count(data_registro, wt = n) %>%filter(deteccao_lgpd =="Não foram encontradas citações da LGPD") %>%mutate(nn - n) %>%filter(`nn - n`>0),aes(y =`nn - n`,label =`nn - n`, ),color = cores_aep[["rosa"]],vjust =-.5,hjust =0,size =2.5,fontface ="bold",angle =45 ) +labs(title ="Detecção dos termos relacionados a LGPD",subtitle ="Considerando menções no pedido e na resposta",x =NULL,y ="Quantidade de pedidos",fill =NULL ) +scale_fill_manual(values =c(alpha(cores_aep[["laranja"]], .5), cores_aep[["rosa"]])) +scale_x_date(date_breaks ="6 months", date_labels ="%b-%Y") +scale_y_continuous(labels = scales::number) +theme(axis.ticks.x =element_line(),legend.position ="top",legend.justification ="left")```#### Ano a ano```{r}#| label: plot-total-anualpedidos_busca %>%mutate(deteccao_lgpd =if_else( cita_onde =="Não foram encontradas citações da LGPD", cita_onde, "Citação à LGPD encontrada" ) ) %>%count(ano =year(data_registro), deteccao_lgpd) %>%ggplot(aes(x = ano, y = n, fill =reorder(deteccao_lgpd, -n))) +geom_col() +geom_text(data = . %>%add_count(ano, wt = n) %>%filter(deteccao_lgpd =="Não foram encontradas citações da LGPD") %>%mutate(nn - n) %>%filter(`nn - n`>0),aes(y =`nn - n`,label = scales::number(`nn - n`), ),color = cores_aep[["rosa"]],vjust =-.5,hjust =0,size =4,fontface ="bold" ) +scale_fill_manual(values =c(alpha(cores_aep[["laranja"]], .5), cores_aep[["rosa"]])) +scale_y_continuous(labels = scales::number) +theme(axis.ticks.x =element_line(),legend.position ="top",legend.justification ="left") +labs(title ="Detecção dos termos relacionados a LGPD",subtitle ="Considerando menções no pedido e na resposta",x =NULL,y ="Quantidade de pedidos",fill =NULL )```#### Mês a mês **(%)**```{r}#| label: plot-perc-mensalpedidos_busca %>%mutate(deteccao_lgpd =if_else( cita_onde =="Não foram encontradas citações da LGPD", cita_onde, "Citação à LGPD encontrada" ) ) %>%count(data_registro, deteccao_lgpd) %>%group_by(data_registro) %>%mutate(prop = n /sum(n) ) %>%ungroup() %>%filter(deteccao_lgpd !="Não foram encontradas citações da LGPD") %>%ggplot(aes(x = data_registro, y = prop, fill =reorder(deteccao_lgpd, -prop))) +geom_col(show.legend = F) +geom_text(aes(label = scales::percent(prop, accuracy = .1, big.mark =".", decimal.mark =",") ),color = cores_aep[["rosa"]],vjust =-.5,hjust =0,size =2.5,angle =45,fontface ="bold" ) +labs(title ="Taxa de detecção dos termos relacionados a LGPD",subtitle ="Considerando menções no pedido e na resposta",x =NULL,y ="% de pedidos",fill =NULL ) +scale_fill_manual(values = cores_aep[["rosa"]]) +scale_x_date(date_breaks ="6 months", date_labels ="%b-%Y") +scale_y_continuous(labels = scales::percent, limits =c(0, .15)) +theme(axis.ticks.x =element_line())```#### Ano a ano **(%)**```{r}#| label: plot-perc-anualpedidos_busca %>%mutate(deteccao_lgpd =if_else( cita_onde =="Não foram encontradas citações da LGPD", cita_onde, "Citação à LGPD encontrada" ) ) %>%count(ano =year(data_registro), deteccao_lgpd) %>%group_by(ano) %>%mutate(prop = n /sum(n) ) %>%ungroup() %>%filter(deteccao_lgpd !="Não foram encontradas citações da LGPD") %>%ggplot(aes(x = ano, y = prop, fill =reorder(deteccao_lgpd, -prop))) +geom_col(show.legend = F) +geom_text(aes(label = scales::percent(prop, accuracy = .01, big.mark =".", decimal.mark =",") ),color = cores_aep[["rosa"]],vjust =-.5,size =4,fontface ="bold" ) +labs(title ="Taxa de detecção dos termos relacionados a LGPD",subtitle ="Considerando menções no pedido e na resposta",x =NULL,y ="% de pedidos",fill =NULL ) +scale_fill_manual(values = cores_aep[["rosa"]]) +scale_y_continuous(labels = scales::percent, limits =c(0, .05)) +theme(axis.ticks.x =element_line())```#### Total```{r}#| label: plot-onde-usou-lgpdpedidos_busca %>%mutate(deteccao_lgpd =if_else( cita_onde =="Não foram encontradas citações da LGPD", cita_onde, "Citação à LGPD encontrada" ) ) %>%count(deteccao_lgpd) %>%mutate(prop = n /sum(n),ypos =cumsum(prop) -0.5* prop ) %>%ggplot(aes(x ="", y = prop, fill =reorder(deteccao_lgpd, -prop))) +geom_col(width =1, color = cores_tb[["cinza_quase_branco"]]) +coord_polar("y", start =0) +geom_text(aes(y =1-ypos, label =str_glue("{scales::number(n)} pedidos\n{my_lbl(prop)}")),size =4 ) +labs(title ="Detecção dos termos relacionados a LGPD",subtitle ="Considerando menções no pedido e na resposta",x =NULL,y =NULL,fill =NULL ) +scale_fill_manual(values =c(cores_aep[["laranja"]], cores_aep[["rosa"]])) +theme(legend.position ="top",legend.justification ="left",legend.direction ="vertical",axis.text =element_blank(),panel.grid =element_blank() )```:::### Onde a LGPD foi citadaA detecção de termos relacionados à LGPD são divididas em duas partes.De um lado, pedidos de acesso a informação onde o usuário cita a LGPD na própria solicitação são indicativos do interesse da sociedade sobre a legislação e/ou do cuidado dos solicitantes em delimitar o pedido a informações públicas.Por outro lado, pedidos em que o órgão menciona "unilateralmente" a LGPD são indicativos do uso da legislação para restringir a divulgação de informações que o próprio órgão considera que sejam de cunho pessoal. Como a detecção dos termos não é qualitativa, não é possível dizer se o uso da LGPD nas respostas está sendo feito de maneira adequada ou abusiva.::: {.panel-tabset}#### Mês a mês```{r}#| label: plot-onde-usou-lgpd-mensalpedidos_busca %>%count(data_registro, cita_onde) %>%group_by(data_registro) %>%mutate(prop = n /sum(n)) %>%ungroup() %>%filter(cita_onde !="Não foram encontradas citações da LGPD") %>%ggplot(aes(x = data_registro, y = prop, color = cita_onde)) +geom_line(size =1.5) +geom_point(size =1.5,color =alpha("black", .2),data = . %>%filter(cita_onde =="Somente na resposta do órgão público") ) +geom_text(data = . %>%filter(cita_onde =="Somente na resposta do órgão público"),size =2.5,vjust =-1.2,hjust =-.1,angle =45,fontface ="bold",aes(label = scales::percent( prop,accuracy = .1,big.mark =".",decimal.mark ="," ), ) ) +scale_color_manual(values =c( cores_aep[["rosa"]],alpha(cores_aep[["laranja"]], .5) )) +theme(legend.position ="top",legend.justification ="left" ) +labs(title ="Onde os termos relacionados a LGPD foram citados",color =NULL,x ="Mês de registro do pedido",y ="% de pedidos" ) +scale_x_date(date_breaks ="6 months", date_labels ="%b-%Y") +scale_y_continuous(labels = scales::percent, limits =c(0, .15))```#### Ano a ano```{r}#| label: plot-onde-usou-lgpd-anualpedidos_busca %>%count(ano =year(data_registro), cita_onde) %>%group_by(ano) %>%mutate(prop = n /sum(n)) %>%ungroup() %>%filter(cita_onde !="Não foram encontradas citações da LGPD") %>%ggplot(aes(x = ano, y = prop, color = cita_onde)) +geom_line(size =1.5) +geom_point(size =1.5,color =alpha("black", .2),data = . %>%filter(cita_onde =="Somente na resposta do órgão público") ) +geom_text(data = . %>%filter(cita_onde =="Somente na resposta do órgão público"),size =4,vjust =-1.2,hjust =-.1,angle =45,fontface ="bold",aes(label = scales::percent( prop,accuracy = .1,big.mark =".",decimal.mark ="," ), ) ) +scale_color_manual(values =c( cores_aep[["rosa"]],alpha(cores_aep[["laranja"]], .5) )) +theme(legend.position ="top",legend.justification ="left" ) +labs(title ="Onde os termos relacionados a LGPD foram citados",color =NULL,x ="Ano de registro do pedido",y ="% de pedidos" ) +scale_y_continuous(labels = scales::percent, limits =c(0, .05))```#### Total```{r}#| label: plot-onde-usou-lgpd-totalpedidos_busca %>%count(cita_onde) %>%filter(cita_onde !="Não foram encontradas citações da LGPD") %>%mutate(prop = n /sum(n),ypos =cumsum(prop) -0.5* prop ) %>%ggplot(aes(x ="", y = prop, fill = cita_onde)) +geom_col(width =1, color = cores_tb[["cinza_quase_branco"]]) +coord_polar("y", start =0) +geom_text(aes(y =1-ypos, label =str_glue("{scales::number(n)} pedidos\n{my_lbl(prop)}")),size =4 ) +labs(title ="Onde os termos relacionados a LGPD foram citados",fill =NULL,x =NULL,y =NULL ) +scale_fill_manual(values =c(cores_aep[["rosa"]], cores_tb[["azul"]])) +theme(legend.position ="top",legend.justification ="left",legend.direction ="vertical",axis.text =element_blank(),panel.grid =element_blank() )```:::### Assuntos onde os órgãos usaram LGPDConsiderando situações onde os usuários não mencionam LGPD na solicitação. O campo "assuntos" é preenchido pelo usuário a partir de uma lista de assuntos fornecida pela plataforma FalaBr.```{r}#| label: plot-assuntopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(assunto, sort =TRUE) %>%slice_max(order_by = n, n =15) %>%ggplot(aes(x =reorder(assunto, n), y = n)) +geom_col(fill = cores_tb[["azul"]]) +coord_flip() +geom_text(hjust =1,size =3,aes(label = scales::number(n)) ) +labs(title ="Assuntos mais recorrentes onde a LGPD foi mencionada",x =NULL,y ="Quantidade de pedidos" ) +scale_y_continuous(expand =c(0, 0), labels = scales::number)```### Decisão sobre acesso a informação citando a LGPD::: {.column-tabset}::: {.panel-tabset}#### Mês a mês```{r}#| label: funcao-plot-decisao-mesplot_decisao_mes <-function(df, decisao_do_orgao) { df %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(data_registro, decisao, name ="qt_decisao_mes") %>%add_count(data_registro, wt = qt_decisao_mes, name ="qt_mes") %>%mutate(prop = qt_decisao_mes / qt_mes) %>%filter(decisao == decisao_do_orgao) %>%ggplot(aes(y = qt_decisao_mes, x = data_registro, color = decisao)) +geom_line(size =1, show.legend = F) +geom_point(data = . %>%filter(month(data_registro) %in%c(6, 12)),color ="black" ) + ggrepel::geom_text_repel(data = . %>%filter(month(data_registro) %in%c(6, 12)),aes(label = qt_decisao_mes),color ="black",show.legend = F ) +scale_color_manual(values = cores_decisao2[c(1, 3, 4, 6, 7)]) +scale_x_date(date_breaks ="6 months", date_labels ="%b-%Y") +scale_y_continuous(limits =c(0, 100)) +labs(title =paste("Menções à LGPD em classificações de acesso concedido", decisao_do_orgao),y ="Quantidade de pedidos",x ="Data de registro do pedido",color ="Decisão do órgão" )}```::: {.panel-tabset}##### Todos```{r}#| label: plot-decisao-todospedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(data_registro, decisao, name ="qt_decisao_mes") %>%add_count(data_registro, wt = qt_decisao_mes, name ="qt_mes") %>%mutate(prop = qt_decisao_mes / qt_mes) %>%ggplot(aes(y = qt_decisao_mes, x = data_registro, color = decisao)) +geom_line(size =1) +scale_color_manual(values = cores_decisao2[c(1, 3, 4, 6, 7)]) +scale_x_date(date_breaks ="6 months", date_labels ="%b-%Y") +scale_y_continuous(limits =c(0, 100)) +labs(title ="Menções à LGPD e decições do órgão sobre acesso a informação",y ="Quantidade de pedidos",x ="Data de registro do pedido",color ="Decisão do órgão" )```##### Acesso Concedido```{r}#| label: plot-decisao-acesso-concedidoplot_decisao_mes(pedidos_busca, "Acesso Concedido")```##### Acesso Negado```{r}#| label: plot-decisao-acesso-negadoplot_decisao_mes(pedidos_busca, "Acesso Negado")```##### Acesso Parcialmente concedido```{r}#| label: plot-decisao-acesso-parcialmente-concedidoplot_decisao_mes(pedidos_busca,"Acesso Parcialmente Concedido")```##### Órgão não competente```{r}#| label: plot-decisao-orgao-nao-competenteplot_decisao_mes(pedidos_busca, "Somente na resposta do órgão público")```##### Informação inexistente```{r}#| label: plot-decisao-info-inexistenteplot_decisao_mes(pedidos_busca, "Informação inexistente")```:::#### Ano a ano```{r}#| label: funcao-plot-decisao-anoplot_decisao_ano <-function(df, decisao_do_orgao) { df %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(ano =year(data_registro), decisao, name ="qt_decisao_ano") %>%add_count(ano, wt = qt_decisao_ano, name ="qt_ano") %>%mutate(prop = qt_decisao_ano / qt_ano) %>%filter(decisao == decisao_do_orgao) %>%ggplot(aes(y = qt_decisao_ano, x = ano, color = decisao)) +geom_line(size =1, show.legend = F) +geom_point(show.legend = F) + ggrepel::geom_text_repel(aes(label = qt_decisao_ano),color ="black",show.legend = F ) +scale_color_manual(values = cores_decisao2[c(1, 3, 4, 6, 7)]) +scale_y_continuous(limits =c(0, 650)) +labs(title =paste("Menções à LGPD em classificações de", decisao_do_orgao),y ="Quantidade de pedidos",x ="Ano de registro do pedido",color ="Decisão do órgão" )}```::: {.panel-tabset}##### Todos```{r}#| label: plot-decisao-todos-anualpedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(ano =year(data_registro), decisao, name ="qt_decisao_ano") %>%add_count(ano, wt = qt_decisao_ano, name ="qt_ano") %>%mutate(prop = qt_decisao_ano / qt_ano) %>%ggplot(aes(y = qt_decisao_ano, x = ano, color = decisao)) +geom_line(size =1) +scale_color_manual(values = cores_decisao2[c(1, 3, 4, 6, 7)]) +scale_y_continuous(limits =c(0, 650)) +labs(title ="Menções à LGPD e decições do órgão sobre acesso a informação",y ="Quantidade de pedidos",x ="Ano de registro do pedido",color ="Decisão do órgão" )```##### Acesso Concedido```{r}#| label: plot-decisao-acesso-concedido-anualplot_decisao_ano(pedidos_busca, "Acesso Concedido")```##### Acesso Negado```{r}#| label: plot-decisao-acesso-negado-anualplot_decisao_ano(pedidos_busca, "Acesso Negado")```##### Acesso Parcialmente concedido```{r}#| label: plot-decisao-acesso-parcialmente-concedido-anualplot_decisao_ano(pedidos_busca, "Acesso Parcialmente Concedido")```##### Órgão não competente```{r}#| label: plot-decisao-orgao-nao-competente-anualplot_decisao_ano(pedidos_busca, "Órgão não tem competência para responder sobre o assunto")```##### Informação inexistente```{r}#| label: plot-decisao-info-inexistente-anualplot_decisao_ano(pedidos_busca, "Informação Inexistente")```:::::::::### Uso da LGPD por órgão e decisão de acesso```{r}#| label: funcao-plot-orgao-decisaoplot_orgao_decisao <-function(df, decisao_acesso, label_adjust =1) { df %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(decisao, orgao) %>%group_by(decisao) %>%slice_max(order_by = n, n =10) %>%ungroup() %>%filter(decisao == decisao_acesso) %>%ggplot(aes(x = n, y =reorder(orgao, n), fill = decisao, color = decisao)) +geom_col(show.legend =FALSE) +geom_text(aes(label = n), color ="black", hjust = label_adjust) +scale_fill_manual(values = cores_decisao) +scale_color_manual(values = cores_decisao2) +scale_x_continuous(limits =c(0, 310), expand =c(0, 0)) +labs(title = decisao_acesso,y =NULL,x ="Quantidade de pedidos" )}```::: {.column-tabset}::: {.panel-tabset}#### Acesso Concedido```{r}#| label: plot-orgao-decisao-acesso-concedidoplot_orgao_decisao(pedidos_busca, "Acesso Concedido")```#### Acesso Negado```{r}#| label: plot-orgao-decisao-acesso-negadoplot_orgao_decisao(pedidos_busca, "Acesso Negado")```#### Acesso Parcialmente Concedido```{r}#| label: plot-orgao-decisao-acesso-parcialmente-concedidoplot_orgao_decisao(pedidos_busca, "Acesso Parcialmente Concedido")```#### Órgão não competente```{r}#| label: plot-orgao-decisao-orgao-incompetenteplot_orgao_decisao(pedidos_busca, "Órgão não tem competência para responder sobre o assunto",label_adjust =0)```#### Informação Inexistente```{r}#| label: plot-orgao-decisao-info-inexistenteplot_orgao_decisao(pedidos_busca, "Informação Inexistente", label_adjust =0)```::::::### Núvens de palavras```{r}#| label: ids-para-wordcloudsource(here("src/05-funcao-limpando-texto.R"), encoding ="utf8")ids_ms <- pedidos_busca %>%filter(orgao =="MS – Ministério da Saúde") %>%pull(id_pedido)ids_inss <- pedidos_busca %>%filter(str_detect(orgao, "^INSS")) %>%pull(id_pedido)ids_incra <- pedidos_busca %>%filter(str_detect(orgao, "^INCRA")) %>%pull(id_pedido)ids_imbel <- pedidos_busca %>%filter(str_detect(orgao, "^IMBEL")) %>%pull(id_pedido)ids_gsi <- pedidos_busca %>%filter(str_detect(orgao, "^GSI")) %>%pull(id_pedido)ids_inep <- pedidos_busca %>%filter(str_detect(orgao, "^INEP")) %>%pull(id_pedido)```#### MS – Ministério da Saúde::: {.panel-tabset}##### Acesso Negado```{r}#| label: plot-wordcloud-ms-acesso-negadopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_ms) %>%filter(decisao =="Acesso Negado") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["rosa"]]))```##### Acesso Concedido```{r}#| label: plot-wordcloud-ms-acesso-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_ms) %>%filter(decisao =="Acesso Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_tb[["azul"]]))```##### Acesso Parcialmente Concedido```{r}#| label: plot-wordcloud-ms-acesso-parcialmente-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_ms) %>%filter(decisao =="Acesso Parcialmente Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["laranja"]]))```:::#### GSI-PR - Gabinete de Segurança Institucional da República::: {.panel-tabset}##### Acesso Negado```{r}#| label: plot-wordcloud-gsi-acesso-negadopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_gsi) %>%filter(decisao =="Acesso Negado") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["rosa"]]))```##### Acesso Concedido```{r}#| label: plot-wordcloud-gsi-acesso-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_gsi) %>%filter(decisao =="Acesso Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_tb[["azul"]]))```##### Acesso Parcialmente Concedido```{r}#| label: plot-wordcloud-gsi-acesso-parcialmente-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_gsi) %>%filter(decisao =="Acesso Parcialmente Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["laranja"]]))```:::#### INSS – Instituto Nacional do Seguro Social::: {.panel-tabset}##### Acesso Negado```{r}#| label: plot-wordcloud-inss-acesso-negadopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_inss) %>%filter(decisao =="Acesso Negado") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["rosa"]]))```##### Acesso Concedido```{r}#| label: plot-wordcloud-inss-acesso-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_inss) %>%filter(decisao =="Acesso Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_tb[["azul"]]))```##### Acesso Parcialmente Concedido```{r}#| label: plot-wordcloud-inss-acesso-parcialmente-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_inss) %>%filter(decisao =="Acesso Parcialmente Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["laranja"]]))```:::#### INCRA – Instituto Nacional de Colonização e Reforma Agrária::: {.panel-tabset}##### Acesso Negado```{r}#| label: plot-wordcloud-incra-acesso-negadopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_incra) %>%filter(decisao =="Acesso Negado") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["rosa"]]))```##### Acesso Concedido```{r}#| label: plot-wordcloud-incra-acesso-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_incra) %>%filter(decisao =="Acesso Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_tb[["azul"]]))```##### Acesso Parcialmente Concedido```{r}#| label: plot-wordcloud-incra-acesso-parcialmente-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_incra) %>%filter(decisao =="Acesso Parcialmente Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["laranja"]]))```:::#### IMBEL – Indústria de Material Bélico do Brasil::: {.panel-tabset}##### Acesso Negado```{r}#| label: plot-wordcloud-imbel-acesso-negadopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_imbel) %>%filter(decisao =="Acesso Negado") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["rosa"]]))```##### Acesso Concedido```{r}#| label: plot-wordcloud-imbel-acesso-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_imbel) %>%filter(decisao =="Acesso Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_tb[["azul"]]))```##### Acesso Parcialmente Concedido```{r}#| label: plot-wordcloud-imbel-acesso-parcialmente-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_imbel) %>%filter(decisao =="Acesso Parcialmente Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["laranja"]]))```:::#### INEP – Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira::: {.panel-tabset}##### Acesso Negado```{r}#| label: plot-wordcloud-inep-acesso-negadopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_inep) %>%filter(decisao =="Acesso Negado") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["rosa"]]))```##### Acesso Concedido```{r}#| label: plot-wordcloud-inep-acesso-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_inep) %>%filter(decisao =="Acesso Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_tb[["azul"]]))```##### Acesso Parcialmente Concedido```{r}#| label: plot-wordcloud-inep-acesso-parcialmente-concedidopedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%filter(id_pedido %in% ids_inep) %>%filter(decisao =="Acesso Parcialmente Concedido") %>%select(id_pedido, resposta_pedido) %>%unnest_tokens(word, resposta_pedido) %>%anti_join(stopwords) %>%count(word, sort =TRUE) %>%with(wordcloud(word, n, max.words =350, color = cores_aep[["laranja"]]))```:::### Recursos impetrados em respostas que citam LGPD```{r}pedidos_busca %>%filter(cita_onde =="Somente na resposta do órgão público") %>%count(ano =year(data_registro), possui_recurso) %>%complete(ano, possui_recurso, fill =list(n =0)) %>%ggplot(aes(x = ano, y = n, fill = possui_recurso)) +geom_col(position ="dodge2") +geom_text(data = . %>%mutate(n =if_else(!possui_recurso, NA_integer_, n)),aes(label = n, group = possui_recurso),position =position_dodge(width = .8),vjust =-.1,color = cores_aep[["rosa"]] ) +scale_fill_manual(values =c(cores_aep[["laranja"]], cores_aep[["rosa"]]),labels =c("Não houve recurso", "Houve recurso") ) +labs(title ="Recursos impetrados contra decisões de acesso a informação\nquando órgão menciona LGPD na resposta",x ="Ano",y ="Quantidade de pedidos",fill =NULL )```