Neste laboratório realizaremos uma análise exploratória sobre as despesas com a atividade parlamentar de deputados federais da atual legislatura (2015-2017), respondendo uma série de perguntas sobre estes dados.
A CEAP (Cota para o Exercício da Atividade Parlamentar) é uma cota única mensal destinada a custear os gastos dos deputados exclusivamente vinculados ao exercício da atividade parlamentar. Exemplos de despesa desse tipo são: passagens aéreas, telefonia, serviços postais, aluguel de veículos, embarcações, aeronaves, manutenção de escritórios de apoio, assinatura de publicações, alimentação, hospedagem, táxi, pedágio, estacionamento e passagens terrestres.
Os dados foram coletados do site de transparência da Câmara, tratados, e podem ser baixados neste link.
observations <- read.csv("~/Documentos/AD2/dadosCEAP.csv", stringsAsFactors=FALSE)
observations$valorGlosa <- as.numeric(sub(",", ".", observations$valorGlosa, fixed = TRUE))
Primeiro vamos agrupar as observações pela sigla do partido. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo da frequência de cada partido nas observações.
partiesFrequency <- observations %>%
group_by(sgPartido) %>%
summarise(count = n()) %>%
filter(!is.na(sgPartido))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = partiesFrequency, type="bar", x = ~count, y = ~sgPartido, orientation="h") %>%
layout(title="Frequência de uso da CEAP por Partido", margin=list(l=100),
xaxis=list(title="Frequência de uso da CEAP"),
yaxis=list(title="Sigla do Partido", categoryarray=arrange(partiesFrequency, count)$sgPartido))
| Sigla do Partido | Quantidade de Observações | Sigla do Partido | Quantidade de Observações |
|---|---|---|---|
| PT | 129.587 | PTdoB | 50 |
| PMDB | 112.875 | PMN | 61 |
| PSDB | 98.241 | PRTB | 253 |
| PP | 89.919 | PRP | 551 |
Primeiro vamos agrupar as observações pela sigla do partido. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo da soma dos valores debitados na cota parlamentar.
partiesCost <- observations %>%
group_by(sgPartido) %>%
summarise(valorGasto = sum(valorLíquido)) %>%
filter(!is.na(sgPartido), !is.na(valorGasto))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = partiesCost, type="bar", x = ~valorGasto, y = ~sgPartido, orientation="h") %>%
layout(title="Valor gasto da CEAP por Partido", margin=list(l=100),
xaxis=list(title="Valor gasto em R$"),
yaxis=list(title="Sigla do Partido", categoryarray=arrange(partiesCost, valorGasto)$sgPartido))
| Sigla do Partido | Valor gasto em R$ | Sigla do Partido | Valor gasto em R$ |
|---|---|---|---|
| PMDB | 71.502.438,62 | PTdoB | 15.596,45 |
| PT | 67.878.749,33 | PMN | 84.402,11 |
| PSDB | 52.649.824,02 | PRTB | 167.413,30 |
| PP | 52.047.435,13 | PRP | 7.604.934,50 |
Primeiro vamos agrupar as observações pelo tipo de despesa. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo da frequência de cada tipo de despesa.
expenseTypeFrequency <- observations %>%
group_by(tipoDespesa) %>%
summarise(count = n()) %>%
filter(!is.na(tipoDespesa))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = expenseTypeFrequency, type="bar", x = ~count, y = ~tipoDespesa, orientation="h") %>%
layout(title="Frequência do tipo de despesa da CEAP", margin=list(l=270),
xaxis=list(title="Frequência"),
yaxis=list(title="Tipo de despesa",
categoryarray=arrange(expenseTypeFrequency, count)$tipoDespesa))
| Tipo de Despesa | Frequência |
|---|---|
| Bilhete Aéreo | 300.185 |
| Combustíveis e Lubrificantes | 196.858 |
| Telefonia | 89.322 |
| Serviços Postais | 79.905 |
Primeiro vamos agrupar as observações pelo tipo de despesa. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo soma dos valores de gasto da CEAP para cada tipo de despesa.
expenseTypeCost <- observations %>%
group_by(tipoDespesa) %>%
summarise(valorGasto = sum(valorLíquido)) %>%
filter(!is.na(tipoDespesa), !is.na(valorGasto))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = expenseTypeCost, type="bar", x = ~valorGasto, y = ~tipoDespesa, orientation="h") %>%
layout(title="Gastos por tipo de despesa CEAP", margin=list(l=250),
xaxis=list(title="Valor gasto em R$"),
yaxis=list(title="Tipo de despesa",
categoryarray=arrange(expenseTypeCost, valorGasto)$tipoDespesa))
| Tipo de Despesa | Valor Gasto em R$ |
|---|---|
| Divulgação Atividade Parlamentar | 136.771.779,60 |
| Bilhete Aéreo | 131.029.914,20 |
| Aluguel de Veículos | 69.972.777,40 |
| Escritório Parlamentar | 63.332.056,50 |
Primeiro vamos agrupar as observações pelo estado do deputado que submeteu o documento. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo da quantidade de ocorrência de cada estado nas observações.
freqByState <- observations %>%
group_by(sgUF) %>%
summarise(count = n()) %>%
filter(!is.na(sgUF))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = freqByState, type="bar", x = ~count, y = ~sgUF, orientation="h") %>%
layout(title="Frequência de uso da CEAP por Estado",
xaxis=list(title="Frequência"),
yaxis=list(title="Sigla do estado",
categoryarray=arrange(freqByState, count)$sgUF))
| Estado | Frequência de uso | Estado | Frequência de uso |
|---|---|---|---|
| São Paulo | 154.289 | Distrito Federal | 6179 |
| Minas Gerais | 120.389 | Amapá | 8561 |
| Rio de Janeiro | 85.180 | Amazonas | 9138 |
| Rio Grande do Sul | 81.343 | Roraima | 9452 |
Primeiro vamos agrupar as observações pelo estado do deputado que submeteu o documento. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo da soma dos valores debitados na CEAP por estado.
costByState <- observations %>%
group_by(sgUF) %>%
summarise(valorGasto = sum(valorLíquido)) %>%
filter(!is.na(sgUF), !is.na(valorGasto))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = costByState, type="bar", x = ~valorGasto, y = ~sgUF, orientation="h") %>%
layout(title="Despesa CEAP por Estado",
xaxis=list(title="Valor gasto em R$"),
yaxis=list(title="Sigla do estado",
categoryarray=arrange(costByState, valorGasto)$sgUF))
| Estado | Valor gasto em R$ | Estado | Valor gasto em R$ |
|---|---|---|---|
| São Paulo | 72.033.580,00 | Distrito Federal | 6.890.112,00 |
| Minas Gerais | 57.908.980,00 | Mato Grosso | 9.151.821,00 |
| Rio de Janeiro | 46.614.650,00 | Amazonas | 9.156.178,00 |
| Bahia | 44.717.880,00 | Sergipe | 9.425.833,00 |
Pelo fato dos estados mais populosos possuirem mais deputados, então, é razoável afirmar que os estados com maior população utilizam mais a CEAP tanto em valor como em frequência.
Os 4 estados mais populosos do Brasil são: São Paulo, Minas Gerais, Rio de Janeiro e Bahia. Como tomamos como verdadeira a afirmação de que os estados com maior população são os que mais gastam, então, a afirmação contra-positiva também deve ser verdadeira, os estados que menos gastam a CEAP, em valor e frequência, possuem uma população pequena.
Os 4 estados com menor população no Brasil são: Roraima, Amapá, Acre e Tocantins, mas não constam na lista de estados que menos gastam a CEAP. Isto se dá pelo fato de que os estados que possuem uma população pequena tem um número igual de deputados, 8, logo a diferença entre os gastos desses estados é influenciada por outras variáveis.
Apesar de não conhecermos, ainda, essas variáveis influenciadores, intuitivamente podemos afirmar que uma influência importante é a distância do Distrito Federal até o estado do Deputado.
No gráfico é possível observar que a diferença dos valores entre os estados com menor população e os estados que menos gastam é pequena, em média aproximada R$ 1.500.000,00, excluindo o Distrito Federal, pelo fato de ser um caso particular.
Assim, nossa desconfiança de que os estados com maior população utilizam mais a CEAP e os estados com menor população utilizam menos a CEAP parece ser razoavelmente correta.
Porque o Distrito Federal é o estado que menos usa e menos gasta a CEAP?
Primeiro vamos agrupar as observações pelo nome do parlamentar que submeteu o documento. Após o agrupamento, vamos realizar um resumo nas observações para o cálculo da soma dos valores debitados na CEAP por parlamentar
costByParliamentary <- observations %>%
group_by(nomeParlamentar) %>%
summarise(valorGasto = sum(valorLíquido)) %>%
filter(!is.na(nomeParlamentar), !is.na(valorGasto))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = costByParliamentary, type="bar", x = ~valorGasto, y = ~nomeParlamentar, orientation="h") %>%
layout(title="Despesa CEAP por Parlamentar", margin=list(l=270),
xaxis=list(title="Valor gasto em R$"),
yaxis=list(title="Nome do Parlamentar",
categoryarray=arrange(costByParliamentary, valorGasto)$nomeParlamentar))
Pelo fato de existirem muitas observações de parlamentares, prejudicando a visualização, vamos pegar os 10 parlamentares que mais gastam e os 10 parlamentares que menos gastam.
size <- length(costByParliamentary$nomeParlamentar)
mostExpensiveParliamentary <- arrange(costByParliamentary, -valorGasto)[c(1:10), ]
lessExpensiveParliamentary <- arrange(costByParliamentary, valorGasto)[c(1:10), ]
p1 <- plot_ly(data = mostExpensiveParliamentary, type="bar", x = ~valorGasto, y = ~nomeParlamentar, orientation="h", name="mais gastam") %>%
layout(yaxis=list(title="Nome do Parlamentar", categoryarray=arrange(mostExpensiveParliamentary, valorGasto)$nomeParlamentar))
p2 <- plot_ly(data = lessExpensiveParliamentary, type="bar", x = ~valorGasto, y = ~nomeParlamentar, orientation="h", name="menos gastam") %>%
layout(xaxis=list(title="Valor gasto"),
yaxis=list(title="Nome do Parlamentar", categoryarray=arrange(lessExpensiveParliamentary, valorGasto)$nomeParlamentar))
subplot(p1, p2, nrows=2, shareY=TRUE) %>%
layout(title="Despesa CEAP por Parlamentar",
margin=list(l=200),
legend=list(x=0.05, y=0.3))
| Parlamentar | Valor gasto em R$ | Parlamentar | Valor gasto em R$ |
|---|---|---|---|
| Edio Lopes | 1.485.079,00 | João Caldas Andrade | -1.791,51 |
| Hiran Gonçalves | 1.430.398,00 | Eliseu Padilha | -1.487,52 |
| Jhonatas de Jesus | 1.428.402,00 | Rui Costa | -376,99 |
| Vinicius Gurgel | 1.423.538,00 | Antônio Andrade | -167,37 |
Primeiro vamos selecionar as observações onde o tipo de documento é o tipo 2 (indicando gasto no exterior). Após a seleção é realizado o agrupamento por estado e o resumo que calcula o somatório do valor gasto por estado.
costStateExterior <- observations[which(observations$tipoDocumento == 2), ] %>%
group_by(sgUF) %>%
summarise(valorGasto = sum(valorLíquido)) %>%
filter(!is.na(sgUF), !is.na(valorGasto))
Agora vamos construir o gráfico com o resultado do agrupamento e resumo.
plot_ly(data = costStateExterior, type="bar", x = ~valorGasto, y = ~sgUF, orientation="h") %>%
layout(title="Despesa CEAP no exterior por Estado",
xaxis=list(title="Valor gasto em R$"),
yaxis=list(title="Sigla do estado",
categoryarray=arrange(costStateExterior, valorGasto)$sgUF))
| Estado | Valor gasto em R$ | Estado | Valor gasto em R$ |
|---|---|---|---|
| São Paulo | 102.333,30 | Maranhão | 40,99 |
| Minas Gerais | 79.767,77 | Paraíba | 2.288,29 |
| Pernambuco | 70.915,94 | Pará | 5.628,88 |
| Roraima | 59.702,72 | Sergipe | 6.839,79 |
Primeiro vamos ler os dados e realizar um adequamento da data de emissão para posterior processamento.
monthStateLimit <- read.csv("~/Documentos/AD2/limiteMensalCEAP.csv", stringsAsFactors=FALSE)
cpObservations <- observations
cpObservations['dataEmissao'] <- format(as.Date(cpObservations$dataEmissao), "%b %Y")
Após a leitura vamos agrupar as observações pelo nome do parlamentar, data de emissão e estado, resumindo o valor líquido de cada documento como o total gasto por cada parlamentar em cada mês observado. Depois dessa primeira etapa de agrupamento é criada uma nova coluna onde indica se o deputado ultrapassou o limite para aquele mês observado, com isso podemos resumir novamente o dataframe agrupando com o nome do parlamentar e a quantidade de vezes que ele ultrapassou o limite imposto para a CEAP no mês.
politicalFreqMonthExceed <- cpObservations %>%
group_by(nomeParlamentar, dataEmissao, sgUF) %>%
summarise(valorGasto = sum(valorLíquido)) %>%
filter(!is.na(nomeParlamentar), !is.na(dataEmissao), !is.na(valorGasto)) %>%
mutate(exceed = as.numeric(valorGasto > monthStateLimit['limite_mensal'][which(monthStateLimit$UF==sgUF), ][1])) %>%
group_by(nomeParlamentar) %>%
summarise(freqHighCost = sum(exceed)) %>%
filter(!is.na(nomeParlamentar), !is.na(freqHighCost))
Agora vamos construir o gráfico.
plot_ly(data = politicalFreqMonthExceed, type="bar", x = ~freqHighCost, y = ~nomeParlamentar, orientation="h") %>%
layout(title="Frequência de gasto mensal da CEAP maior que o limite imposto",
margin=list(l=200),
xaxis=list(title="Frequência"),
yaxis=list(title="Nome do Parlamentar",
categoryarray=arrange(politicalFreqMonthExceed, freqHighCost)$nomeParlamentar))
Novamente temos o problema do resumo possuir muitas observações, então, vamos selecionar os 15 deputados que mais ultrapassaram o limite de gasto imposto.
top10 <- arrange(politicalFreqMonthExceed, -freqHighCost)[c(1:15), ]
plot_ly(data=top10, type="bar", x = ~freqHighCost, y = ~nomeParlamentar, orientation="h") %>%
layout(title="Frequência de gasto mensal da CEAP maior que o limite imposto",
margin=list(l=200),
xaxis=list(title="Frequência"),
yaxis=list(title="Nome do Parlamentar",
categoryarray=arrange(top10, freqHighCost)$nomeParlamentar))
| Nome do Parlamentar | Frequência |
|---|---|
| Eduardo Barbosa | 21 |
| Rômulo Gouveia | 20 |
| Vanderlei Macris | 19 |
| Ságuas Moraes | 19 |