Como isto foi feitodecisões, limites e o que não deu certo

fórmula de cada indicador → ← mapa

Seis censos, de 1970 a 2022, cada um desenhado na malha do seu próprio ano. Esta página conta como os números foram construídos, o que foi verificado, e — principalmente — onde estão os buracos. A página de fórmulas mostra a conta de cada indicador, variável por variável; esta aqui trata do que atravessa todos eles.

Fontes

censode onde vemcomo é lido
2022microdados de área de ponderação, IBGE DuckDB direto no parquet, na máquina
1970–2010microdados da amostra, IBGE, pelo Base dos Dados BigQuery, formato longo
1980, partemicrodado original em SPSS (Cesit/Unicamp), 26 estados convertidos em parquet os 53 municípios que a extração não localiza, e 24 indicadores que ela não tem como produzir

Os cinco censos de 1970 a 2010 são lidos do espelho que a Base dos Dados mantém no BigQuery (br_ibge_censo_demografico). O dado é o do IBGE; o que a Base dos Dados faz é deixá-lo consultável em SQL, sem baixar nada — o que permitiu extrair seis censos de uma vez, e voltar a eles a cada correção sem refazer nenhum download. As armadilhas de universo e de valor sentinela descritas abaixo são do microdado original, e não da intermediação.

Toda proporção é ponderada pelo peso amostral (P0111 em 2022, peso_amostral, v054, v604 conforme o ano), nunca contagem de linha. Média e razão saem de soma de numerador e denominador, e a fórmula é reaplicada depois da agregação — somar percentuais municipais daria peso igual a São Paulo e a Borá.

Mediana é a exceção. A mediana de um estado não sai das medianas dos seus municípios, então ela é calculada direto do microdado em cada nível geográfico, por soma acumulada de peso. Nunca por PERCENTILE_CONT, que ignora o peso amostral e devolveria a mediana das linhas, não das pessoas.

A armadilha principal: universo restrito

Muita variável do Censo só é perguntada a um subconjunto da população. Usar “não nulo” como denominador produz então um número plausível e errado, e nenhum erro é levantado. Isto já derrubou dez indicadores neste projeto:

variávelo que davadenominador certo
P0600 migração (2022)65,4% de migrantespopulação de 5 anos ou mais
P1140 trabalho (2022)100,0% trabalhando foratotal de ocupados
P0260 quilombola (2022)7,8%, doze vezes o publicadopopulação total
v0220 internet (2010)80,2% com internetv0219, domicílios permanentes
v0626 migração (2010)1,5% de migrantescomparação de código em v6264
v3211 residência anterior (1991)43,4% de migrantesv0318 < 5

Duas variantes não são “não nulo”, mas dão no mesmo:

Valor sentinela é uma terceira forma, e a mais traiçoeira porque não deixa rastro de cobertura. v3561 (rendimento, 1991) é preenchida para todos, mas o código de “sem declaração” é um número no meio da escala: a média nacional saiu em 1,7 milhão de cruzeiros. O detalhe que custou anos de dado é que ele é “todos os noves” na largura do campo daquela variável, e a largura muda dentro do mesmo censo — 8 dígitos aqui, 10 no rendimento domiciliar. Filtrar por uma largura só deixa o resto passar. Está contado em Rendimento em reais de 2026.

Sentinela não se descobre olhando o máximo: se descobre contando quantos registros caem em cada largura de all-nines. Um pico é resposta; um valor solto é lixo de digitação.

Antes de escrever qualquer denominador, medir a cobertura. Cobertura muito abaixo de 100% num indicador que deveria valer para todos é o sinal — e cobertura de exatamente 100% num quesito que só faz sentido para parte da população é o sinal contrário, do mesmo defeito.

Como se valida

Nenhum dos erros acima levanta exceção. Todos produzem percentual plausível. Só dois testes os pegam:

  1. Bater o agregado nacional contra o publicado pelo IBGE. A célula de salvamento da extração imprime faixas esperadas para dezenas de indicadores e marca o que sai fora.
  2. Pôr o indicador lado a lado nos censos em que existe. Com seis censos, a série é o teste mais barato, e pega o que a faixa de um ano só deixa passar. Foi assim que a previdência de 2000 caiu (18,7% entre 54,5 e 60,5) e que a frequência escolar de 1980 caiu — 62,7% contra 62,2% de 1970, quando a matrícula no 1º grau tinha ido de 16 para 22,6 milhões.

Onde há duas fontes para o mesmo dado, elas são comparadas. Os 52 municípios de 1980 recuperados do SPSS só foram gravados depois de os 171 municípios de Goiás que existem nas duas fontes baterem com diferença 0,000000 em 40 indicadores. E as fórmulas em R não foram copiadas à mão do SQL: são geradas dele, porque duas cópias da mesma conta divergem na primeira correção e as duas continuam parecendo certas.

Um erro que só a comparação entre indicadores pegou

Em 1970, moradores por domicílio e tamanho médio da família estavam trocados. O primeiro saía da variável v005 (“Total de pessoas”) do registro de domicílio e dava 4,96; o segundo saía da contagem de pessoas por id_domicilio e dava 5,12. Os dois números são plausíveis, nenhum levanta exceção, e cada um isolado passa em qualquer conferência contra o publicado.

O que denunciou foi pôr os dois lado a lado: a família não pode ser maior que o domicílio que a contém. Juntando as duas tabelas do censo pela chave (município, domicílio), v005 revelou-se igual à contagem de moradores em 95,04% dos domicílios e menor em 4,95% — exatamente a fração que tem mais de uma família (1,053 em média). v005 conta a família, e coincide com o domicílio nos 95% em que os dois são a mesma coisa. Foi por isso que a troca sobreviveu tanto tempo.

A correção não usa v005 para nenhum dos dois: a tabela de pessoa tem id_domicilio e numero_familia, então as duas unidades saem da mesma varredura com agrupamentos diferentes. E o teste que fecha é de consistência interna, não contra fonte externa — a razão entre os dois é o número de famílias por domicílio, e ela deu 1,054 contra os 1,053 medidos por caminho independente.

Geografia: cada censo na malha do seu ano

Eram 3.952 municípios em 1970 e são 5.570 hoje. Mato Grosso do Sul é de 1977, Tocantins de 1988, e Rondônia, Roraima e Amapá eram territórios. Cada censo é desenhado na malha do seu ano, e o contorno estadual troca junto com o dado.

A extração grava o código moderno do município mesmo nos censos antigos; a malha grava o da época. A ponte vai por nome, aceitando só correspondência única dentro do ano — um palpite errado aqui pinta o polígono errado e não levanta exceção. Um caso o nome não resolve, porque ele próprio mudou: em 1970 o município do Rio de Janeiro era o Estado da Guanabara, com código e nome próprios.

Os buracos de 1970 e 1980

A região que hoje é Tocantins e a que hoje é Mato Grosso do Sul ficavam cinzas. A causa não é a ponte de código — onde há dado, os códigos batem dos dois lados. É dado ausente: o arquivo traz essas pessoas sem código de município, então elas entram no total do estado da época e em polígono nenhum.

anomalha sem dadopopulação órfãsituação
1970105 municípios826 mil resolvido pelos códigos da época
198054 municípios740 mil resolvido pelo microdado original

Em 1970 há duas causas, e só a segunda é dado ausente. A primeira é o dígito verificador. Campo Grande aparece no dado como 5102702 e na malha como 5102705: os seis primeiros dígitos são os mesmos, o sétimo — que é só o verificador — não. A ponte por nome não pega esses casos porque 5102702, lido pela divisão territorial de hoje, é Canarana, criada em 1979, que não pode ter dado de 1970. Quem confirma o pareamento é a população: 140.233 pessoas, que é Campo Grande de 1970 no publicado. São 27 municípios do futuro Mato Grosso do Sul, entre eles Corumbá, Dourados e Três Lagoas. Os seis primeiros dígitos identificam município por construção, e não há uma colisão sequer nas malhas de 1970 a 2010 — ainda assim a regra só aceita quando o prefixo é único dos dois lados e o polígono está livre.

A segunda: os registros órfãos ainda carregam a geografia da época: UF, microrregião e o código do município como ele era então. Essa tripla identifica município um para um — zero ambiguidades nos 3.907 pares em que há código moderno para conferir. O que ela não traz é o nome, e sem nome não há ponte para a malha.

A tradução veio de duas fontes e de uma regularidade. A Divisão Territorial de 1970 do Centro-Oeste nomeia os 84 municípios de Mato Grosso e resolve esse estado direto. Goiás não está naquela divisão, mas o código do município é o posto alfabético dentro da microrregião — e isso não é suposição: nos 84 municípios de Mato Grosso, onde há as duas informações, o posto reproduz o código em todos. Os nomes de Goiás vêm de 1980, onde os municípios existem, e as microrregiões de 1970 e 1980 têm os mesmos tamanhos (12, 7, 7, 15, 10 e 1).

O teste que autoriza o encaixe: duas dessas microrregiões cruzam a futura divisa TO/GO, então parte dos seus municípios tem código moderno e serve de gabarito. São 14 âncoras, e as 14 caem no posto certo. Se uma saísse do lugar, o script pararia sem gravar nada. Com isso 73 dos 74 municípios órfãos voltaram ao mapa; o que sobra é um no Ceará, para o qual não há divisão territorial de 1970 que o nomeie.

Em 1980 o microdado distribuído não tem como localizá-los: são 178.636 linhas com id_municipio nulo e nenhuma outra coluna geográfica — nem identificador de domicílio, então nem a transferência domicílio → pessoa seria possível. O microdado original em SPSS tem: a variável v5 corresponde aos quatro primeiros dígitos do código do município (o código sem o dígito verificador), e 223 de 223 municípios de Goiás casam. Com isso os 52 municípios do futuro Tocantins voltaram ao mapa, e a população de 1980 subiu de 118,3 para 119,0 milhões, contra 119,003 publicados.

Este defeito ficou invisível por muito tempo porque o pipeline só contava dado sem geometria, nunca geometria sem dado — e o defeito mora do segundo lado. Polígono sem dado fica cinza exatamente como polígono com dado faltando. Hoje o relatório sai nos dois sentidos a cada rodada.

A malha de áreas de ponderação de 2000

O Censo 2000 tem área de ponderação no microdado, mas o geobr só publica essa malha para 2010 e 2022. Ela foi construída aqui, a partir da composição setor censitário → área de ponderação que o IBGE distribui com os arquivos auxiliares do censo: 215.811 setores em 9.336 áreas, cobrindo os mesmos 5.507 municípios que a extração produz.

O problema: a malha de setores de 2000 é incompleta

A malha de setores urbanos de 2000 do IBGE só existe para municípios com mais de 25 mil habitantes — e, mesmo neles, é parcial. Isso foi verificado na fonte, não na cópia: o arquivo que o próprio IBGE distribui para Angra dos Reis tem 41 polígonos, e o censo de 2000 registra 181 setores naquele município. Os códigos estão no mesmo formato de 15 dígitos dos dois lados, então não é falha de junção. Somando urbano e rural, faltam 22.431 dos 215.811 setores.

Procuramos alternativa e não há. O repositório consolidado que circula no GitHub é a mesma coleção de arquivos do IBGE, e o CEM/USP só publica áreas de ponderação de 2010. A discussão pública sobre isso está na issue 152 do geobr, aberta desde 2020: o mantenedor do pacote registra que “existem áreas de ponderação para o censo 2000, mas não acho os shapes em lugar algum”, e que “os setores censitários de 2000 têm vários problemas”. Em novembro de 2023 o IBGE estava fazendo testes internos, sem prazo. O método de reconstrução sugerido lá — unir os setores pelos códigos das áreas e dissolver — é o mesmo usado aqui; quem o aplicou trabalhou só na Região Metropolitana de São Paulo, onde a cobertura urbana é a melhor do país, e por isso a lacuna nacional não aparece naquele relato.

Como a malha foi montada, em ordem de confiança

origemáreaso que é
município inteiro5.023 5.023 dos 5.507 municípios têm uma área só, e nesses a área é o município. Vem da malha municipal de 2000, que é completa.
dissolução de setores4.057 áreas cujos setores existem todos na malha.
subtração167 município onde falta uma área só: ela é o que sobra depois de tirar as irmãs. Vale apenas quando falta uma — com duas, não há como saber qual pedaço é de qual.
dissolução parcial
+ preenchimento
89 áreas com cobertura incompleta (82% dos setores, em média). São dissolvidas do que existe, e o vazio que sobra no município é atribuído à área vizinha com maior fronteira compartilhada.
total9.336 todas as áreas de ponderação de 2000 têm polígono.

As 89 do último grupo são aproximação, e é honesto dizer isso. O pedaço não coberto vai para uma área que fisicamente encosta nele — não é interpolação arbitrária — mas a divisa interna entre essas áreas não é a divisa oficial do IBGE. Elas estão em 38 municípios, concentrados em Pernambuco, Bahia, Rio de Janeiro e São Paulo. O preenchimento redistribui, nesses 38 municípios, 1,0% da área municipal em média. A alternativa era deixar 89 buracos no mapa, indistinguíveis de dado faltando.

Limpeza: 26.148 fiapos e 80.878 buracos

Toda operação de diferença entre polígonos que não encostam exatamente deixa lixo, e a malha de 2000 não encosta exatamente em lugar nenhum. A subtração devolvia, junto com a área de verdade, um filete ao longo de cada divisa interna das áreas irmãs: mediana de 75 pedaços soltos por área, máximo de 1.432. E dissolver setores que não ladrilham deixa vazios dentro do polígono. No mapa os dois viram o mesmo risquinho.

Um passo de limpeza apaga pedaço solto e tapa buraco quando ele é ao mesmo tempo insignificante em proporção (menos de 1% da parte maior) e minúsculo em termos absolutos (menos de 1 km²). As duas condições juntas são necessárias: só a primeira apagaria ilha de verdade numa área grande, só a segunda apagaria ilha pequena numa área pequena. O resultado leva a mediana de pedaços por área de 75 para 1, e o máximo de 1.432 para 67 — a mesma ordem da malha oficial de 2010.

A malha é conferida antes de ser usada: a soma das áreas de ponderação dividida pela área do município dá 1,000 na mediana, com 30 de 5.508 municípios fora da faixa de 0,95 a 1,05. Nenhuma área sai com geometria inválida ou vazia.

E o dado é conferido contra ela, que é um teste diferente: somar a população das áreas de ponderação de um município tem de devolver o município. Devolve em 5.507 de 5.507, com razão 1,0000 do mínimo ao máximo — 169,9 milhões dos dois lados. É o teste que pega junção errada, porque um código casado com a área errada continua produzindo mapa bonito. As 9.336 áreas casaram pelo código inteiro de 13 dígitos, sem precisar do remendo que 2010 exige (lá o código do microdado diverge do da malha em 464 áreas), o que era de esperar: a malha de 2000 foi construída da composição do próprio IBGE, então os dois lados falam o mesmo código.

Rendimento em reais de 2026

Os oito indicadores de rendimento saíam do mapa escritos R$ e nenhum deles estava em reais de hoje: cada censo media dinheiro na moeda da sua época. O mapa de 1991 era o pior caso — chegava a mostrar “R$ 3,28”, porque ali o número nem em moeda estava.

Todos passaram a sair em reais de janeiro de 2026.

censounidade originalfator
1980cruzeiro de 19800,260827
1991cruzeiro de setembro de 1991 0,022293
2000real de 20004,591044
2010real de 20102,365582
2022real de 20221,146734

A fonte é a nota técnica de Corseuil e Foguel, Uma sugestão de deflatores para rendas obtidas a partir de algumas pesquisas domiciliares do IBGE (IPEA/MTE, Mercado de Trabalho n. 19, 2002), cuja Tabela 3 dá deflator e conversor de moeda para os censos de 1960 a 2000, com janeiro de 2002 igual a 1. Ela para ali, e faltam 2010, 2022 e a ponte até 2026 — mas o que ela é, por dentro, é o INPC do IBGE centrado no dia 1 por média geométrica de meses consecutivos, e isso se reconstrói da SIDRA.

A reconstrução bate com a Tabela 1 da nota em todos os meses menos o próprio mês-base, onde difere por um fator constante de 1,005334: a nota é de 2002 e usou o INPC preliminar de janeiro daquele ano, revisado depois. Constante, não crescente — a variação mês a mês é idêntica. Por isso a cadeia fecha em dezembro de 2001, onde as duas séries concordam, e não no mês-base da nota.

Os conversores de moeda foram conferidos por fora, contra o salário mínimo nominal da época: maio de 1980 devolve Cr$ 4.149,60, exatamente o valor que o pipeline de 1980 já deduz do microdado pelo teto da classe 5 da v681, por um caminho inteiramente diferente. E o salário mínimo deflacionado desenha a curva conhecida: R$ 1.069 em 1970, 1.082 em 1980, 693 em 2000, 1.206 em 2010, 1.390 em 2022.

1991: uma variável condenada por engano

Por muito tempo 1991 não teve renda em dinheiro aqui. A v3561 (rendimento total) dava média nacional de 1,7 milhão de cruzeiros, e foi descartada como valor sentinela irrecuperável; no lugar dela entrou o ponto médio das faixas de salário mínimo da v3562. Estava errado, e o erro era nosso.

O sentinela do IBGE é sempre “todos os noves” — mas com a largura do campo de cada variável, que muda dentro do mesmo censo:

variávelsentineladígitosfrequência
v2012 rendimento domiciliar9999999999102,68%
v3561 rendimento total da pessoa9999999980,99%
v0356 ocupação principal999999971,76%

Um filtro calibrado na largura do domicílio deixa passar o da pessoa. Não era “código de ignorado no meio dos valores”: era o código de topo de um campo mais estreito. E 0,0099 × 10⁸ dá justamente a ordem do 1,7 milhão que nos fez desistir da variável — a conta fecha.

O ponto médio da faixa superestimava a renda em 12,6%, porque dentro de cada faixa a distribuição é assimétrica à direita e a faixa de topo é aberta. Isso não era invisível: a razão de rendimento entre sexos saía 0,663 em 1991, acima dos 0,661 de 2000, quebrando a única série do site que sobe de forma monótona em cinco censos. Com o valor no lugar da faixa ela vai a 0,632 e a série volta a ser 0,526 → 0,632 → 0,661 → 0,683 → 0,749.

Com a troca, 1991 deixou de precisar do salário mínimo para virar dinheiro — a maior suposição da deflação desapareceu — e ganhou sete indicadores que não existiam: rendimento domiciliar per capita (média e mediana, da v2012 sobre os moradores, com 97,4% de cobertura), rendimento do trabalho, rendimento de todas as fontes, e “sem rendimento algum”, que só é separável de “não perguntado” quando existe um zero declarado. A cobertura da v3561 entre os de 14 anos ou mais é de 98,96%, e o resultado se encaixa sozinho na série: 40,8% em 1980, 36,8% em 1991, 36,4% em 2000, 27,8% em 2010, 24,8% em 2022.

O que apareceu depois da correção é a recessão do início dos anos 90, que a superestimação da faixa vinha disfarçando: 1991 é agora um vale em todas as colunas de renda.

Deflacionar é operação de nível, não de forma: as razões de rendimento por sexo e por cor não podem se mexer, porque numerador e denominador levam o mesmo fator. São elas o teste de que só o nível mudou. Em 1991 elas melhoraram: guardar renda como “2,15 salários mínimos”, com duas casas, custava 0,2% de precisão que a divisão amplificava. Medido contra o valor exato do formato longo, o erro médio da razão em 1991 caiu de 0,0018 para 0,00025 — sete vezes menor.

Ficam de fora, de propósito: rendimento em salários mínimos (já é relativo, e mede outra coisa — distância do piso legal, que sobe quando o mínimo perde valor real) e domicílios de baixa renda (percentual abaixo de meio mínimo do próprio censo). 1970 continua sem indicador monetário — mas não pelo motivo que este texto dizia antes.

1970, e a mesma lição outra vez. A v041 foi dada como inutilizável porque mediana, percentil 90 e percentil 99 são todos 9999. São percentis incondicionais, e a conclusão não se sustenta: cruzando com a v047 (ocupação na última semana) no microdado original do Cesit, o 9999 está em 99,0% de quem não foi perguntado e em apenas 14,4% dos ocupados. Ele não é “ignorado”, é “não se aplica” — e restrita ao universo certo a variável descreve uma renda plausível de 1970. Medir no universo errado fez uma variável boa parecer perdida, que é a armadilha de universo restrito virada do avesso.

Ela não entrou ainda porque a medição foi feita em um estado só, e porque 1970 exige converter os arquivos SPSS do Cesit como foi feito com 1980. Fica registrado como dívida, não como impossibilidade.

Escala de cor

Os cortes não são quantis. Quantil dá rampa contínua sem corte legível, e com distribuição assimétrica o mapa parece escala logarítmica. O classificador olha primeiro se a variável é discreta, separa massa pontual (o zero de “sem instrução”, por exemplo), e sobre o núcleo robusto escolhe passos redondos — números que o leitor soma de cabeça. Ponta rala vira classe aberta: “menos de X”, “X ou mais”.

A legenda mostra, ao lado de cada classe, quanta gente cai nela — não quantas unidades. São coisas muito diferentes: metade dos municípios do Brasil soma menos de 10% da população.

A escala pode ser calculada sobre a série inteira, e não só sobre o ano visível. Sem isso a mesma cor quer dizer coisas diferentes em 1991 e em 2022, e a comparação visual entre mapas mente.

Piso de amostra. Unidade com denominador pequeno demais fica fora do conjunto de valores — não recebe cor e, principalmente, não entra no cálculo dos cortes. Deixar entrar faria um punhado de unidades ruidosas dominarem a rampa.

Bordas, e por que o padrão é não ter

Com 5.570 municípios no Brasil inteiro, a linha de divisa ocupa mais pixel que o polígono e o mapa vira uma grade cinza: o que se lê é a malha, não o dado. É o mesmo problema que no ggplot se resolve tirando a borda do cinza fixo. Há três opções:

O outro padrão de arranque é a escala comparável entre censos. Comparar entre censos é a razão de existir deste mapa; deixar o padrão em “deste censo” fazia a mesma cor querer dizer coisas diferentes em 1991 e em 2022 até alguém descobrir o seletor.

A fonte

Todo o texto está em Atkinson Hyperlegible, do Braille Institute of America, desenhada para baixa visão: as letras que costumam se confundir — I l 1, O 0, b d p q — recebem formas deliberadamente distintas. Os códigos de variável usam a versão monoespaçada da mesma família, que é onde confundir 0 com O num nome como D0111 custa mais caro. É a versão variável, e não a estática de dois pesos, porque o site usa pesos intermediários que o navegador teria de falsificar engrossando o traço — exatamente o que uma fonte de legibilidade não pode sofrer.

Recorte e figura

Shift+clique recorta uma unidade e desenha só as subdivisões dela: no nível Estado acende os municípios daquele estado, e um segundo shift+clique acende as áreas de ponderação do município — nos censos que as têm, que são 2000 em diante. Esc sobe um nível de cada vez. Trocar de censo mantém o recorte, que é justamente o uso: a mesma unidade em vários anos. Quando a unidade não existe na malha do censo pedido — município criado depois, ou área de ponderação num ano que não tem — o recorte cai e o ano vale assim mesmo.

Isto era um modo, com tela própria: entrar escondia a lista de indicadores, o painel de valores e metade do cabeçalho, mesmo para quem só queria ver os municípios de um estado. Recortar é navegação, não uma tela à parte — e ler um valor dentro do recorte, que o modo impedia, é o que mais se quer fazer ali.

Com o recorte aplicado, dois controles a mais aparecem na barra do mapa. Mostrar escolhe em que subdivisão desenhar, onde há mais de uma. Cortes decide sobre quais unidades os cortes de cor são calculados — as do recorte ou as do país inteiro — e é eixo separado da Escala, que decide sobre quais censos. As quatro combinações fazem sentido; a mais útil numa figura é recorte + série, a mesma unidade ao longo dos censos com a escala apertada nela.

Vários censos lado a lado

O botão PNG não baixa direto: abre a montagem da figura. Título e fonte aparecem sobre o mapa, editáveis no lugar, e um painel flutuante traz o canto da legenda, o mapa de fundo e a lista de censos. Marcando dois ou mais censos, a figura sai como uma grade — um facet_wrap.

Duas coisas são iguais em todos os painéis, e é o que faz a grade valer alguma coisa:

Censo em que a unidade não existe entra como painel vazio rotulado, e não é pulado: buraco num facet é informação, e pular desalinharia a grade. A barra de população da legenda é de um censo — o último painel — e a legenda diz qual, porque essa é a única parte dela que não vale para a figura inteira.

Pirâmide etária

Dezenove faixas de cinco anos por sexo, em percentual da população da unidade. Fica num arquivo separado dos indicadores, e não numa coluna deles, porque o padrão de acesso é o oposto: o mapa precisa de todas as unidades para um indicador, a pirâmide precisa de uma unidade no clique.

Cada linha é o código mais 76 caracteres — dois em base64 por valor, em passo de 0,05 ponto percentual. A concatenação quase não economiza espaço (gzip já come as vírgulas); o que economiza é precisão, e aí o limite é do dado: numa área de ponderação com ~1.600 amostrados, o erro padrão de uma faixa de 5% é 0,54 ponto. Guardar 0,005 seria gravar cem vezes mais precisão do que a estimativa tem. O que a concatenação resolve é outra coisa: a linha entra no cache sem conversão nenhuma e só é fatiada no clique.

O que está em quarentena

Indicador que a extração produziu mas que não bateu com o publicado fica fora do mapa até ser corrigido. O dado continua no arquivo; só não é oferecido. A fórmula errada fica visível na página de fórmulas, com a explicação do que se sabe.

Um indicador foi removido de vez, e não posto em quarentena: alfabetização sobre “quem respondeu”. O denominador não é o mesmo universo entre censos — em 2000 a variável vem preenchida até para bebês, todos contados como não alfabetizados, e em 2010 ela é nula abaixo de cinco anos. Isso sozinho produzia um salto de 76,2% para 89,5% que não aconteceu. Alfabetização de 15 anos ou mais cobre os cinco censos e é comparável.

O que este mapa não é

Desenhar cada censo na malha do seu ano é correto. Comparar “o mesmo município” ao longo do tempo não é: eram 3.952 municípios em 1970 contra 5.570 hoje, e os que já existiam mudaram de limite. Série temporal municipal exige Áreas Mínimas Comparáveis, que é outro exercício e não está feito. Enquanto não estiver, o produto é “cada censo no seu recorte”, não “evolução do município X”.

As áreas de ponderação de 2010 e 2022 são incompatíveis entre si: 11.016 contra 14.406 unidades, formatos de código diferentes, zero códigos em comum. Cada uma serve de recorte fino isolado, não de série.

Rendimento em valor absoluto passou a se comparar entre censos, e é a mudança mais recente aqui: os oito indicadores monetários saem em reais de janeiro de 2026. O que continua não se comparando é o universo de cada pergunta — quem “tem rendimento” em 1980 e em 2022 não é definido do mesmo jeito. A série mostra tendência, não diferença de décimo.

1970 não tem cor ou raça — a pergunta não foi feita naquele censo.

Esta página é escrita à mão e descreve decisões. A página de fórmulas é gerada do código que roda: se a fórmula lá estiver errada, o número no mapa está errado do mesmo jeito — é esse o ponto.