Otimizando a Coleta da PNADC* com o Pacote R `orce`
* e CNEFE
orce_presentation_pnadc.Rmd
Introdução
- O IBGE enfrenta desafios logísticos e altos custos na coleta de dados
- Território vasto e unidades geograficamente dispersas
- Necessidade de otimização na alocação de Unidades Primárias de Amostragem (UPAs)
O Pacote R orce
- Desenvolvido para otimizar a alocação das diversas “Unidades de Coleta” (UPAs, Escolas, Municípios) nas pesquisas do IBGE
- Utiliza programação linear inteira mista
- Objetivo: Minimizar os custos totais de coleta, tendo como dada a rede atual de agências do IBGE.
Fatores Considerados na Otimização
- Distâncias e tempo de deslocamento
Calculados com o OpenStreetMap.
- Custos com entrevistadores
Remuneração e custo de deslocamento (combustível, horas de trabalho e diárias).
- Restrições específicas das agências
Carga de trabalho máxima, custos fixos, etc.
Benefícios da Otimização
- Melhoria no Planejamento:
- Calcula o custo da pesquisa (diárias, combustível, e remuneração).
- Facilita o planejamento e gestão da coleta de dados
- Otimização de Recursos:
- Otimiza a alocação de entrevistadores e UPAs entre as agências.
- Garante carga de trabalho equilibrada entre agências
Recursos Principais do orce
- Roteamento e Geocodificação
- Otimização Avançada de Alocação
- Cálculo Detalhado de Custos
- Flexibilidade e Adaptabilidade.
- Auxílio no cálculo dos custos de treinamento.
Pontos representativos das UPAs
- Não utilizamos a centroide dos setores ou UPAs
- Utilizamos, em vez disso, o CNEFE (público).
- Para cada UPA, utilizando a função
ponto_densidade
, calculamos a densidade de domicílios para cada domicílio da UPA. O domicílios com a maior densidade calculada é considerado o ponto representativo do domicílio. - Esse procedimento diminui a possibilidade de calcular distâncias de agências a pontos vazios ou inacessíveis nos setores/UPAs.
Cálculo de distâncias
- Função
calcula_distancias
auxilia nesse trabalho. Utiliza dados do OpenStreetMaps com a Open Source Routing Machine (OSRM). - As distâncias são calculadas entre todas as agências para os pontos representativos de cada UPAs da amostra mestra.
Cálculo de diárias
Dados do IBGE:
- Composição das Regiões Metropolitanas
- Microrregiões (Censo 2022)
- Jurisdição das agências (BDO)
Parâmetro:
-
duracao_horas
para calcular Pernoite
Função:
calcula_diarias
Função para alocação de UCs: alocar_ucs
Alocação otimizada de Unidade de Coleta (UCs, no caso UPAs) às agências.
Dados por UPA: código da UPA, agência de jurisdição, dias de coleta, número de viagens.
Dados por agência: código da agência, custo fixo, número máximo de dias de coleta alocáveis para a agência.
Dados por díade UPA-Agência: distância em km, horas de viagem, faz jus a diárias (independentemente da distância), faz jus a diárias (pernoite).
Ideal para pesquisas com equipes exclusivas ou com limitação no número de equipamentos (e.g. PeNSE).
Função para alocação de municípios:
alocar_municipios
Realiza a alocação otimizada de municípios às agências.
São utilizados os mesmos argumentos e dados da função
alocar_ucs
.Ou seja, as UCs de um mesmo município são alocadas integralmente para uma mesma agência. O custo de deslocamento agência-município é a soma dos custo de deslocamento entre cada UCs de um município e a agência candidata.
Permite maior sinergia entre as várias pesquisas em campo.
Parâmetros para o cálculo:
- CNEFE realizado no trimestre anterior ao da 1ª entrevista do Painel
- 200 dias de trabalho por entrevistador/ano
- 5 dias de coleta para CNEFE e 5 dias de coleta para a PNADC
- Uma viagem em caso de diárias inteiras, 5 (CNEFE) e 5 (PNADC) viagens nos casos sem diárias (ou com meias-diárias)
- São sugeridas alterações de jurisdição somente quando a economia proporcionada é maior que R$ 100.
Parâmetros (2):
- Todas as viagens são feitas por automóvel, o custo por litro de combustível é de R$ 6, o automóvel percorre 10 quilômetros com um litro. Cada hora de viagem tem custo adicional equivalente a R$ 10.
- Viagens (ida) com mais de 1,5 horas de duração fazem jus a diárias.
- A diária tem o valor de R$ 335, e é paga nos casos de pernoite ou quando a UPA é de fora da jurisdição/microrregião/região metropolitana da agência.
- Remuneração por entrevistador por mês: R$ 2675 .
Parâmetros (3):
- diarias_entrevistador_max = Inf
- n_entrevistadores_min = 1
- dias_treinamento = 0
- agencias_treinadas = NULL
- agencias_treinamento = NULL
- distancias_agencias = NULL
Executando a otimização:
## amostra mestra/pnadc
#pontos_upas_29 <- readRDS(here::here("data-raw/pontos_upas_29.rds"))
#ufs_now <- ufs%>%filter(uf_sigla==params2$uf_sigla)
render_tables <- function(ufnow) {
ufs_now <- ufs%>%filter(uf_sigla==ufnow)
uf_codigo_now <- ufs_now$uf_codigo
ufnow <- ufs%>%filter(uf_codigo==uf_codigo_now)
amostra_mestra <- readr::read_rds(here::here("data-raw/amostra_br_2024_01_2025_06.rds"))%>%
filter(ano_mes>=as.Date("2024-07-01"), ano_mes<=as.Date("2025-06-01"), uf_codigo==uf_codigo_now)
amostra_pnadc <- amostra_mestra%>%
distinct(uc=upa, pesquisa=paste("pnadc", substr(ano_mes,1,7)), agencia_codigo, dias_coleta=params2$dias_coleta_pnadc, viagens=params2$viagens_pnadc)
library(lubridate)## so months works
amostra_cnefe <- amostra_mestra%>%
filter(entrevista_numero==1)%>%
mutate(ano_mes=ano_mes-months(3))%>%
distinct(uc=upa, pesquisa=paste("cnefe", substr(ano_mes,1,7)), agencia_codigo, dias_coleta=params2$dias_coleta_cnefe, viagens=params2$viagens_cnefe)
carga_pnadc <- bind_rows(amostra_cnefe, amostra_pnadc)%>%
group_by(uc, agencia_codigo, municipio_codigo=substr(uc,1,7))%>%
summarise(dias_coleta=sum(dias_coleta), viagens=sum(viagens))
municipio_principal <- carga_pnadc%>%group_by(municipio_codigo)%>%summarise(dias_coleta=sum(dias_coleta))%>%arrange(desc(dias_coleta))%>%
head(1)
carga_pnadc_uf <- carga_pnadc%>%
filter(substr(uc,1,2)==ufnow$uf_codigo)%>%
## Importante: Sem as agências do principal municipio
filter(!grepl(municipio_principal$municipio_codigo, agencia_codigo))%>%
#ungroup#%>%filter(agencia_codigo%in%c("291360600", "291480200", "292870300", "293290300", "290490200", "292740800", "292740801", "291640100"))
ungroup#%>%filter(agencia_codigo%in%unique(agencia_codigo)[1:20])
## distancias uc
fname <- here::here(paste0("data-raw/distancias_agencias_upas_osrm_", uf_codigo_now, ".rds"))
distancias_ucs_all <- readRDS(fname)%>%
rename(uc=upa)%>%
transmute(uc, agencia_codigo, distancia_km, duracao_horas, municipio_codigo=substr(uc,1,7), ponto_origem)%>%
left_join(agencias_municipios_diaria, by=c("agencia_codigo", "municipio_codigo"))%>%
semi_join(carga_pnadc_uf, by="uc")%>%
mutate(diaria_pernoite=duracao_horas>params2$horas_viagem_pernoite)%>%
group_by(uc, agencia_codigo)%>%
## só a configuração de upa mais distante
arrange(desc(duracao_horas))%>%
slice(1)%>%
ungroup()
#distancias_ucs_all%>%ungroup%>%count(ponto_origem)
agencias_uf <- carga_pnadc_uf%>%
group_by(agencia_codigo)%>%
summarise(n_ucs_jurisdicao=n(), dias_coleta_jurisdicao=sum(dias_coleta))%>%
mutate(dias_coleta_agencia_max=Inf,
custo_fixo=0)%>%
## tira Cipó
mutate(dias_coleta_agencia_max=if_else(agencia_codigo=="290790500", 0, dias_coleta_agencia_max))
## sem custo fixo nem custo de treinamento
params_pnadc_0 <- list(ucs=carga_pnadc_uf,
agencias=agencias_uf,
custo_litro_combustivel = params2$custo_litro_combustivel,
custo_hora_viagem = params2$custo_hora_viagem,
kml = params2$kml,
valor_diaria = params2$valor_diaria,
## em um ano de coleta, um entrevistador consegue
## 48 upas pnadc / 24 upas POF / 18 Municipios
dias_coleta_entrevistador_max=params2$dias_coleta_entrevistador_max,
diarias_entrevistador_max=Inf,
dias_treinamento = 0,
agencias_treinadas = NULL,
agencias_treinamento = NULL,
distancias_ucs=distancias_ucs_all,
## for symphony solver
#gap_limit=5,
adicional_troca_jurisdicao = params2$adicional_troca_jurisdicao,
solver=params2$solver,
max_time=params2$max_time,
rel_tol=params2$rel_tol,
resultado_completo=FALSE
)
library(tictoc)
tic()
estrategias_pnadc <- bind_rows(
tibble(params_pnadc=list(params_pnadc_0),
descricao='sem remuneração entrevistadores'),
tibble(params_pnadc=list(modifyList(params_pnadc_0,
list( remuneracao_entrevistador=params2$remuneracao_entrevistador*12)
)),
descricao=glue::glue('remuneracao entrevistador por mês {params2$remuneracao_entrevistador}')),
tibble(params_pnadc=list(modifyList(params_pnadc_0,
list(n_entrevistadores_min=2, remuneracao_entrevistador=params2$remuneracao_entrevistador*12)
)),
descricao=glue::glue('mínimo de entrevistador=2, remuneracao entrevistador por mês {params2$remuneracao_entrevistador}')),
tibble(params_pnadc=list(modifyList(params_pnadc_0,
list(n_entrevistadores_min=3, remuneracao_entrevistador=params2$remuneracao_entrevistador*12)
)),
descricao=glue::glue('mínimo de entrevistador=3, remuneracao entrevistador {params2$remuneracao_entrevistador} por mês'))
)%>%
ungroup%>%#slice(1:2)%>%
mutate(resultado_uc=purrr::map(params_pnadc, ~do.call(alocar_ucs, .x)),
resultado_municipio=purrr::map(params_pnadc, ~do.call(alocar_municipios, .x))
)
#toc()
estrategias_pnadc_sum_uc <-
estrategias_pnadc%>%
rowwise(descricao)%>%
reframe(
bind_rows(
resultado_uc$resultado_agencias_otimo%>%mutate(modelo="Ótimo"),
resultado_uc$resultado_agencias_jurisdicao%>%mutate(modelo="Jurisdição")
)%>%
group_by(modelo)%>%
mutate(n_agencias=1)%>%
summarise(across(matches("custo|n_agencias"), ~sum(.x, na.rm=TRUE))))%>%
mutate(custo_total=custo_deslocamento+custo_fixo+custo_total_entrevistadores)%>%
select(descricao, modelo, n_agencias, custo_total, everything())
estrategias_pnadc_sum_municipio <-
estrategias_pnadc%>%
rowwise(descricao)%>%
reframe(
bind_rows(
resultado_municipio$resultado_agencias_otimo%>%mutate(modelo="Ótimo"),
resultado_municipio$resultado_agencias_jurisdicao%>%mutate(modelo="Jurisdição")
)%>%
group_by(modelo)%>%
mutate(n_agencias=1)%>%
summarise(across(matches("custo|n_agencias"), ~sum(.x, na.rm=TRUE))))%>%
mutate(custo_total=custo_deslocamento+custo_fixo+custo_total_entrevistadores)%>%
select(descricao, modelo, n_agencias, custo_total, everything())
tdist <- lapply(1:nrow(estrategias_pnadc), function(i) report_plans(estrategias_pnadc$resultado_uc[[i]])|>
gt::tab_options(table.font.size = "small", footnotes.font.size ="small")|>
gt::opt_interactive(use_compact_mode = TRUE, use_filters=TRUE))
tdist_municipios <- lapply(1:nrow(estrategias_pnadc), function(i) report_plans(estrategias_pnadc$resultado_municipio[[i]], level = "municipio_codigo")|>
gt::tab_options(table.font.size = "small", footnotes.font.size ="small")|>
gt::opt_interactive(use_compact_mode = TRUE, use_filters=TRUE))
alocacao_municipios <- lapply(1:nrow(estrategias_pnadc), function(i) plano_municipios(r = estrategias_pnadc$resultado_municipio[[i]])%>%
filter(troca)%>%
select(municipio_nome, agencia_nome, agencia_nome_jurisdicao, total_diarias, total_diarias_jurisdicao, custo_combustivel, custo_combustivel_jurisdicao)%>%gt::gt()%>%
gt::tab_caption("Sem remuneração por APM")%>%
gt::opt_interactive(use_compact_mode = TRUE, use_filters=TRUE))
tplans_uc <- estrategias_pnadc_sum_uc%>%
group_by(descricao)%>%
select(-modelo)%>%
reframe(across(everything(), diff))%>%
group_by(descricao)%>%
arrange(descricao)%>%
slice(1)%>%
select(descricao, n_agencias, custo_total, custo_total_entrevistadores, custo_diarias, custo_combustivel)%>%
ungroup%>%
#arrange(-custo_total)%>%
gt::gt()%>%
gt::cols_label(descricao='Modelo')%>%
gt::tab_caption("Redução de custos promovido pela otimização da rede de coleta")%>%
print_gt()
tplans_municipio <- estrategias_pnadc_sum_municipio%>%
group_by(descricao)%>%
select(-modelo)%>%
reframe(across(everything(), diff))%>%
group_by(descricao)%>%
arrange(descricao)%>%
slice(1)%>%
select(descricao, n_agencias, custo_total, custo_total_entrevistadores, custo_diarias, custo_combustivel)%>%
ungroup%>%
#arrange(-custo_total)%>%
gt::gt()%>%
gt::cols_label(descricao='Modelo')%>%
gt::tab_caption("Redução de custos promovido pela otimização da rede de coleta")%>%
print_gt()
list(sumario_planos_uc=tplans_uc, sumario_planos_municipio=tplans_municipio, distribuicao=tdist, distribuicao_municipios=tdist_municipios, alocacao_municipios=alocacao_municipios)
}
plano_dist <- 3
Planos RJ
r <- render_tables("RJ")
#>
#> Attaching package: 'lubridate'
#> The following objects are masked from 'package:base':
#>
#> date, intersect, setdiff, union
#> `summarise()` has grouped output by 'uc', 'agencia_codigo'. You can override
#> using the `.groups` argument.
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
r$alocacao_municipios[[1]]
r$sumario_planos_municipio%>%
gt::tab_caption("Por Município")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | 0 | −R$199.589 | −R$256.800 | R$37.520 | R$14.472 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | 0 | −R$199.278 | −R$256.800 | R$32.998 | R$20.357 |
remuneracao entrevistador por mês 2675 | −1 | −R$175.245 | −R$256.800 | R$47.402 | R$28.391 |
sem remuneração entrevistadores | 0 | −R$13.744 | R$0 | −R$4.020 | −R$9.664 |
r$sumario_planos_uc%>%
gt::tab_caption("Por UC")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | 0 | −R$244.071 | −R$256.800 | R$20.602 | −R$8.606 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | 0 | −R$280.688 | −R$288.900 | R$9.212 | −R$1.255 |
remuneracao entrevistador por mês 2675 | 0 | −R$250.234 | −R$256.800 | R$15.912 | −R$8.567 |
sem remuneração entrevistadores | 0 | −R$18.496 | R$0 | −R$5.528 | −R$11.322 |
Planos ES
r <- render_tables("ES")
#> `summarise()` has grouped output by 'uc', 'agencia_codigo'. You can override
#> using the `.groups` argument.
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
r$alocacao_municipios[[1]]
r$sumario_planos_municipio%>%
gt::tab_caption("Por Município")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | 0 | −R$112.642 | −R$96.300 | −R$45.728 | R$22.782 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | 0 | −R$110.024 | −R$96.300 | −R$40.368 | R$20.944 |
remuneracao entrevistador por mês 2675 | 0 | −R$111.087 | −R$96.300 | −R$54.102 | R$30.698 |
sem remuneração entrevistadores | 0 | −R$37.532 | R$0 | −R$58.122 | R$15.766 |
r$sumario_planos_uc%>%
gt::tab_caption("Por UC")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | 0 | −R$171.181 | −R$128.400 | −R$76.882 | R$26.608 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | 0 | −R$169.259 | −R$128.400 | −R$63.482 | R$17.218 |
remuneracao entrevistador por mês 2675 | 0 | −R$172.676 | −R$128.400 | −R$77.552 | R$25.951 |
sem remuneração entrevistadores | 0 | −R$49.988 | R$0 | −R$77.552 | R$21.290 |
Planos BA
r <- render_tables("BA")
#> `summarise()` has grouped output by 'uc', 'agencia_codigo'. You can override
#> using the `.groups` argument.
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
r$alocacao_municipios[[1]]
r$sumario_planos_municipio%>%
gt::tab_caption("Por Município")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | −15 | −R$904.492 | −R$1.155.600 | R$181.068 | R$55.973 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | −23 | −R$1.676.509 | −R$2.247.000 | R$513.052 | R$47.579 |
remuneracao entrevistador por mês 2675 | −3 | −R$615.352 | −R$674.100 | −R$9.882 | R$55.137 |
sem remuneração entrevistadores | −1 | −R$91.187 | R$0 | −R$101.840 | R$7.737 |
r$sumario_planos_uc%>%
gt::tab_caption("Por UC")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | −13 | −R$948.616 | −R$1.187.700 | R$153.765 | R$68.844 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | −22 | −R$1.647.293 | −R$2.118.600 | R$396.808 | R$60.086 |
remuneracao entrevistador por mês 2675 | −3 | −R$699.028 | −R$706.200 | −R$50.418 | R$45.129 |
sem remuneração entrevistadores | −1 | −R$115.154 | R$0 | −R$127.468 | R$9.032 |
Planos MG
r <- render_tables("MG")
#> `summarise()` has grouped output by 'uc', 'agencia_codigo'. You can override
#> using the `.groups` argument.
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
r$alocacao_municipios[[1]]
r$sumario_planos_municipio%>%
gt::tab_caption("Por Município")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | −18 | −R$1.059.901 | −R$1.508.700 | R$372.855 | R$59.070 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | −34 | −R$2.218.638 | −R$3.402.600 | R$937.498 | R$197.780 |
remuneracao entrevistador por mês 2675 | −5 | −R$781.441 | −R$995.100 | R$126.630 | R$68.592 |
sem remuneração entrevistadores | −1 | −R$49.038 | R$0 | −R$69.178 | R$15.439 |
r$sumario_planos_uc%>%
gt::tab_caption("Por UC")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | −20 | −R$1.254.245 | −R$1.797.600 | R$420.258 | R$96.763 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | −34 | −R$2.250.974 | −R$3.338.400 | R$871.502 | R$171.818 |
remuneracao entrevistador por mês 2675 | −6 | −R$878.419 | −R$1.027.200 | R$68.005 | R$62.534 |
sem remuneração entrevistadores | 0 | −R$57.464 | R$0 | −R$83.582 | R$20.109 |
Planos RS
r <- render_tables("RS")
#> `summarise()` has grouped output by 'uc', 'agencia_codigo'. You can override
#> using the `.groups` argument.
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
#> Joining with `by = join_by(agencia_codigo)`
r$alocacao_municipios[[1]]
r$sumario_planos_municipio%>%
gt::tab_caption("Por Município")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | −2 | −R$414.147 | −R$513.600 | R$45.058 | R$41.697 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | −9 | −R$671.544 | −R$1.027.200 | R$294.465 | R$48.903 |
remuneracao entrevistador por mês 2675 | 0 | −R$514.149 | −R$481.500 | −R$57.955 | R$20.442 |
sem remuneração entrevistadores | 0 | −R$101.923 | R$0 | −R$107.870 | R$4.887 |
r$sumario_planos_uc%>%
gt::tab_caption("Por UC")
Modelo | N Agencias | Custo Total | Custo Total Entrevistadores | Custo Diarias | Custo Combustivel |
---|---|---|---|---|---|
mínimo de entrevistador=2, remuneracao entrevistador por mês 2675 | −2 | −R$507.591 | −R$513.600 | −R$42.042 | R$36.682 |
mínimo de entrevistador=3, remuneracao entrevistador 2675 por mês | −8 | −R$746.709 | −R$1.059.300 | R$227.130 | R$68.653 |
remuneracao entrevistador por mês 2675 | 0 | −R$550.707 | −R$481.500 | −R$90.115 | R$16.127 |
sem remuneração entrevistadores | 0 | −R$125.956 | R$0 | −R$135.340 | R$7.029 |