Capítulo 4 — Replicação da linha de base e estudo piloto
Mapa da aula
Aula 04 publicada. Mapa, exemplo, EX021.
flowchart TD
N0["4.1 Por que replicar primeiro"]
N1["4.2 O laboratório piloto"]
N2["4.3 Quem escolhe o limiar"]
N3["4.4 Lições do piloto"]
N4["Laboratório — Pesos de correspondência, limiares, pr"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX021"]
Desenho lógico
flowchart LR
N0["4.1 Por que replicar primeiro"]
N1["4.2 O laboratório piloto"]
N2["4.3 Quem escolhe o limiar"]
N3["4.4 Lições do piloto"]
N4["Laboratório — Pesos de correspondência, limiares, pr"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX021"]
[4.1 Por que replicar primeiro]
|
v
[4.2 O laboratório piloto]
|
v
[4.3 Quem escolhe o limiar]
|
v
[4.4 Lições do piloto]
|
v
[Laboratório — Pesos de correspondência, limiares, pr]
|
v
[Exemplo resolvido] --> [Exercício EX021]
Objetivos de aprendizagem
Você vai (1) replicar uma linha de base de pareamento de registros; (2) calcular pesos de correspondência e limiares; (3) relatar o compromisso entre precisão e revocação.
4.1 Por que replicar primeiro
Antes de testar as próprias ideias, Nadia replica na réplica sintética o método de pareamento publicado por Westmark. Westmark usa a abordagem de Fellegi e Sunter: cada campo contribui com um peso baseado em m, a probabilidade de que uma correspondência verdadeira concorde naquele campo, e em u, a probabilidade de que uma não correspondência concorde por acaso. A concordância soma o logaritmo de m sobre u; a discordância soma o logaritmo de um menos m sobre um menos u. Replicar a linha de base prova que suas ferramentas reproduzem o método antes que ela varie as decisões contidas nele.
4.2 O laboratório piloto
O piloto usa 4.000 pares de registros sintéticos, dos quais 400 são correspondências verdadeiras, com os campos nome, código postal e setor. Com limiar 0, ele vincula 505 pares, com precisão de 0,776 e revocação de 0,980. Com limiar 4, vincula 386 pares, com precisão de 0,953 e revocação de 0,920. Com limiar 8, vincula 338 pares, com precisão de 0,991 e revocação de 0,838. Elevar o limiar elimina falsas correspondências, mas perde verdadeiras, de modo que nenhum limiar é livre de erro. Entre os limiares 0 e 4, a precisão ganha muito mais do que a revocação perde, o que sugere que o limiar mais baixo vincula pares falsos demais. Acima de 4, cada ganho de precisão custa visivelmente mais revocação.
4.3 Quem escolhe o limiar
Nadia pergunta à equipe de Westmark quem escolheu o limiar atual. A resposta não é clara: um metodologista o definiu anos atrás, e as divulgações seguintes o reutilizaram sem revisão. As entrevistas sugerem que a equipe de produção acredita que o limiar pertence à equipe de métodos, enquanto a equipe de métodos acredita que a produção pode ajustá-lo. É exatamente a lacuna de direitos de decisão que o projeto previa. Ela registra o achado na matriz de decisões e anota que o limiar afeta todas as contagens regionais de emprego que Westmark publica. Nenhuma das equipes tinha um mandato escrito cobrindo essa decisão.
4.4 Lições do piloto
O piloto mostra que a réplica e os scripts funcionam, que o compromisso entre precisão e revocação é substancial e que a titularidade do limiar não está clara. Também revela que os valores de m e u foram estimados uma única vez e nunca atualizados, embora o cadastro tenha mudado. O Prof. Eriksen pede a Nadia que trate as estimativas de m e u como mais uma decisão de governança no estudo principal. Ela atualiza o diário de pré-registro para anotar o acréscimo antes de rodar o estudo principal, mantendo a mudança transparente. A transparência vem primeiro.
Laboratório — Pesos de correspondência, limiares, precisão e revocação
"""Fellegi-Sunter style match weights on synthetic record pairs; precision and recall by threshold (stdlib only)."""
import random, math
random.seed(9)
fields = {"name": (0.95, 0.01), "postcode": (0.90, 0.05), "sector": (0.85, 0.20)} # (m, u)
pairs = []
for i in range(4000):
match = i < 400
agree = {f: (random.random() < (m if match else u)) for f, (m, u) in fields.items()}
w = sum(math.log2(m / u) if agree[f] else math.log2((1 - m) / (1 - u)) for f, (m, u) in fields.items())
pairs.append((w, match))
for t in (0, 4, 8):
pred = [p for p in pairs if p[0] >= t]; tp = sum(1 for p in pred if p[1])
print(f"threshold {t:2d}: linked {len(pred):4d} precision {tp/len(pred):.3f} recall {tp/400:.3f}")
Execute com python3 lab_linkage.py. Saída verificada:
threshold 0: linked 505 precision 0.776 recall 0.980
threshold 4: linked 386 precision 0.953 recall 0.920
threshold 8: linked 338 precision 0.991 recall 0.838
Exemplo resolvido
Nadia replica os pesos de Fellegi-Sunter em 4.000 pares sintéticos, relata precisão de 0,776 a 0,991 e revocação de 0,980 a 0,838 entre os limiares e constata que a titularidade do limiar não está clara.
Caso sintético. Os pares são sintéticos; Fellegi e Sunter (1969) é real.
Erros e limites
Supor independência entre os campos, como faz este piloto, pode distorcer os pesos; teste essa suposição mais tarde.
Exercícios
- EX021 — Fórmula do peso. O que a concordância em um campo soma ao peso? Rubrica: 3 = log de m sobre u;; 2 = parcialmente correto;; 1 = errado;; 0 = nenhuma.
- EX022 — Limiar 4. Que precisão e revocação ocorrem no limiar 4? Rubrica: 3 = 0,953 e 0,920;; 2 = ambas;; 1 = uma;; 0 = nenhuma.
- EX023 — Limiar mais alto. O que acontece quando o limiar sobe para 8? Rubrica: 3 = menos falsas correspondências, mais verdadeiras perdidas;; 2 = menciona o compromisso;; 1 = vago;; 0 = nenhuma.
- EX024 — Titular indefinido. Quem é o titular do limiar em Westmark? Rubrica: 3 = não está claro; as equipes apontam uma para a outra;; 2 = menciona indefinição;; 1 = nomeia uma equipe;; 0 = nenhuma.
- EX025 — Estimativas defasadas. O que mais nunca havia sido atualizado? Rubrica: 3 = as estimativas de m e u;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
- EX026 — Atualização do diário. O que Nadia fez antes de acrescentar a nova variável? Rubrica: 3 = atualizou o diário de pré-registro;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
Continue estudando — aula 04 (capítulo 04 de 08)
← Capítulo 03 · Índice das aulas · Capítulo 05 →
Continue para a próxima aula já escrita.