LogoIntrodução às Técnicas de Imputação

Compartilhando o código em R

Tutorial transformação digital nº 5

Autores
Afiliação

Fundação João Pinheiro

Fundação João Pinheiro

Resumo

Este tutorial aborda técnicas de imputação e o pacote VIM que, além de utilizar métodos de visualização, possui métodos de imputação implementados para imputar valores ausentes e suspeitos.

Contato: transformacao.digital@fjp.mg.gov.br

1 Introdução

Imputação é formalmente definida como “um procedimento para criar um valor para um item específico num registro quando a resposta está ausente ou é inaceitável” (UNECE Glossary of Terms). Consiste em substituir um valor ausente ou rejeitado por um valor estimado viável, porém artificial. É um dos métodos usuais para lidar com não resposta parcial ou de itens em pesquisas. Em contrapartida, o método da reponderação é mais usado para não resposta total ou de unidades.

A imputação é aconselhável nas seguintes circunstâncias:

  1. Os mecanismos causadores de erros são adequadamente reconhecidos e compreendidos;

  2. Existem informações auxiliares disponíveis, com elevada capacidade de previsão, para todas as unidades da amostra, resultando em imputações que se aproximam dos valores reais;

  3. Os padrões de não resposta são classificáveis como Missing Completely At Random (MCAR) ou Missing At Random (MAR), condições nas quais a imputação é mais viável. Por outro lado, a imputação pode ser desafiadora ou até inviável quando o padrão de não resposta segue a categoria Not Missing At Random (NMAR).

Entretanto, a imputação pode também resultar em:

  1. Distorções nas distribuições das variáveis, alterando sua forma e intervalos naturais;

  2. Alterações nas relações intervariáveis, afetando a correlação e a interdependência entre elas;

  3. Incremento na complexidade do cálculo de variâncias, complicando a análise estatística.

Além disso, incorporar o erro devido à imputação na estimação de medidas de precisão ainda é tema de pesquisa e desenvolvimento.

Todo o material aqui apresentado foi baseado nas notas de aula de Crítica e Imputação (Silva 2020).

1.1 Classificações de imputação

A imputação pode ser realizada de forma manual ou automática.

Os métodos de imputação automática podem ser classificados

conforme a natureza do mecanismo de imputação:

  • Determinísticos;

  • Estocásticos.

e conforme o resultado da imputação:

  • Imputação de valor único;

  • Imputação múltipla.

2 Base de dados

Antes de iniciar o processo, é necessário carregar as bibliotecas necessárias. (Kowarik e Templ 2016; Loo e Jonge 2021; Petersen e Ekstrøm 2019)

# Lista de pacotes necessários
pacotes <- c("tidyverse", "gt","dataMaid","validate", "VIM")

# Verifica se os pacotes estão instalados e instala se necessário
install.packages(setdiff(x = pacotes,
                         y = rownames(installed.packages())))

# Carrega os pacotes
lapply(X = pacotes,
       FUN = library,
       character.only = TRUE)

2.1 Importação dos dados:

Os dados utilizados para a análise é da série do número de policiais presente na base de dados do IMRS.

Disponível em: base de dados

# Opção de vizualização
options(scipen = 999)

# Importar dados 
base <- readRDS("imrs_completo.rds")

# Fazendo o report
makeDataReport(base[,c("P_PM","P_PM1","D_POPT")], replace = TRUE)

2.2 Preparação dos dados

Vamos utilizar como exemplo o ano de 2014. O comando gt() pode ser usado para visualizar o conjunto de dados. Foram criadas duas variáveis para complementar a análise exploratória dos dados: diferença e fator.

base <- base %>% 
  select(
    IBGE7,
    Município,
    ANO,
    P_PM,
    P_PM1,
    D_POPT
  ) %>%  
  filter(ANO == 2013 | ANO == 2014) %>% 
  pivot_wider(id_cols = c(IBGE7,Município), names_from = ANO, values_from = c(D_POPT, P_PM, P_PM1)) %>%    mutate(DIF_VAR_PM = P_PM1_2014-P_PM1_2013,
                                                                                                     FAT_VAR_PM = (P_PM1_2014/P_PM1_2013))

base %>%
  head(5) %>%
  gt()
IBGE7 Município D_POPT_2013 D_POPT_2014 P_PM_2013 P_PM_2014 P_PM1_2013 P_PM1_2014 DIF_VAR_PM FAT_VAR_PM
3100104 Abadia dos Dourados 6892 6913 1117.33 957.71 6 7 1 1.1666667
3100203 Abaeté 23198 23224 756.33 782.41 30 29 -1 0.9666667
3100302 Abre Campo 13554 13551 831.94 831.94 16 16 0 1.0000000
3100401 Acaiaca 4001 4003 1306.67 784.00 3 5 2 1.6666667
3100500 Açucena 10182 10087 1141.78 1468.00 9 7 -2 0.7777778
# Fazendo outro report
makeDataReport(base, replace = TRUE)

2.3 Crítica de dados

As regras de crítica consistem em expressões analíticas que, ao serem aplicadas aos dados, resultam em valores lógicos do tipo ‘verdadeiro’ ou ‘falso’. Essas regras identificam ocorrências de valores ausentes ou potencialmente incorretos, os quais são submetidos a um processo subsequente de avaliação, que pode ser interativo ou automatizado.

regras <- validator(
  # Regras de tipo (T)
  TI01 = is.numeric(P_PM1_2013),
  TI01 = is.numeric(P_PM1_2014), 
  # Regras de validade (V)
  VI01 = (P_PM1_2013>= 0), 
  VI01 = (P_PM1_2014>= 0), 
  # Regras de consistência (C)
  CF01 = (P_PM1_2014/P_PM1_2013) <= 100,  
  CF02 = abs(P_PM1_2014-P_PM1_2013) <= 1000,
  CF03 = (abs(P_PM1_2014-P_PM1_2013) <= 1000) & ((P_PM1_2014/P_PM1_2013) <= 100),
  # Regras de distribuição (D)
  DF01 = P_PM1_2013 >= 10,  
  DF01 = P_PM1_2014 >= 10
  )

# Aplica regras de crítica aos dados
base_conf <- confront(base, regras)

# Obtém resumo da aplicação das regras aos dados
summary(base_conf) %>% gt()
name items passes fails nNA error warning expression
TI01 1 1 0 0 FALSE FALSE is.numeric(P_PM1_2013)
TI01.1 1 1 0 0 FALSE FALSE is.numeric(P_PM1_2014)
VI01 853 853 0 0 FALSE FALSE (P_PM1_2013 - 0 >= -0.00000001)
VI01.1 853 853 0 0 FALSE FALSE (P_PM1_2014 - 0 >= -0.00000001)
CF01 853 851 2 0 FALSE FALSE (P_PM1_2014/P_PM1_2013) <= 100
CF02 853 846 7 0 FALSE FALSE abs(P_PM1_2014 - P_PM1_2013) <= 1000
CF03 853 846 7 0 FALSE FALSE (abs(P_PM1_2014 - P_PM1_2013) <= 1000) & ((P_PM1_2014/P_PM1_2013) <= 100)
DF01 853 351 502 0 FALSE FALSE P_PM1_2013 - 10 >= -0.00000001
DF01.1 853 363 490 0 FALSE FALSE P_PM1_2014 - 10 >= -0.00000001
# gráfico
plot(base_conf)

Para fins ilustrativos, consideremos que os registros que não satisfazem a regra de consistência CF02 correspondem aos que necessitam de imputação de dados. Nessa situação específica, será implementada uma estratégia de imputação automática.

# Selecionando os casos
violating(base,base_conf[c("CF03")])
# A tibble: 7 × 10
    IBGE7 Município     D_POPT_2013 D_POPT_2014 P_PM_2013 P_PM_2014 P_PM1_2013
    <dbl> <chr>               <dbl>       <dbl>     <dbl>     <dbl>      <dbl>
1 3118601 Contagem           631104      636604      402.      345.       1502
2 3118700 Coqueiral            9388        9363     1161.      407.          8
3 3136652 Juatuba             23965       24430      822.      372.         27
4 3136702 Juiz de Fora       540079      544842      368.      514.       1404
5 3143302 Montes Claros      381751      386175      295.     1178.       1228
6 3143401 Monte Sião          22315       22556     1247.      288.         17
7 3170305 Umburatiba           2716        2703      676.      397.          4
# ℹ 3 more variables: P_PM1_2014 <dbl>, DIF_VAR_PM <dbl>, FAT_VAR_PM <dbl>
# Preparando os dados para imputação
base_edit <- base %>% 
  mutate(
    P_PM1_2014 = if_else(abs(P_PM1_2014-P_PM1_2013) <= 1000,P_PM1_2014, NA_real_),
    CLASS_TAM = case_when(D_POPT_2014>=1000000 ~ "1",
                          D_POPT_2014 < 1000000 & D_POPT_2014 >= 200000 ~ "2",
                          D_POPT_2014 < 200000 & D_POPT_2014 >= 100000 ~ "3",
                          D_POPT_2014 < 100000 & D_POPT_2014 >= 10000 ~ "4",
                          D_POPT_2014 < 10000 ~ "5")
  )

3 Técnicas de imputação

Conforme a abordagem que guia a imputação:

  • Baseada em regras;

  • Dedutiva;

  • Baseada em modelos (model-based);

  • Usando registros doadores (donor-based).

3.1 Imputação baseada em regras

Neste método, os valores a serem imputados são estabelecidos com base nos dados de outros campos disponíveis ou a partir dos próprios valores que foram inicialmente rejeitados e estão sujeitos à substituição. As regras operacionais adotam o formato de condicionais: SE (condição específica) ENTÃO (execute a ação de imputação). Para a definição precisa dessas regras, é essencial o conhecimento especializado na área temática correspondente.

Este método permite a detecção de erros e a imputação concomitante, o que o torna particularmente eficaz no manejo de erros sistemáticos cujas características são bem compreendidas.

A vantagem desse procedimento reside na sua simplicidade de execução, uma vez que os mecanismos de erro estejam claramente identificados e descritos. Além disso, ele possibilita uma recuperação eficiente dos ‘valores verdadeiros’ sempre que a origem do erro for corretamente diagnosticada.

Entretanto, as desvantagens incluem o risco de introdução de viés nas estimativas caso os mecanismos causadores de erro não sejam corretamente compreendidos. Ademais, a complexidade e a dificuldade de implementação podem aumentar significativamente à medida que o número de regras especificadas cresce.

3.2 Imputação dedutiva

Considerando os valores presentes em um registro e apoiando-se em relações matemáticas ou lógicas, pode-se identificar um subconjunto de valores que, após serem imputados, garantem que o registro atenda a todas as regras de crítica estabelecidas.

No caso em que apenas uma variável esteja com valor faltante, é possível inferir seu valor a partir das outras duas variáveis, seguindo uma equação de equilíbrio.

Com o uso de um software apropriado e um conjunto coerente de regras de crítica, este se revela como o método de imputação de menor custo. Ademais, ele é confiável, uma vez que as ações de imputação são fundamentadas em princípios lógicos e consistentes.

No entanto, a eficácia desse método depende diretamente da qualidade das regras de crítica implementadas. Ele é mais adequado para situações em que as regras de crítica são inflexíveis.

3.3 Imputação baseada em modelos

3.3.1 Por média ou moda

A concepção fundamental deste método é a imputação de valores faltantes utilizando um valor resumo, que é derivado dos dados disponíveis. Sugere-se que, para dados ausentes de variáveis numéricas contínuas, se impute o valor da média ponderada dos respondentes. Já para variáveis categóricas ou numéricas discretas, recomenda-se a imputação do valor modal, isto é, a categoria que ocorre com maior frequência.

Embora este método seja considerado um padrão de referência em diversos estudos comparativos, a sua aplicação prática é relativamente rara.

# Imputação por média - NÃO RECOMENDADO
imput_media <- base_edit %>%  
  mutate(
    P_PM1_2014_imp = if_else(is.na(P_PM1_2014), T, F),
    P_PM1_2014     = if_else(P_PM1_2014_imp, round(weighted.mean(P_PM1_2014, D_POPT_2014, na.rm = TRUE)), round(P_PM1_2014))
  ) %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )

imput_media %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 1800 TRUE
3118700 Coqueiral 8 1800 TRUE
3136652 Juatuba 27 1800 TRUE
3136702 Juiz de Fora 1404 1800 TRUE
3143302 Montes Claros 1228 1800 TRUE
3143401 Monte Sião 17 1800 TRUE
3170305 Umburatiba 4 1800 TRUE

3.3.2 Por média ou moda dentro de classes

É necessário definir classes e implementar o método de imputação supracitado dentro desses agrupamentos específicos. Estas classes devem ser estruturadas de modo que as médias dos respondentes e dos não respondentes dentro de cada classe sejam equivalentes. Algoritmos de segmentação podem ser empregados na formação destas classes de imputação, por exemplo, as árvores de regressão ou de classificação.

As vantagens desse método incluem sua relativa simplicidade e a utilização de informações já disponíveis, caracterizando-se como um método ‘determinístico’. Contudo, há desvantagens significativas, como a possibilidade de imputação de valores que não são observados nos dados, o que pode resultar na criação de picos artificiais e distorções nas distribuições dos dados. Além disso, pode haver um viés na estimativa de variâncias e uma atenuação nas medidas de associação entre as variáveis.

# Imputação por média dentro da classe
imput_media_classe <- base_edit %>%  
  mutate(
    P_PM1_2014_imp = if_else(is.na(P_PM1_2014), T, F))
    
tabela_media <- imput_media_classe %>% group_by(CLASS_TAM)  %>% 
  summarise(media_classe = round(weighted.mean(P_PM1_2014, D_POPT_2014, na.rm = TRUE)))   
tabela_media %>% gt()    
CLASS_TAM media_classe
1 12921
2 498
3 113
4 48
5 19
imput_media_classe <- imput_media_classe %>% 
  left_join(tabela_media) %>% 
      mutate(
    P_PM1_2014 = if_else(P_PM1_2014_imp, media_classe, round(P_PM1_2014))
  ) %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )

imput_media_classe %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 498 TRUE
3118700 Coqueiral 8 19 TRUE
3136652 Juatuba 27 48 TRUE
3136702 Juiz de Fora 1404 498 TRUE
3143302 Montes Claros 1228 498 TRUE
3143401 Monte Sião 17 48 TRUE
3170305 Umburatiba 4 19 TRUE

3.3.3 Imputação por razão

A imputação de dados é realizada atribuindo-se à resposta do período atual (\(y_t\)) o valor da resposta do período anterior (\(y_{t-1}\)), ajustado por um fator de crescimento (\(R_t\)): \(y_{k,t} = R_t \times y_{k,t-1}\). Esse fator de crescimento é comumente calculado dentro de estratos de imputação específicos, utilizando informações de respondentes que disponibilizaram dados para ambos os períodos considerados.

Por exemplo, pode-se empregar a razão entre o valor da variável no período atual e o valor da mesma variável no período anterior como uma técnica de imputação.

# Imputação por razão = População 2022 / P_PM 2021
imput_razao <- base_edit  %>%  
  mutate(
    P_PM1_2014_imp = if_else(is.na(P_PM1_2014), T, F),
    P_PM1_2014     = if_else(P_PM1_2014_imp, round(D_POPT_2014 / P_PM_2013), round(P_PM1_2014))
  )  %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )

imput_razao %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 1585 TRUE
3118700 Coqueiral 8 8 TRUE
3136652 Juatuba 27 30 TRUE
3136702 Juiz de Fora 1404 1482 TRUE
3143302 Montes Claros 1228 1310 TRUE
3143401 Monte Sião 17 18 TRUE
3170305 Umburatiba 4 4 TRUE

3.3.4 Imputação por regressão

Por exemplo, pode-se imputar as despesas com pessoal utilizando como variáveis a receita e o total de pessoal ocupado, coletados na mesma etapa da pesquisa. A imputação baseada em regressão é tipicamente realizada dentro de estratos ou classes de imputação, que são conjuntos de registros organizados de forma a minimizar o viés nas estimativas resultantes.

O processo inicia-se com o ajuste de um modelo de regressão do tipo \(y_k = x_k' \beta + \epsilon\_k\) aos dados fornecidos pelos respondentes, onde \(y\) é a variável com valores faltantes e \(x\) é um vetor que contém as variáveis preditoras, as quais são conhecidas para todas as observações na amostra. Os valores faltantes de \(y\) são então imputados utilizando os valores preditos pelo modelo.

Este método é relativamente simples de ser aplicado, contanto que se disponha de um software apropriado. Se os modelos forem adequadamente especificados e possuírem uma forte capacidade preditiva dos valores ausentes ou rejeitados, os resultados podem ser muito satisfatórios. Contudo, a especificação e o ajuste do(s) modelo(s) podem exigir um investimento considerável de tempo.

3.4 Imputação por Registros Doadores

Os valores a serem imputados são extraídos de registros que são considerados completos e ‘limpos’, ou seja, registros que não apresentam falhas segundo as regras de crítica estabelecidas. Os métodos conhecidos como hot-deck representam um exemplo específico dessa técnica. Existem duas abordagens alternativas para a seleção de registros doadores:

  1. Seleção Aleatória: Essa abordagem é comumente preferida em métodos de imputação que operam dentro de classes ou estratos previamente definidos.

  2. Vizinho Mais Próximo: Essa técnica seleciona registros que apresentam a menor distância em relação ao registro receptor, considerando as variáveis preditoras.

Ambas as estratégias têm como objetivo a escolha de valores apropriados para a imputação, visando preservar a integridade e a fidedignidade do conjunto de dados.

3.4.1 Imputação Aleatória por Registro Doador (Hot-Deck)

A premissa central deste método reside na utilização de dados provenientes de respondentes (denominados registros doadores) para preencher lacunas nos conjuntos de dados que estão incompletos (referidos como registros receptores). A seleção dos registros doadores ocorre através de um processo de sorteio aleatório. Esta técnica possui diversas variantes, que podem abarcar:

  • Diferentes procedimentos para a seleção dos registros doadores, que podem ser realizada de forma global ou dentro de classes específicas, e com probabilidades iguais ou desiguais de seleção.
  • A possibilidade de usar o mesmo registro doador mais de uma vez ou restrito a um único uso.
  • A imputação pode ser feita individualmente para cada campo faltante ou, alternativamente, pode-se imputar vários campos com base em um único registro doador.

Este método emergiu na década de 1960 sob a designação de Hot-deck e tem sido adaptado e refinado ao longo do tempo para atender a diferentes contextos e necessidades de análise de dados.

# Hot-deck - Doador aleatório
imput_hotdeck_ale <- base_edit %>%  
  hotdeck(variable = "P_PM1_2014",
          ord_var = "IBGE7",
          domain_var = c("CLASS_TAM")) %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )
imput_hotdeck_ale %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 573 TRUE
3118700 Coqueiral 8 34 TRUE
3136652 Juatuba 27 7 TRUE
3136702 Juiz de Fora 1404 603 TRUE
3143302 Montes Claros 1228 603 TRUE
3143401 Monte Sião 17 24 TRUE
3170305 Umburatiba 4 16 TRUE
# Hot-deck - Doador aleatório após ordenação por população
imput_hotdeck_ord_pop <- base_edit %>%  
  hotdeck(variable = "P_PM1_2014",
          ord_var = "D_POPT_2014",
          domain_var = c("CLASS_TAM")) %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )

imput_hotdeck_ord_pop %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 573 TRUE
3118700 Coqueiral 8 9 TRUE
3136652 Juatuba 27 16 TRUE
3136702 Juiz de Fora 1404 573 TRUE
3143302 Montes Claros 1228 455 TRUE
3143401 Monte Sião 17 52 TRUE
3170305 Umburatiba 4 7 TRUE

3.4.2 Registro Doador Vizinho Mais Próximo

Na técnica de imputação conhecida como “registro doador de vizinho mais próximo”, um registro doador é escolhido com base na sua semelhança ou proximidade com o registro receptor, que é o não respondente.

Normalmente, calcula-se uma função de distância entre o registro não respondente e os potenciais doadores. O registro doador selecionado é aquele que apresenta o menor valor na função de distância, sendo assim identificado como o “vizinho mais próximo”.

Quanto à classificação dos algoritmos utilizados neste processo, eles podem ser divididos em dois tipos: não supervisionados e supervisionados. Os algoritmos não supervisionados incluem aqueles baseados no modelo de decisão de Fellegi-Sunter, que pode empregar o algoritmo EM para estimativa de parâmetros, além de métodos como K-Means, e Bclust, que é uma forma de agrupamento embolsado. Por outro lado, os algoritmos supervisionados envolvem Rpart, que utiliza a técnica de partição recursiva; Bagging, que é uma agregação de bootstrap; Bumping, que se refere à sombrinha de parâmetros de modelo de bootstrap; ADA, que é um método de boosting adaptativo; SVM, que se baseia em máquinas de vetores de suporte; e Nnet, que é relacionado a redes neurais.

# Knn padrão (k = 5)
imput_knn_pad <- base_edit %>%  
  kNN(variable = "P_PM1_2014",
      dist_var = c("D_POPT_2014","P_PM1_2013"),
      k = 5 ) %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )

imput_knn_pad %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 573 TRUE
3118700 Coqueiral 8 9 TRUE
3136652 Juatuba 27 22 TRUE
3136702 Juiz de Fora 1404 573 TRUE
3143302 Montes Claros 1228 573 TRUE
3143401 Monte Sião 17 20 TRUE
3170305 Umburatiba 4 5 TRUE
# Knn ponderado - Maior peso para os vizinhos mais próximos
# Dado os k vizinhos, aqueles mais próximos têm maior peso ao agregar os resultados
imput_knn_pond <- base_edit %>%  
    kNN(variable = "P_PM1_2014",
      dist_var = c("D_POPT_2014","P_PM1_2013"),
      k = 5, 
      numFun = weighted.mean, 
      weightDist = T ) %>%  
  select(
    IBGE7,
    Município,
    P_PM1_2013,
    P_PM1_2014,
    P_PM1_2014_imp
  )

imput_knn_pond %>%  filter(P_PM1_2014_imp == TRUE) %>% gt()
IBGE7 Município P_PM1_2013 P_PM1_2014 P_PM1_2014_imp
3118601 Contagem 1502 557.122047 TRUE
3118700 Coqueiral 8 56.599515 TRUE
3136652 Juatuba 27 19.400169 TRUE
3136702 Juiz de Fora 1404 556.316145 TRUE
3143302 Montes Claros 1228 549.057319 TRUE
3143401 Monte Sião 17 46.198687 TRUE
3170305 Umburatiba 4 5.199993 TRUE

3.5 Visualização os resultados

A tabela a seguir apresenta os resultados imputados dos diferentes métodos aqui apresentados.

tab <- left_join(imput_media %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014) ,
          imput_media_classe %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014),by=c("Município")) %>% 
  left_join(imput_razao %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014),by=c("Município")) %>% 
  left_join(imput_hotdeck_ale %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014),by=c("Município")) %>% 
  left_join(imput_hotdeck_ord_pop %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014),by=c("Município")) %>% 
  left_join(imput_knn_pad %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014),by=c("Município")) %>% 
  left_join(imput_knn_pond %>% filter(P_PM1_2014_imp == TRUE) %>%  select(Município, P_PM1_2014),by=c("Município"))

colnames(tab) <- c("Município","Média","Média_classe","Razão","Hot Deck_aleat","Hot Deck_ord_pop","KNN_pad","KNN_pond")
tab %>%  gt()
Município Média Média_classe Razão Hot Deck_aleat Hot Deck_ord_pop KNN_pad KNN_pond
Contagem 1800 498 1585 573 573 573 557.122047
Coqueiral 1800 19 8 34 9 9 56.599515
Juatuba 1800 48 30 7 16 22 19.400169
Juiz de Fora 1800 498 1482 603 573 573 556.316145
Montes Claros 1800 498 1310 603 455 573 549.057319
Monte Sião 1800 48 18 24 52 20 46.198687
Umburatiba 1800 19 4 16 7 5 5.199993

4 Imputação: Precauções Essenciais

Considere a imputação como uma apólice de seguro: é essencial possuí-la, mas idealmente, não se quer recorrer a ela. É crucial adotar práticas reprodutíveis e manter registros dos dados antes e após a imputação. Na eventualidade de divulgar conjuntos de microdados, é importante incluir indicativos que denotem quais valores foram imputados. O monitoramento cuidadoso do processo de imputação é imperativo para garantir que seu impacto nas estimativas e nos dados permaneça dentro dos limites aceitáveis. Não se esqueça também de considerar os efeitos da imputação no cálculo das variâncias.

5 Citação

Souza, Igor; Gonçalves, C. Introdução às Técnicas de Imputação. Tutorial Transformação Digital. Fundação João Pinheiro, n. 5, 2023. Disponível em: https://rpubs.com/fjp/imputacao.

6 Referências

Kowarik, Alexander, e Matthias Templ. 2016. «Imputation with the R Package VIM» 74. https://doi.org/10.18637/jss.v074.i07.
Loo, Mark P. J. van der, e Edwin de Jonge. 2021. «Data Validation Infrastructure for R» 97. https://doi.org/10.18637/jss.v097.i10.
Petersen, Anne Helby, e Claus Thorn Ekstrøm. 2019. «dataMaid: Your Assistant for Documenting Supervised Data Quality Screening in R» 90. https://doi.org/10.18637/jss.v090.i06.
Silva, Pedro do Nascimento. 2020. «Notas de aula de Crítica e Imputação». Escola Nacional de Ciências Estatísticas - Instituto Brasileiro de Geografia e Estatística.