3. Análise de subsídios ofertados às famílias acolhedoras#

O objetivo da análise é verificar se há e quais são os tipos de subsídio oferecido às famílias que estão acolhendo no momento.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df_dados_gerais = pd.read_csv('../data/familia_acolhedora/dados_gerais_tratado.csv')
df_dados_gerais.head()
IBGE NU_IDENTIFICADOR municipio uf data_implementacao_unidade Latitude Longitude natureza_unidade custo_manutencao servico_regulamentado ... coordenador_saf_situacao capaci_equipe_tec_saf_presencial capaci_equipe_tec_saf_ead capaci_equipe_tec_saf_nao_faz capaci_equipe_tec_saf_presencial_qtd capaci_equipe_tec_saf_ead_qtd IBGE7 nome_da_uf Regiao Município
0 110011 1,10011E+12 JARU RO 29/03/2023 -10.439 -62.466 Governamental NaN Sim, por lei ... Exerce concomitantemente a função de coordenad... Não Não Não NaN NaN 1100114 Rondonia Região Norte Jaru
1 110012 1,10012E+12 JI-PARANA RO 02/01/2022 -10.876.486.067.028.500 -619.596.290.588.379 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Sim Sim Não 3.0 4.0 1100122 Rondonia Região Norte Ji-Paraná
2 110020 1,1002E+12 PORTO VELHO RO 13/12/2017 -915.359.258.390.788 -643.068.141.967.022 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Sim Sim Não 5.0 5.0 1100205 Rondonia Região Norte Porto Velho
3 120040 1,2004E+12 RIO BRANCO AC 17/05/2013 -9.948.852.227.687.540 -6.785.414.814.949.030 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Não Não Sim NaN NaN 1200401 Acre Região Norte Rio Branco
4 130170 1,3017E+12 HUMAITA AM 28/12/2020 -7.519.639.784.496.380 -63.031.353.950.500.400 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Não Não Sim NaN NaN 1301704 Amazonas Região Norte Humaitá

5 rows × 174 columns

df_dados_gerais.columns.tolist()
['IBGE',
 'NU_IDENTIFICADOR',
 'municipio',
 'uf',
 'data_implementacao_unidade',
 'Latitude',
 'Longitude',
 'natureza_unidade',
 'custo_manutencao',
 'servico_regulamentado',
 'ano_implementacao_servico',
 'subsidio_valor_mensal',
 'subsidio_itens_manutencao',
 'subsidio_mobiliario_transporte',
 'subsidio_isencao_imposto_taxa',
 'subsidio_outros',
 'subsidio_nao_repassa',
 'subsidio_outros_quais',
 'fam_aceita_vinculo_irmaos',
 'qtd_criancas_acolhidas',
 'qtd_criancas_acolhidas_12meses',
 'qtd_masc_0_2',
 'qtd_masc_3_5',
 'qtd_masc_6_11',
 'qtd_masc_12_13',
 'qtd_masc_14_15',
 'qtd_masc_16_17',
 'qtd_masc_acima_18',
 'qtd_masc_total',
 'qtd_fem_0_2',
 'qtd_fem_3_5',
 'qtd_fem_6_11',
 'qtd_fem_12_13',
 'qtd_fem_14_15',
 'qtd_fem_16_17',
 'qtd_fem_acima_18',
 'qtd_refugiados_imigrantes',
 'qtd_venezuelanos',
 'qtd_criancas_tempo_servico_menos_1mes',
 'qtd_criancas_tempo_servico_1_3meses',
 'qtd_criancas_tempo_servico_4_6meses',
 'qtd_criancas_tempo_servico_7_12meses',
 'qtd_criancas_tempo_servico_13_18meses',
 'qtd_criancas_tempo_servico_19_24meses',
 'qtd_criancas_tempo_servico_25_48meses',
 'qtd_criancas_tempo_servico_49_72meses',
 'qtd_criancas_tempo_mais_72meses',
 'qtd_criancas_deficiencia',
 'qtd_criancas_transt_sofri_psiquico',
 'qtd_criancas_necessidade_especial',
 'qtd_adoles_socioeducativo',
 'qtd_criancas_traj_de_rua',
 'qtd_criancas_indigenas',
 'qtd_criancas_outros_povos_trad',
 'qtd_criancas_dependencia_drogas',
 'qtd_criancas_gestantes',
 'qtd_criancas_pretas',
 'qtd_criancas_pardas',
 'qtd_criancas_brancas',
 'qtd_criancas_amarelas',
 'qtd_criancas_raca_indigenas',
 'qtd_motivo_entrega_voluntaria_adocao',
 'qtd_motivo_orfandade',
 'qtd_motivo_abandono',
 'qtd_motivo_pais_usuarios',
 'qtd_motivo_pais_com_deficiencia',
 'qtd_motivo_pais_transt_sofri_psiquicos',
 'qtd_motivo_pais_ausentes_doenca',
 'qtd_motivo_pais_prisao_ou_internacao',
 'qtd_motivo_violencia_domestica_fisica',
 'qtd_motivo_violencia_domestica_psicologica',
 'qtd_motivo_abuso_sex_intrafamiliar',
 'qtd_motivo_exploracao_sex',
 'qtd_motivo_conflito_familiar',
 'qtd_motivo_exploracao_trabalho',
 'qtd_motivo_pais_cond_especif_saude',
 'qtd_motivo_pais_s_condicoes_depend_quim',
 'qtd_motivo_ameaca_morte',
 'qtd_motivo_situacao_rua',
 'qtd_motivo_negligencia_familia',
 'qtd_motivo_fam_situacao_rua',
 'qtd_motivo_fam_moradia_insalubre',
 'qtd_motivo_fam_carencia_rec_materiais',
 'qtd_oriundos_pbf',
 'qtd_oriundos_fam_menos_1sm',
 'divulgacao_outdoors_busdoors',
 'divulgacao_materiais_grande_circ',
 'divulgacao_radio_tv_impressa',
 'divulgacao_eventos_palestras',
 'divulgacao_redes_sociais',
 'divulgacao_articulacao_liderancas',
 'divulgacao_outros',
 'divulgacao_nao_faz',
 'divulgacao_outros_quais',
 'ch_capacitacao_inicial',
 'selecao_fam_reunioes',
 'selecao_fam_analise_doc',
 'selecao_fam_entrevistas',
 'selecao_fam_visitas_domiciliares',
 'selecao_fam_outros',
 'selecao_fam_nao_faz',
 'selecao_fam_outros_quais',
 'capac_ini_conti_fam_encontros_grupos',
 'capac_ini_conti_fam_encontros_indivi',
 'capac_ini_conti_fam_paletras',
 'capac_ini_conti_fam_rodas_conversa',
 'capac_ini_conti_fam_outros',
 'capac_ini_conti_fam_nao_faz',
 'capac_ini_conti_fam_outros_quais',
 'acompanhamento_fam_aprox_supervi',
 'acompanhamento_fam_visitas_domicil',
 'acompanhamento_fam_aten_psicoss',
 'acompanhamento_fam_contato_tel',
 'acompanhamento_fam_outros',
 'acompanhamento_fam_outros_quais',
 'ativi_sistematicas_atend_psicosso_indivi',
 'ativi_sistematicas_escuta_qualific',
 'ativi_sistematicas_acompanh_escolar',
 'ativi_sistematicas_acompanh_saude',
 'ativi_sistematicas_encaminhc_docs',
 'ativi_sistematicas_encaminhc_qualif_prof',
 'ativi_sistematicas_identifi_fam_nat_exten',
 'ativi_sistematicas_viabili_encon_fam_ori',
 'ativi_sistematicas_constr_plano_acomp_fam_ori',
 'ativi_sistematicas_atend_psicosso_indiv_fam_ori',
 'ativi_sistematicas_reunioes_fam_ori',
 'ativi_sistematicas_entrevis_fam_ori',
 'ativi_sistematicas_visi_domic_fam_ori',
 'ativi_sistematicas_genograma_ecomapa',
 'ativi_sistematicas_relat_trimes_judic',
 'ativi_sistematicas_estudo_caso',
 'ativi_sistematicas_encaminhc_rede',
 'ativi_sistematicas_discuss_casos_rede',
 'ativi_sistematicas_outros',
 'ativi_sistematicas_nao_faz',
 'ativi_sistematicas_outros_quais',
 'retorno_fam_ori_fam_ado_judic_informa_decisoes',
 'retorno_fam_ori_fam_ado_judic_nao_informa_decisoes',
 'retorno_fam_ori_fam_ado_tempo_prepar_suficiente',
 'retorno_fam_ori_fam_ado_tempo_prepar_insuficiente',
 'freq_acompanh_fam_acolhedora',
 'qtd_fam_processo_habilitacao',
 'qtd_fam_aptas_ou_acolhendo',
 'num_atual_fam_suficiente',
 'imovel_sede_saf',
 'espaco_fisico_sala_atendimento',
 'espaco_fisico_espaco_reunioes',
 'espaco_fisico_sala_equip_tec',
 'espaco_fisico_sala_coord_adm',
 'espaco_fisico_area_recepcao',
 'espaco_fisico_copa',
 'equipamentos_veiculo_exclusivo',
 'equipamentos_veiculo_compartilhado',
 'equipamentos_acervo_bibliog',
 'equipamentos_mater_pedago',
 'equipamentos_tel_fixo',
 'equipamentos_cel',
 'equipamentos_impressora',
 'equipamentos_de_som',
 'equipamentos_proj_imagens',
 'equipamentos_bebedouro',
 'equipamentos_comput_internet',
 'equipamentos_qtd_comput_internet',
 'equipe_tec_exclusiva_saf',
 'coordenador_saf_situacao',
 'capaci_equipe_tec_saf_presencial',
 'capaci_equipe_tec_saf_ead',
 'capaci_equipe_tec_saf_nao_faz',
 'capaci_equipe_tec_saf_presencial_qtd',
 'capaci_equipe_tec_saf_ead_qtd',
 'IBGE7',
 'nome_da_uf',
 'Regiao',
 'Município']

3.1. Variável de subsídio mensal repassado às famílias acolhedoras#

Alguns SFA ofertam subsídio mensal em reais às famílias acolhedoras. A variável ‘subsidio_valor_mensal’ refere-se ao valor mensal do subsídio financeiro repassado à cada família acolhedora por criança/adolescente.

df_dados_gerais['subsidio_valor_mensal'].apply(type).unique()
array([<class 'float'>, <class 'str'>], dtype=object)
# Transformar os dados em números
df_dados_gerais['subsidio_valor_mensal'] = pd.to_numeric(df_dados_gerais['subsidio_valor_mensal'], errors='coerce')
df_dados_gerais.shape
(620, 174)
df_dados_gerais['subsidio_valor_mensal'].isna().sum()
np.int64(64)
df_nulos_subsidio = df_dados_gerais[df_dados_gerais['subsidio_valor_mensal'].isna()]
df_nulos_subsidio.head()
IBGE NU_IDENTIFICADOR municipio uf data_implementacao_unidade Latitude Longitude natureza_unidade custo_manutencao servico_regulamentado ... coordenador_saf_situacao capaci_equipe_tec_saf_presencial capaci_equipe_tec_saf_ead capaci_equipe_tec_saf_nao_faz capaci_equipe_tec_saf_presencial_qtd capaci_equipe_tec_saf_ead_qtd IBGE7 nome_da_uf Regiao Município
0 110011 1,10011E+12 JARU RO 29/03/2023 -10.439 -62.466 Governamental NaN Sim, por lei ... Exerce concomitantemente a função de coordenad... Não Não Não NaN NaN 1100114 Rondonia Região Norte Jaru
8 130340 1,3034E+12 PARINTINS AM 01/10/2017 -26.331.842.224.955.400 -56.737.711.429.595.900 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Não Sim Não NaN 4.0 1303403 Amazonas Região Norte Parintins
23 160010 1,6001E+12 AMAPA AP 30/10/2023 20.520.089.817.919.700 -50.792.090.892.791.700 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Sim Não Não 3.0 NaN 1600105 Amapá Região Norte Amapá
36 210235 2,10235E+12 BURITIRANA MA 01/01/2017 -551.795.185.375.319 -470.613.815.941.458 Governamental NaN Sim, por lei ... Exerce exclusivamente a função de coordenador(... Não Não Sim NaN NaN 2102358 Maranhão Região Nordeste Buritirana
37 210330 2,1033E+12 CODO MA 21/07/2017 -4.462.538.556.340.480 -4.388.851.014.038.660 Governamental NaN Sim, por lei ... Exerce concomitantemente a função de coordenad... Sim Não Não 2.0 NaN 2103307 Maranhão Região Nordeste Codó

5 rows × 174 columns

df_nulos_subsidio['uf'].value_counts()
uf
PR    14
SP    11
SC     9
RS     6
MA     5
MG     4
BA     4
MT     2
MS     2
RN     1
AM     1
AP     1
RO     1
PB     1
RJ     1
GO     1
Name: count, dtype: int64
# Como há apenas 64 nulos em um universo de 620 linhas, atribuí 0 aos valores nulos, supondo que não há subsídio mensal - ainda que a resposta pode ter sido Não Sei
df_dados_gerais['subsidio_valor_mensal'].fillna(0, inplace=True)
/tmp/ipykernel_2059/4215733007.py:2: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.

For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.


  df_dados_gerais['subsidio_valor_mensal'].fillna(0, inplace=True)
# Verificar os outliers
df_dados_gerais['subsidio_valor_mensal'].describe()
count      620.000000
mean      1283.346774
std       3370.194269
min          0.000000
25%        688.000000
50%       1320.000000
75%       1320.000000
max      79200.000000
Name: subsidio_valor_mensal, dtype: float64
# Calcular os quartis e o intervalo interquartil (IQR)
q1 = df_dados_gerais['subsidio_valor_mensal'].quantile(0.25)
q3 = df_dados_gerais['subsidio_valor_mensal'].quantile(0.75)
iqr = q3 - q1

# Determinar o limite superior para outliers
limite_superior = q3 + 1.5 * iqr

# Filtrar os outliers
outliers = df_dados_gerais[df_dados_gerais['subsidio_valor_mensal'] > limite_superior]

# Exibir o limite superior para referência
print(f"Limite superior para outliers: {limite_superior}")
Limite superior para outliers: 2268.0
# Atenção às observações acima de 13 mil, assim, melhor retirá-las do que inferir os valores, uma vez que são apenas 3 linhas
outliers[['municipio', 'uf', 'subsidio_valor_mensal']].sort_values(by='subsidio_valor_mensal', ascending=False)
municipio uf subsidio_valor_mensal
219 VILA VELHA ES 79200.0
381 MARIOPOLIS PR 26400.0
469 FLORIANOPOLIS SC 13000.0
218 PEDRO CANARIO ES 2640.0
272 PAULINIA SP 2640.0
505 PERITIBA SC 2640.0
499 NOVO HORIZONTE SC 2640.0
509 POMERODE SC 2640.0
325 CAFELANDIA PR 2369.0
# Filtrar para manter apenas valores iguais ou abaixo de 13000
df_sem_outliers = df_dados_gerais[df_dados_gerais['subsidio_valor_mensal'] < 13000]

# Verificar quantas linhas foram removidas
removidas = len(df_dados_gerais) - len(df_sem_outliers)
print(f"Total de outliers removidos: {removidas}")
Total de outliers removidos: 3
# Calcula a média por UF
media_por_uf_sem_outliers = df_sem_outliers.groupby(['uf', 'Regiao'])['subsidio_valor_mensal'].mean().reset_index()
media_por_uf_sem_outliers.sort_values(by='subsidio_valor_mensal', ascending=False)
uf Regiao subsidio_valor_mensal
21 SC Região Sul 1334.490385
0 AC Região Norte 1320.000000
6 ES Região Sudeste 1320.000000
16 PR Região Sul 1195.407692
10 MS Região Centro Oeste 1170.869565
14 PE Região Nordeste 1153.875000
22 SP Região Sudeste 1122.438596
13 PB Região Nordeste 1089.285714
12 PA Região Norte 1085.833333
23 TO Região Norte 1072.500000
20 RS Região Sul 1055.333333
4 CE Região Nordeste 1046.000000
9 MG Região Sudeste 996.708333
7 GO Região Centro Oeste 984.375000
1 AM Região Norte 957.142857
11 MT Região Centro Oeste 946.666667
17 RJ Região Sudeste 916.551724
19 RO Região Norte 880.000000
18 RN Região Nordeste 807.272727
3 BA Região Nordeste 742.583333
8 MA Região Nordeste 626.800000
15 PI Região Nordeste 500.000000
5 DF Região Centro Oeste 456.000000
2 AP Região Norte 220.000000
# Define cores para cada região
cores_regiao = {
    'Região Norte': 'blue', 'Região Nordeste': 'green', 'Região Centro Oeste': 'orange',
    'Região Sudeste': 'red', 'Região Sul': 'purple'
}
# Cria o gráfico de barras
plt.figure(figsize=(12, 8))
for regiao, cor in cores_regiao.items():
    subset = media_por_uf_sem_outliers[media_por_uf_sem_outliers['Regiao'] == regiao]
    plt.bar(subset['uf'], subset['subsidio_valor_mensal'], label=regiao, color=cor)

# Configurações do gráfico
plt.title('Média mensal de subsídio repassado às famílias acolhedoras')
plt.xlabel('UF')
plt.ylabel('Média mensal de subsídio')
plt.xticks(rotation=45)
plt.legend(title='Região')
plt.tight_layout()
plt.show()
_images/df0b55ca173f8583b93b0d8d526df85ef354baaae19336a0163c01c2b23f337e.png

3.2. Demais variáveis de apoio/isenção destinado às famílias acolhedoras#

  • ‘subsidio_itens_manutencao’: são disponibilizados itens para a manutenção da criança/adolescente acolhida (p.ex: fraldas, vestuário, alimentação, medicamentos, material escolar, dentre outros)

  • ‘subsidio_mobiliario_transporte’: são disponibilizados itens de mobiliário e transporte para uso da criança/adolescente acolhida (p.ex: berço, carrinho de bebê, etc.)

  • ‘subsidio_isencao_imposto_taxa’: há isenção de impostos ou taxas públicas (p.ex: IPTU, etc)

  • ‘subsidio_outros’: há outros tipos de apoio não financeiro ou isenção

  • ‘subsidio_nao_repassa’: não há outro tipo de apoio não financeiro ou isenção

  • ‘subsidio_outros_quais’: quais são os outros tipos de apoio não financeiro ou isenção

df_dados_gerais['subsidio_itens_manutencao'].apply(type).unique()
array([<class 'float'>, <class 'str'>], dtype=object)
df_dados_gerais['subsidio_itens_manutencao'].value_counts()
subsidio_itens_manutencao
Sim    156
Não     71
Name: count, dtype: int64
df_dados_gerais['subsidio_mobiliario_transporte'].value_counts()
subsidio_mobiliario_transporte
Não    141
Sim     86
Name: count, dtype: int64
df_dados_gerais['subsidio_isencao_imposto_taxa'].value_counts()
subsidio_isencao_imposto_taxa
Não    176
Sim     51
Name: count, dtype: int64
df_dados_gerais['subsidio_outros'].value_counts()
subsidio_outros
Não    203
Sim     24
Name: count, dtype: int64
df_dados_gerais['subsidio_nao_repassa'].value_counts()
subsidio_nao_repassa
Sim    393
Não    227
Name: count, dtype: int64
colunas_subsidios = ['subsidio_itens_manutencao', 'subsidio_mobiliario_transporte', 'subsidio_isencao_imposto_taxa', 'subsidio_outros', 'subsidio_nao_repassa']
df_dados_gerais[colunas_subsidios].isna().sum()
subsidio_itens_manutencao         393
subsidio_mobiliario_transporte    393
subsidio_isencao_imposto_taxa     393
subsidio_outros                   393
subsidio_nao_repassa                0
dtype: int64
# Como há valores nulos nas variáveis e, como não há informação se é Não, a melhor forma é filtrar as colunas para contar apenas Sim e Não, ignorando os NaNs
freq_df = df_dados_gerais[colunas_subsidios].apply(lambda x: x.value_counts(dropna=True)).T
# Plotando o gráfico
plt.figure(figsize=(10, 6))
sns.heatmap(freq_df[['Sim', 'Não']], annot=True, cmap='Blues', cbar=False, fmt='d')
plt.title('Tipo de apoio para famílias acolhedoras')
plt.xlabel('Resposta')
plt.ylabel('Variáveis')
plt.show()
_images/9db3ba56bd584f6277e2a6759a7d8d4316fbba0e871c4629e17efbff1d0a71ed.png
df_dados_gerais['subsidio_outros_quais'].value_counts()
subsidio_outros_quais
Incentivos através de descontos em bens e serviços em empresas privadas para famílias acolhedoras    1
alimentação, quite higiene                                                                           1
Beneficio Eventual                                                                                   1
Benefícios Eventuais, quandoa avaliada a necessidade                                                 1
Só no 1º mês do acolhimento - Suporte alimentar ofertado pelos CRAS,                                 1
Bolsa Natalina                                                                                       1
Amparo com transporte aos agendamentos na rede, transporte para as visitas                           1
Benefício Eventual, cartão alimentação conforme avaliação da equipe técnica,                         1
auxilio alimemtação                                                                                  1
O município da suporte através do beneficio eventual (cesta básica), roupas, itens de higiene, be    1
dependendo da complexidade da deficiência a família recebe meia bolsa auxilio a mais                 1
O acolhimento de crianças, adolescentes, idosos e pessoa com deficiência com demandas específicas    1
pagamento quando há acolhidos                                                                        1
Consultas particulares e compra de medicamentos de uso contínuo que não são fornecidos pelo SUS,     1
transporte das crianças para os atendimentos                                                         1
itens para atendimento inicial até o repasse do subsidio                                             1
cesta basica                                                                                         1
No caso de criança PcD, 50% a mais do subsídio,                                                      1
Bolsa-Auxílio                                                                                        1
As famílias recebem incentivo de meio saláriofixo mensal, independente de ter criança em acolhime    1
Descanso anual sem perda do subsidio                                                                 1
1/2 SALÁRIO MÍNIMO PARA FAMILIAS ACOLHEDORAS                                                         1
AUXILIO ALIMENTAR                                                                                    1
Prioridade nas matriculas em CMEIs e escolas                                                         1
Name: count, dtype: int64