Capítulo 3 CRP - Certificado de Regularidade Previdenciária

Este capítulo objetiva mostrar algumas possibilidades de análise dos dados do CRP

A primeira coisa a ser feita, como sempre, é realizar a importação e o pré-processamento dos dados:

crp <- read_excel("dados/5-validade-crp_atualizacao_de_ago_set_2020_extracao_em_2020-10-06t18_25_59.xlsx")

head(crp) %>% 
  qflextable()

UF

ENTE

NR CRP

DATA DE EMISSÃO

DATA DE VALIDADE

CRP JUDICIAL

TIPO DE REGIME

SITUAÇÃO DO CRP

AC

Acrelândia

980643-185126

17/04/2020

14/10/2020

NÃO

RGPS

VÁLIDO

AC

Assis Brasil

980157-186981

24/06/2020

21/12/2020

NÃO

RGPS

VÁLIDO

AC

Brasiléia

980105-185377

28/04/2020

25/10/2020

NÃO

RGPS

VÁLIDO

AC

Bujari

980645-188197

15/08/2020

11/02/2021

NÃO

RGPS

VÁLIDO

AC

Capixaba

980647-188445

19/08/2020

15/02/2021

NÃO

RGPS

VÁLIDO

AC

Cruzeiro do Sul

980107-187340

07/07/2020

03/01/2021

NÃO

RGPS

VÁLIDO

O conjunto de dados contempla tanto os entes vinculados ao RGPS quanto ao RPPS e fornece algumas informações sobre o CRP.

Para facilitar a análise posterior dos dados as colunas serão renomeadas e as variáveis indicativas de datas serão convertidas para um formato de data.

# Alterar nomes das variáveis
crp <- crp %>%
        rename(uf = UF,
               ente = ENTE,
               num_crp = `NR CRP`,
               dt_emissao = `DATA DE EMISSÃO`,
               dt_validade = `DATA DE VALIDADE`,
               judicial = `CRP JUDICIAL`,
               tipo_regime = `TIPO DE REGIME`,
               situacao = `SITUAÇÃO DO CRP`)

# Converter datas para o formato de datas
crp <- crp %>% 
        mutate(dt_emissao  = dmy(dt_emissao),
               dt_validade = dmy(dt_validade))

head(crp) %>% 
  qflextable()

uf

ente

num_crp

dt_emissao

dt_validade

judicial

tipo_regime

situacao

AC

Acrelândia

980643-185126

2020-04-17

2020-10-14

NÃO

RGPS

VÁLIDO

AC

Assis Brasil

980157-186981

2020-06-24

2020-12-21

NÃO

RGPS

VÁLIDO

AC

Brasiléia

980105-185377

2020-04-28

2020-10-25

NÃO

RGPS

VÁLIDO

AC

Bujari

980645-188197

2020-08-15

2021-02-11

NÃO

RGPS

VÁLIDO

AC

Capixaba

980647-188445

2020-08-19

2021-02-15

NÃO

RGPS

VÁLIDO

AC

Cruzeiro do Sul

980107-187340

2020-07-07

2021-01-03

NÃO

RGPS

VÁLIDO

Como é possível verificar, a base de dados possui 8 variáveis. Embora os nomes das varáveis dêem uma boa indicação de seu conteúdo apresenta-se, a seguir, a descrição do conteúdo de cada coluna.

variável descrição
uf sigla da unidade da federação na qual o RPPS está localizado
ente nome do Ente (Estados, Municipios ou Distrito Federal)
num_crp número do CRP
dt_emissao data de emissão do CRP
dt_validade data de validade do CRP (o CRP tem validade de 6 meses a partir de sua emissão)
judicial indica se o CRP foi obtido por via judicial - SIM, NÂO
tipo_regime tipo de regime previdenciário ao qual o Ente está vinculado - RGPS ou RPPS
situacao situação do CRP - VÁLIDO ou VENCIDO

Com essa base de dados é possível identificar a situação do Ente com relação à validade do CRP e também calcular algumas estatísticas.

3.1 Análise exploratória preliminar

Pode-se começar por verificar quais valores as variáveis judicial, tipo_regime e situacao podem assumir.

crp %>%
  select(tipo_regime, situacao, judicial) %>%
  map(unique)
$tipo_regime
[1] "RGPS"             "RPPS"             "RPPS em extincao"

$situacao
[1] "VÁLIDO"  "VENCIDO"

$judicial
[1] "NÃO" "SIM"

A saída indica os possíveis valores de cada uma das três variáveis.

Um ponto importante é que a classificação do CRP em VÁLIDO ou VENCIDO é feita tomando-se como referência a data de extração dos dados no sistema CADPREV. Os dados do CRP ora em análise foram extraídos em 2020-10-06 conforme indicado no nome do arquivo. Assim, se a data de validade do CRP é posterior ou igual a essa data, ele é classificado como VÁLIDO caso contrário como VENCIDO.

No Capítulo 1 foi apresentado o quantitativo dos Entes vinculados ao RGPS e ao RPPS. Talvez seja interessante verificar se, proporcionalmente, tem-se mais CRP vencidos no RGPS ou no RPPS.

Antes de prosseguir, vale a pena verificar a distribuição dos Entes entre os regimes e comparar com o que foi obtido no Capítulo 1:

crp %>%
  count(tipo_regime) %>%
  mutate(`%` =  round(n / sum(n) * 100, 2)) %>% 
  qflextable()

tipo_regime

n

%

RGPS

3.418

61,13

RPPS

2.152

38,49

RPPS em extincao

21

0,38

Neste arquivo, tem-se 3.418 Entes vinculados ao RGPS o que confere com o valor obtido no Capítulo 1, Mas o quantitativo de Entes vinculados ao RPPS diverge um pouco: 2.152 contra 2.156 do Capítulo 1. Tem-se aqui 4 RPPS a menos. O quantitativo de RPPS em extinção também confere.

A seguir calcula-se o quantitativo de entes vinculados a cada regime (n), a quantidade de entes com CRP vencido em cada regime (n_vencido) e o percentual (%_vencido):

crp %>% 
  group_by(tipo_regime) %>% 
  summarise(n = n(),
            n_vencido = sum(ifelse(situacao == "VENCIDO", 1, 0)),
            `%_vencido` = round( n_vencido / n * 100, 2)) %>% 
  qflextable()

tipo_regime

n

n_vencido

%_vencido

RGPS

3.418

726

21

RPPS

2.152

663

31

RPPS em extincao

21

7

33

O resultado indica que o percentual de entes com CRP vencido é elevado em ambos os regimes, mas o maior percentual está no RPPS (30,81%).

Uma checagem sempre oportuna é verificar se não existe duplicidade de CRP:

any(duplicated(crp$num_crp))
[1] FALSE

O resultado indica não existir CRP duplicado na base. Em extrações mais antigas desta base de dados essa situação ocorria.

Uma coisa que se sabe em relação a esta base de dados é que, se a data de validade do CRP coincide com a data de extração dos dados, o CRP é considerado vencido o que não é correto. A conferência pode ser feita da seguinte forma:

dt_extracao_dados <- "2020-10-06"

crp %>% 
  filter(dt_validade == ymd(dt_extracao_dados)) 
# A tibble: 0 x 8
# ... with 8 variables: uf <chr>, ente <chr>, num_crp <chr>, dt_emissao <date>,
#   dt_validade <date>, judicial <chr>, tipo_regime <chr>, situacao <chr>

Nenhuma data de validade coincidiu com a data de extração da base de dados que, como já mencionado acima, deu-se em 06/10/2020.

3.2 Análise dos RPPS

Nesta seção as análises serão restritas aos RPPS ativos, sendo então necessário excluir da base de dados os registros relativos ao RGPS e aos RPPS em extinção.

crp_rpps <- crp %>% 
              filter(tipo_regime == "RPPS")

Agora é possível responder a algumas questões: por exemplo: quantos entes com CRP vencido existe em cada UF? Quanto esse quantitativo representa do total de RPPS existentes na UF?

crp_rpps %>%
  group_by(uf) %>%
  summarise(n_rpps = n(),
            n_crp_vencido = sum(situacao == "VENCIDO"),
            `%_crp_vencido` = round(n_crp_vencido / n_rpps * 100, 2)) %>%
  arrange(desc(`%_crp_vencido`)) %>% 
  qflextable()

uf

n_rpps

n_crp_vencido

%_crp_vencido

PA

28

17

61

RN

41

22

54

AL

74

39

53

RR

2

1

50

BA

38

18

47

GO

171

81

47

RJ

79

37

47

TO

30

12

40

PI

71

28

39

MG

221

84

38

MA

47

16

34

PB

71

24

34

SP

222

73

33

CE

65

19

29

AP

4

1

25

PR

179

41

23

AM

27

6

22

PE

149

33

22

MT

107

23

22

MS

52

11

21

RS

332

57

17

ES

35

6

17

SC

70

10

14

RO

30

4

13

AC

2

0

0

DF

1

0

0

SE

4

0

0

Em boa parte dos estados tem-se um elevado percentual de entes com o CRP vencido.

Também seria possível incluir na tabela acima a quantidade de entes com CRP obtido pela via judicial e o percentual em relação ao total de entes na UF.

crp_rpps %>%
  group_by(uf) %>%
  summarise(n_rpps = n(),
            n_crp_vencido = sum(situacao == "VENCIDO"),
            `%_crp_vencido` = round(n_crp_vencido / n_rpps * 100, 2),
            n_crp_judicial = sum(judicial == "SIM"),
            `%_crp_judicial` = round(n_crp_judicial / n_rpps * 100, 2)) %>%
  arrange(desc(`%_crp_judicial`)) %>% 
  qflextable()

uf

n_rpps

n_crp_vencido

%_crp_vencido

n_crp_judicial

%_crp_judicial

DF

1

0

0

1

100,0

SE

4

0

0

4

100,0

AM

27

6

22

23

85,2

MA

47

16

34

39

83,0

PE

149

33

22

120

80,5

AP

4

1

25

3

75,0

PB

71

24

34

48

67,6

BA

38

18

47

24

63,2

AL

74

39

53

43

58,1

CE

65

19

29

36

55,4

AC

2

0

0

1

50,0

RR

2

1

50

1

50,0

RO

30

4

13

11

36,7

PA

28

17

61

10

35,7

RJ

79

37

47

24

30,4

RN

41

22

54

12

29,3

MG

221

84

38

53

24,0

PI

71

28

39

16

22,5

GO

171

81

47

35

20,5

SP

222

73

33

41

18,5

MS

52

11

21

9

17,3

ES

35

6

17

6

17,1

TO

30

12

40

4

13,3

SC

70

10

14

9

12,9

PR

179

41

23

21

11,7

RS

332

57

17

37

11,1

MT

107

23

22

4

3,7

Na tabela acima apresenta-se apenas um resumo quantitativo mostrando a quantidade de entes com CRP vencido e judicial.

Caso haja a necessidade de identificar os Entes em uma Unidade da Federação com o CRP vencido ou com CRP judicial, basta aplicar um filtro. Exemplo: RPPS do ERJ com CRP vencido:

crp_rpps %>%
  filter(uf == "RJ", situacao == "VENCIDO") %>%
  select(ente, num_crp, dt_emissao, dt_validade) %>%
  arrange(desc(dt_validade)) %>% 
  qflextable()

ente

num_crp

dt_emissao

dt_validade

Resende

985883-184152

2020-03-29

2020-09-25

Cantagalo

985821-184096

2020-03-24

2020-09-20

Cardoso Moreira

982915-184095

2020-03-24

2020-09-20

Governo do Estado do Rio de Janeiro

953001-183938

2020-03-16

2020-09-12

São Pedro da Aldeia

985903-183455

2020-02-28

2020-08-26

Pinheiral

980778-182628

2020-01-30

2020-07-28

Cabo Frio

985813-181873

2019-12-27

2020-06-24

Rio das Ostras

982921-181607

2019-12-16

2020-06-13

Quissamã

986007-180222

2019-10-25

2020-04-22

Saquarema

985909-179861

2019-10-15

2020-04-12

Campos dos Goytacazes

985819-179807

2019-10-09

2020-04-06

São João de Meriti

985901-173895

2019-03-28

2019-09-24

Sapucaia

985907-172358

2019-01-30

2019-07-29

Rio Claro

985887-171829

2019-01-07

2019-07-06

Carapebus

980772-167992

2018-08-28

2019-02-24

Areal

982925-167136

2018-07-25

2019-01-21

Silva Jardim

985911-151596

2017-03-20

2017-09-16

Italva

985929-148284

2016-11-03

2017-05-02

Santo Antônio de Pádua

985893-146812

2016-09-19

2017-03-18

Queimados

982911-143579

2016-07-26

2017-01-22

Paraíba do Sul

985873-138490

2016-01-13

2016-07-11

Duque de Caxias

985833-138140

2015-12-30

2016-06-27

Mendes

985855-135974

2015-10-21

2016-04-18

Laje do Muriaé

985845-134921

2015-09-10

2016-03-08

Armação dos Búzios

980770-134445

2015-08-22

2016-02-18

Mesquita

981116-133965

2015-07-28

2016-01-24

São Sebastião do Alto

985905-133815

2015-07-20

2016-01-16

Japeri

982913-130551

2015-03-30

2015-09-26

Cambuci

985817-129368

2015-02-09

2015-08-08

Quatis

982923-125256

2014-08-25

2015-02-21

Itaperuna

985843-124648

2014-07-28

2015-01-24

Rio Bonito

985885-117820

2013-11-05

2014-05-04

Belford Roxo

982909-99748

2011-09-27

2012-03-25

Itaocara

985841-88200

2010-07-28

2011-01-24

Iguaba Grande

980774-47771

2007-05-18

2007-11-14

Magé

985849-30352

2005-03-02

2005-05-01

Araruama

985803-28572

2004-12-23

2005-02-21

Outro exemplo: RPPS do ERJ com CRP válido mas judicial:

crp_rpps %>%
  filter(uf == "RJ", judicial == "SIM", situacao == "VÁLIDO") %>%
  select(ente, num_crp, dt_emissao, dt_validade) %>%
  arrange(desc(dt_validade)) %>% 
  qflextable()

ente

num_crp

dt_emissao

dt_validade

Teresópolis

985915-189024

2020-09-11

2021-03-10

Miracema

985859-188827

2020-09-02

2021-03-01

Angra dos Reis

985801-188695

2020-08-30

2021-02-26

São Gonçalo

985897-188148

2020-08-12

2021-02-08

Itaguaí

985839-187743

2020-07-29

2021-01-25

Rio de Janeiro

986001-187398

2020-07-09

2021-01-05

Aperibé

982919-187295

2020-07-07

2021-01-03

Nilópolis

985863-186855

2020-06-18

2020-12-15

Volta Redonda

985925-186497

2020-06-06

2020-12-03

Barra Mansa

985807-186110

2020-05-26

2020-11-22

Seropédica

980786-186140

2020-05-26

2020-11-22

Barra do Piraí

985805-185508

2020-05-03

2020-10-30

Itaboraí

985837-185370

2020-04-28

2020-10-25

São Fidélis

985895-185382

2020-04-28

2020-10-25

Cachoeiras de Macacu

985815-185169

2020-04-19

2020-10-16

Mangaratiba

985851-185064

2020-04-15

2020-10-12

Para fechar esta seção, pode-se verificar se existe alguma relação entre as variáveis situacao e judicial. Sendo estas variáveis qualitativas uma tabela de contingência pode ajudar nessa investigação:

with(crp_rpps,
     table(judicial, situacao)) 
        situacao
judicial VÁLIDO VENCIDO
     NÃO    970     547
     SIM    519     116
with(crp_rpps,
     table(judicial, situacao)) %>% 
mosaicplot(color = c("lightblue", "lightgreen"))  

Para visualizar a tabela de contingência elaborada acima, apresenta-se um gráfico de mosaico, que confirma que a judicialização é uma estratégia que até o momento parece ser efetiva para evitar o CRP vencido.

A proporção de CRP vencidos (em verde) é maior (praticamente o dobro) entre os não judicializados que nos judicializados.

3.3 Análise segundo a quantidade de dias vencidos

A partir da variável dt_validade e da data de extração dos dados, pode-se criar na base de dados uma nova variável contendo a quantidade de dias decorridos da data de validade do CRP até a data de extração dos dados. Isso é feito no código a seguir:

crp_rpps <- crp_rpps %>%
  mutate(n_dias = as.numeric(difftime(ymd(dt_extracao_dados), dt_validade, units = "days")))

head(crp_rpps) %>% 
  qflextable()

uf

ente

num_crp

dt_emissao

dt_validade

judicial

tipo_regime

situacao

n_dias

AC

Governo do Estado do Acre

931001-185475

2020-04-30

2020-10-27

SIM

RPPS

VÁLIDO

-21

AC

Rio Branco

980139-185330

2020-04-23

2020-10-20

NÃO

RPPS

VÁLIDO

-14

AL

Arapiraca

982705-187383

2020-07-09

2021-01-05

NÃO

RPPS

VÁLIDO

-91

AL

Atalaia

982707-112197

2013-03-18

2013-09-14

NÃO

RPPS

VENCIDO

2.579

AL

Barra de Santo Antônio

982709-186655

2020-06-13

2020-12-10

SIM

RPPS

VÁLIDO

-65

AL

Batalha

982713-11816

2002-11-29

2003-05-28

NÃO

RPPS

VENCIDO

6.341

Essa nova variável apresenta valores inteiros positivos para os CRP vencidos, indicando a quantidade de dias decorridos da data de vencimento até a data de extração dos dados. Por outro lado, os inteiros negativos indicam a quantidade de dias a decorrer da data de extração até a data de validade, estando assim associados aos RPPS em situação regular.

Pode-se fazer algumas análises com essa nova variável. Por exemplo, pode-se observar a distribuição da quantidade de dias para os CRP vencidos a mais de 30 dias.

crp_rpps %>% 
  filter(n_dias > 30) %>%   # Acima de 30 dias de vencimento
  ggplot(aes(x=n_dias)) + 
  geom_histogram(color="black", fill="lightblue") +
  labs(title="Distribuição da Quantidade de Dias\n(CRP vencido a mais de 30 dias )",
       y="Freq. Absoluta",
       x="Qtd. de Dias") +
  theme_bw()

E por UF?

crp_rpps %>% 
  filter(n_dias > 30) %>%    # Acima de 30 dias de vencimento
  ggplot(aes(x=uf, y=n_dias)) + 
  geom_boxplot(outlier.shape = NA) +
  geom_jitter(color="gray") +
  geom_hline(yintercept = 365, color="blue") +
  labs(title="Distribuição da Qtd. de Dias após a Data de Vencimento do CRP\n(Apenas CRP vencidos a mais de 30 dias)",
       y="Qtd. de Dias Vencido",
       x="Unidade da Federação") +
  theme_bw()

O gráfico apresenta os dias de atraso (superiores a 30 dias) do CRP por unidade da federação. A linha azul indica a marca dos 365 dias.

É possível ver que os CRP vencidos a mais tempo estão na casa dos 6000 dias.

A base de dados não contém informações sobre o porte do RPPS de forma a que se possa avaliar se o CRP vencido tem alguma relação com essa variável. Não seria difícil trazer essa informação para a base de dados, mas considerando que o objetivo aqui é trabalhar apenas os dados do CRP, essa verificação será deixada para capítulo posterior.

Para identificar os RPPS que estão com determinada quantidade de dias em atraso, é só aplicar um filtro na base de dados. Quais os RPPS que integram os 10% que estão com os maiores dias de atraso?

percentil_90 <- quantile(crp_rpps$n_dias[crp_rpps$n_dias > 30], probs = 0.9)

crp_rpps %>%
  filter(n_dias >= percentil_90) %>%
  select(ente, uf, dt_emissao, dt_validade, n_dias) %>% 
  arrange(desc(n_dias)) %>% 
  qflextable()

ente

uf

dt_emissao

dt_validade

n_dias

Barreiras do Piauí

PI

2001-07-24

2002-01-20

6.834

Rochedo de Minas

MG

2002-06-17

2002-12-14

6.506

Miraí

MG

2002-11-28

2003-05-27

6.342

Batalha

AL

2002-11-29

2003-05-28

6.341

Santo Antônio do Tauá

PA

2002-12-02

2003-05-31

6.338

Belém

AL

2002-12-06

2003-06-04

6.334

Antônio Gonçalves

BA

2003-01-20

2003-07-19

6.289

Pinheiro Machado

RS

2003-01-29

2003-07-28

6.280

Piau

MG

2003-04-07

2003-10-04

6.212

Palestina

AL

2003-06-01

2003-11-28

6.157

Afuá

PA

2003-06-06

2003-12-03

6.152

Curralinho

PA

2003-07-07

2004-01-03

6.121

São Julião

PI

2003-07-09

2004-01-05

6.119

Fronteira dos Vales

MG

2003-09-19

2004-03-17

6.047

Buri

SP

2004-02-18

2004-04-18

6.015

Fronteiras

PI

2004-04-02

2004-06-01

5.971

Algodão de Jandaíra

PB

2004-04-14

2004-06-13

5.959

Pirapora do Bom Jesus

SP

2003-12-17

2004-06-14

5.958

Rio Branco do Ivaí

PR

2004-05-05

2004-07-04

5.938

Araruama

RJ

2004-12-23

2005-02-21

5.706

Magé

RJ

2005-03-02

2005-05-01

5.637

Visconde do Rio Branco

MG

2005-09-05

2005-11-04

5.450

Muaná

PA

2006-03-28

2006-05-27

5.246

Santo Antônio do Leverger

MT

2006-12-20

2007-06-18

4.859

Iguaba Grande

RJ

2007-05-18

2007-11-14

4.710

Caridade

CE

2007-08-28

2008-02-24

4.608

Santana do Maranhão

MA

2007-10-16

2008-04-13

4.559

Canhotinho

PE

2008-03-24

2008-09-20

4.399

Coelho Neto

MA

2008-12-08

2009-06-06

4.140

Rio Acima

MG

2008-12-18

2009-06-16

4.130

São Sebastião da Boa Vista

PA

2008-12-29

2009-06-27

4.119

Junqueiro

AL

2009-04-22

2009-10-19

4.005

Alpercata

MG

2009-08-07

2010-02-03

3.898

Teotônio Vilela

AL

2009-08-12

2010-02-08

3.893

Portel

PA

2009-11-16

2010-05-15

3.797

Craíbas

AL

2009-11-20

2010-05-19

3.793

Planaltina

GO

2009-12-08

2010-06-06

3.775

Oeiras do Pará

PA

2009-12-14

2010-06-12

3.769

Itamonte

MG

2009-12-17

2010-06-15

3.766

São Sebastião

AL

2009-12-21

2010-06-19

3.762

Novo Lino

AL

2009-12-22

2010-06-20

3.761

Santa Cruz do Arari

PA

2009-12-28

2010-06-26

3.755

Diamante

PB

2010-03-01

2010-08-28

3.692

Governador Valadares

MG

2010-04-26

2010-10-23

3.636

Bertolínia

PI

2010-07-04

2010-12-31

3.567

A partir da nova variável, pode-se criar uma outra variável contendo um escalonamento da variável n_dias de forma a classificar os Entes em função da quantidade de dias em que os CRP estão vencidos.

Por exemplo, seria possível adotar a seguinte classificação: “a vencer”, “1 a 30 dias”, “31 a 60 dias”, “61 a 90 dias”, “91 a 180 dias”, “181 a 365 dias”, “1 a 5 anos” e “mais de 5 anos”.

Para fazer esse escalonamento, será criada uma nova variável cujo nome será categoria que irá classificar o Ente de acordo com o nível de “severidade” do vencimento do CRP.

crp_rpps <- crp_rpps %>%
        mutate(categoria = cut(n_dias,
                               breaks =c(-Inf, 0, 30, 60, 90, 180, 365, 5*365, Inf) ,
                               labels = c("a vencer",
                                          "1 a 30 dias",
                                          "31 a 60 dias",
                                          "61 a 90 dias",
                                          "91 a 180 dias",
                                          "181 a 365 dias",
                                          "1 a 5 anos",
                                          "mais de 5 anos")))

head(crp_rpps) %>% 
  qflextable()

uf

ente

num_crp

dt_emissao

dt_validade

judicial

tipo_regime

situacao

n_dias

categoria

AC

Governo do Estado do Acre

931001-185475

2020-04-30

2020-10-27

SIM

RPPS

VÁLIDO

-21

a vencer

AC

Rio Branco

980139-185330

2020-04-23

2020-10-20

NÃO

RPPS

VÁLIDO

-14

a vencer

AL

Arapiraca

982705-187383

2020-07-09

2021-01-05

NÃO

RPPS

VÁLIDO

-91

a vencer

AL

Atalaia

982707-112197

2013-03-18

2013-09-14

NÃO

RPPS

VENCIDO

2.579

mais de 5 anos

AL

Barra de Santo Antônio

982709-186655

2020-06-13

2020-12-10

SIM

RPPS

VÁLIDO

-65

a vencer

AL

Batalha

982713-11816

2002-11-29

2003-05-28

NÃO

RPPS

VENCIDO

6.341

mais de 5 anos

A distribuição dos RPPS segundo essa classificação pode ser feita da seguinte forma:

crp_rpps %>% 
  group_by(categoria) %>% 
  summarise(n_rpps = n()) %>% 
  mutate(`%` = round( n_rpps / sum(n_rpps) * 100, 2),
         `%_acum` = cumsum(`%`)) %>% 
  qflextable()

categoria

n_rpps

%

%_acum

a vencer

1.489

69,19

69

1 a 30 dias

220

10,22

79

31 a 60 dias

39

1,81

81

61 a 90 dias

19

0,88

82

91 a 180 dias

43

2,00

84

181 a 365 dias

53

2,46

87

1 a 5 anos

150

6,97

94

mais de 5 anos

139

6,46

100

Para visualizar a distribuição de frequência apresentada acima, será feito uso de um gráfico de barras:.

crp_rpps %>%
  group_by(categoria) %>%
  summarise(frequencia = n()) %>%
  ggplot(aes(x=categoria, y=frequencia)) +
    geom_bar(stat="identity", fill="orange") +
    geom_text(aes(label=frequencia), color="blue", vjust = 0, size=4) +
  labs(title="Quantidade de RPPS em cada Categoria",
       y="Qtd. de RPPS",
       x="Categorias") +
    theme_bw()

O mesmo gráfico pode ser feito para cada UF, bastando simplesmente inserir no código acima um filtro para pegar os dados da UF selecionada. Por exemplo, o gráfico para o RJ seria feito da seguinte forma:

crp_rpps %>%
  filter(uf == "RJ") %>%
  group_by(categoria) %>%
  summarise(frequencia = n()) %>%
  ggplot(aes(x=categoria, y=frequencia)) +
    geom_bar(stat="identity", fill="orange") +
    geom_text(aes(label=frequencia), color="blue", vjust = 0,  size=4) +
    labs(title="Quantidade de RPPS em cada Categoria - RJ",
         y="Qtd. de RPPS",
         x="Categorias") +
    theme_bw()

Infelizmente a base de dados não possui informações sobre os critérios do CRP. Essas seriam informações interessantes de constar da base de dados.

3.4 Efeito da constitucionalização do CRP

A partir da EC 103/19, diz-se que houve a “constitucionalização” do CRP e que, em função desse fato, tornar-se-ia mais difícil para os Entes obterem CRP pela via judicial. Se, de fato, isso ocorrer é possível que junto com uma redução dos CRP judiciais ocorra um aumento no quantitativo de CRP vencidos. Ou pode ser que a “constitucionalização” em nada influa na quantidade de CRP judicial.

Assim, uma análise possível com os dados do CRP é verificar como evoluiu, a cada atualização da base de dados, o quantitativo de RPPS com CRP judicial e com CRP vencido. Essa análise pode ser feita de forma global, considerando todos os RPPS brasileiros, ou uma análise por unidade da federação.

Durante o ano de 2020, tem-se o registro de que ocorreram cinco atualizações/publicações da base de dados do CRP no site da SPREV:

  • Ago-Set/2020 (base objeto de análise nesse documento)
  • Jul-Ago/2020
  • Jun/2020
  • Abr/2020 e
  • Fev/2020

Será que nesse período é possível notar alguma redução significativa na quantidade de CRP judicial?

Para iniciar essa análise será feita análise dos arquivos de Fev/2020 e Ago-Set/2020. A seguir será feita a importação dos dados do CRP relativos à atualização de Fev/2020:

crp_rpps_fev20 <- readRDS("dados/crp_DtRef_FEV2020.Rds")
head(crp_rpps_fev20)
# A tibble: 6 x 9
  cnpj  ente  uf    num_crp dt_emissao          dt_validade         judicial
  <chr> <chr> <chr> <chr>   <dttm>              <dttm>              <chr>   
1 6360~ Gove~ AC    931001~ 2019-10-31 00:00:00 2020-04-28 00:00:00 SIM     
2 0403~ Rio ~ AC    980139~ 2019-10-26 00:00:00 2020-04-23 00:00:00 NÃO     
3 1219~ Arap~ AL    982705~ 2019-10-06 00:00:00 2020-04-03 00:00:00 NÃO     
4 1220~ Atal~ AL    982707~ 2013-03-18 00:00:00 2013-09-14 00:00:00 NÃO     
5 1226~ Barr~ AL    982709~ 2019-12-13 00:00:00 2020-06-10 00:00:00 SIM     
6 1225~ Bata~ AL    982713~ 2002-11-29 00:00:00 2003-05-28 00:00:00 NÃO     
# ... with 2 more variables: situacao <chr>, regime <chr>
crp_rpps_fev20 %>% 
  count(regime)
# A tibble: 1 x 2
  regime     n
  <chr>  <int>
1 RPPS    2135
crp_rpps %>% 
  count(tipo_regime)
# A tibble: 1 x 2
  tipo_regime     n
  <chr>       <int>
1 RPPS         2152

A base de dados de CRP de Fev/20 continha 2.135 RPPS enquanto a de Ago-Set/20 possui 2.152 e ambas referem apenas a RPPS. Verifica-se um aumento de 17 RPPS na base de dados no período considerado.

A quantidade de RPPS com CRP judicial em ambas as bases é obtida a seguir:

with(crp_rpps_fev20, 
  table(judicial,situacao))
        situacao
judicial VÁLIDO VENCIDO
     NÃO    942     572
     SIM    538      83
with(crp_rpps, 
  table(judicial, situacao))
        situacao
judicial VÁLIDO VENCIDO
     NÃO    970     547
     SIM    519     116

Os resultados indicam que o quantitativo de CRP vencidos entre os judiciais aumentou de 83 para 116. Por outro lado, os CRP válidos entre os judiciais caiu de 538 para 519.

3.5 Mapas com dados dos CRP

Pode ser interessante visualizar em um mapa da UF a situação do CRP dos entes municipais, ou num mapa do Brasil a situação do CRP dos estados. Para executar essa tarefa será necessário utilizar pacotes adicionais que facilitem a obtenção e elaboração de mapas. Esses pacotes são o geobr e o sf, que junto com o ggplot2 irão fazer esse trabalho.

Carregando os pacotes adicionais:

library(sf)
library(geobr)

O primeiro passo será importar o arquivo contendo o mapa do ERJ. O pacote geobr facilita a obtenção dos arquivos “shape” necessários.

mapa_rj <- read_municipality(code_muni = "RJ", year=2018, showProgress = FALSE)

Para a obtenção do mapa de outro estado basta substituir o “RJ” no código acima pela sigla da UF desejada.

Obtidos os dados para a confecção do mapa, já é possivel fazer um gráfico básico sem quaisquer dados sendo apresentados:

ggplot(mapa_rj) + 
  geom_sf() +
  theme_bw() +
  theme(axis.text = element_blank())

Faz-se necessário agora associar uma ou mais variáveis à base de dados mapa_rj para que estas variáveis possam ser visualizadas no mapa.

Deve-se observar que as duas bases de dados (mapa_rj e crp) tem em comum apenas a variável contendo o nome dos entes. Fazer a junção dos dois conjuntos de dados com base nessa variável é arriscado em razão dos nomes dos municípios poderem estar diferentes.

A estratégia seguida foi é incluir na base do CRP uma variável contendo o código IBGE dos entes, os quais foram obtidos no site https://www.ibge.gov.br/explica/codigos-dos-municipios.php

O arquivo contendo a base do CRP e com os códigos do IBGE (combinadas manualmente) chama-se codigo_ibge.xlsx e sua importação é feita a seguir:

ibge <- read_excel("dados/codigo_ibge.xlsx")
head(ibge)
# A tibble: 6 x 8
  uf    ente         cod_uf nm_estado cod_ibge cnpj        regime dif_ibge_sprev
  <chr> <chr>        <chr>  <chr>     <chr>    <chr>       <chr>  <lgl>         
1 AC    Acrelândia   12     Acre      1200013  8430673700~ RGPS   NA            
2 AC    Assis Brasil 12     Acre      1200054  0404599300~ RGPS   NA            
3 AC    Brasiléia    12     Acre      1200104  0450893300~ RGPS   NA            
4 AC    Bujari       12     Acre      1200138  8430662000~ RGPS   NA            
5 AC    Capixaba     12     Acre      1200179  8430660400~ RGPS   NA            
6 AC    Cruzeiro do~ 12     Acre      1200203  0401254800~ RGPS   NA            

Como pode ser visto, a base de dados contém o nome do ente (com a mesma grafia da base de CRP), o código IBGE e o CNPJ além de outras variáveis. Em especial deve-se notar a variável dif_ibge_sprev.

Durante o processo de montagem do arquivo observou-se que na relação de Entes elaborada pela SPREV, objeto de análise no capítulo 1, existe 2 municípios que constam da base do IBGE e não têm correspondência na base da SPREV e, da mesma forma, dois municípios da base da SPREV não possuiam correspondência na base do IBGE.

Após alguma investigação restou evidenciada divergência de nomes dos municípios. O quadro a seguir elenca os municípios em questão:

CNPJ Ente UF Nome SPREV Nome IBGE
08.787.392/0001-92 PB Campo de Santana Tacima
01.613.283/0001-00 PB Santarém Joca Claudino

Para prosseguir, será necessário excluir esses registros mais o registro relativo a Fernando de Noronha - PE:

ibge %>% 
  filter(dif_ibge_sprev == 1)
# A tibble: 3 x 8
  uf    ente          cod_uf nm_estado  cod_ibge cnpj      regime dif_ibge_sprev
  <chr> <chr>         <chr>  <chr>      <chr>    <chr>     <chr>  <lgl>         
1 PB    Joca Claudino 25     Paraíba    2513653  01613283~ RGPS   TRUE          
2 PB    Tacima        25     Paraíba    2516409  08787392~ RGPS   TRUE          
3 PE    Fernando de ~ 26     Pernambuco 2605459  NA        NA     TRUE          

Exclusão dos registros acima:

ibge <- ibge %>% 
          filter(is.na(dif_ibge_sprev))

A base de dados do mapa (mapa_rj) pode agora ser combinada com essa base de dados (ibge) para, depois, serem juntados os dados da base de CRP (crp_rpps) essa última contendo os dados a serem visualizados.

Juntar ao mapa os dados do ibge:

ibge$cod_ibge <- as.numeric(ibge$cod_ibge)
mapa_rj <- left_join(mapa_rj, ibge, by=c("code_muni" = "cod_ibge"))

Juntar ao mapa os dados do crp:

mapa_rj = left_join(mapa_rj, crp_rpps, by=c("ente" = "ente", "abbrev_state" = "uf"))

Agora já é possível apresentar os dados da base do CRP no mapa. Em especial o interesse está em plotar os dias de atraso (n_dias).

ggplot(mapa_rj) +
  geom_sf(aes(fill=n_dias)) + 
  labs(title="Dias Decorridos do Vencimento do CRP",
       caption='Fonte: base de dados da SPREV', size=8) +
  theme_minimal() +
  theme(axis.text = element_blank()) +
  scale_fill_distiller(palette = "PuOr")

Quanto mais claro o azul, a mais dias vencidos está o CRP. Os municípios em cinza estão vinculados ao RGPS.

Também é possível mostrar a variável judicial:

ggplot(mapa_rj) +
  geom_sf(aes(fill=judicial), size=.15) +
  labs(title="Judicialização do CRP",
       caption='Fonte: base de dados da SPREV', size=8) +
  theme_minimal() +
  theme(axis.text = element_blank()) +
  scale_fill_manual(values = c("lightblue", "tomato"))

Mais um mapa. Agora mostrando a situação do CRP:

ggplot(mapa_rj) +
  geom_sf(aes(fill=situacao)) +
  labs(title="Validade do CRP",
       caption='Fonte: base de dados da SPREV', size=8) +
  theme_minimal() +
  theme(axis.text = element_blank()) +
  scale_fill_manual(values = c("lightblue", "tomato"))

Os gráficos podem ser melhorados.A ideia, por ora, é apenas mostrar como fazê-los.