Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX029.
flowchart TD
N0["5.1 Dupla codificação"]
N1["Laboratório 3 — concordância"]
N2["5.2 Lendo o kappa"]
N3["5.3 Arbitragem"]
N4["5.4 Validação independente"]
N5["5.5 Compartilhando resultados em formato padrão"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX029"]
Desenho lógico
flowchart LR
N0["5.1 Dupla codificação"]
N1["Laboratório 3 — concordância"]
N2["5.2 Lendo o kappa"]
N3["5.3 Arbitragem"]
N4["5.4 Validação independente"]
N5["5.5 Compartilhando resultados em formato padrão"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX029"]
[5.1 Dupla codificação]
|
v
[Laboratório 3 — concordância]
|
v
[5.2 Lendo o kappa]
|
v
[5.3 Arbitragem]
|
v
[5.4 Validação independente]
|
v
[5.5 Compartilhando resultados em formato padrão]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX029]
Objetivos de aprendizagem
Você vai (1) organizar a dupla codificação cega de um corpus; (2) calcular a concordância entre avaliadores com o kappa de Cohen; (3) arbitrar divergências sem contaminar os dados; (4) providenciar a validação por uma equipe que não construiu o pipeline.
5.1 Dupla codificação
Dois codificadores treinados rotulam, de forma independente, cada evento amostrado com a característica central do Diamond a que se refere um julgamento-chave — adversário, capacidade, infraestrutura ou vítima — e com os códigos de desfecho. Nenhum codificador vê o trabalho do outro até que ambos terminem. No laboratório, dez eventos são codificados; na amostra completa de 340 julgamentos, o mesmo procedimento chegou a um kappa de 0,74 depois de uma revisão do livro de códigos. A independência importa porque codificadores que discutem os primeiros itens convergem para os hábitos um do outro, o que infla a concordância sem melhorar o livro de códigos.
Laboratório 3 — concordância
"""Lab 3 (ch 05): Cohen's kappa for two coders labelling synthetic events with a Diamond core feature."""
from collections import Counter
a = ["infra", "cap", "infra", "victim", "adv", "infra", "cap", "victim", "infra", "cap"]
b = ["infra", "cap", "cap", "victim", "adv", "infra", "cap", "infra", "infra", "cap"]
n = len(a)
po = sum(x == y for x, y in zip(a, b)) / n
ca, cb = Counter(a), Counter(b)
pe = sum(ca[k] * cb[k] for k in set(a) | set(b)) / n ** 2
kappa = (po - pe) / (1 - pe)
print(f"observed agreement={po:.2f} expected={pe:.2f} kappa={kappa:.3f}")
print("disagreements:", [i for i, (x, y) in enumerate(zip(a, b)) if x != y])
Execute com python3 lab_kappa.py. Saída verificada:
observed agreement=0.80 expected=0.31 kappa=0.710
disagreements: [2, 7]
5.2 Lendo o kappa
Uma concordância bruta de 0,80 parece forte, mas o acaso sozinho produziria 0,31, dada a frequência com que cada rótulo aparece. O kappa remove esse componente de acaso e dá 0,710, convencionalmente descrito como substancial. As divergências nos itens 2 e 7 envolvem ambas a infraestrutura contra outra característica — uma pista de que a definição de infraestrutura no livro de códigos precisa de um exemplo sobre hospedagem compartilhada. A revisão de Tomas acrescentou esse exemplo, e a concordância na amostra completa de 340 julgamentos chegou a um kappa de 0,74. O valor da concordância ao acaso importa para a tese: se um rótulo dominasse, a concordância bruta poderia ser alta enquanto o kappa continuava baixo, e relatar apenas o valor bruto teria exagerado o quanto o livro de códigos funciona.
5.3 Arbitragem
Uma terceira pessoa resolve as divergências usando o livro de códigos, e os dois códigos originais são preservados. Mudar o livro de códigos no meio do estudo exige uma nota de versão e, quando possível, a recodificação dos itens anteriores com a nova definição. A única revisão do livro de códigos feita por Tomas, o exemplo de hospedagem compartilhada para a infraestrutura, é o caso que essa regra cobre. Ela traz uma nota de versão no arquivo, e os itens codificados sob a primeira versão foram recodificados, para que o kappa da amostra completa seja calculado sob uma única definição. As decisões do árbitro são registradas com a regra do livro de códigos em que se apoiaram, para que um leitor posterior possa ver se um dos codificadores foi vencido sistematicamente.
5.4 Validação independente
Uma equipe separada refaz a análise a partir dos dados e do código arquivados, sem ajuda. A concordância nos números principais é a validação. A divergência não é fracasso; é informação que precisa ser relatada. No estudo de Tomas, o laboratório parceiro reproduziu o escore de Brier com três casas decimais, mas encontrou um arquivo mesclado de forma errada. Ele o corrigiu e documentou a correção na tese, e não em uma nota privada. Esse erro nunca teria aparecido nas reexecuções dele, porque o pipeline mesclava os arquivos do mesmo jeito errado todas as vezes.
5.5 Compartilhando resultados em formato padrão
Quando os achados incluem indicadores ou relações estruturados, os objetos STIX 2.1 permitem que outros os interpretem; porém, resultados de pesquisa agregados costumam ser mais bem compartilhados como tabelas e código do que como indicadores. Os resultados de Tomas são uma tabela de calibração, um mapeamento de expressões para probabilidades e código; nenhum deles é um indicador. Embrulhar a tabela de calibração em objetos STIX acrescentaria trabalho de parsing para os leitores sem acrescentar significado; por isso, o arquivo dele publica CSV com um esquema e reserva o STIX para um eventual trabalho futuro que produza objetos de ameaça.
Exemplo resolvido
Na amostra completa de 340 julgamentos (sintética), os codificadores chegam a um kappa de 0,74 depois de uma revisão do livro de códigos. A equipe de validação de um laboratório parceiro reproduz o escore de Brier com três casas decimais, mas encontra um arquivo mesclado de forma errada; Tomas o corrige e documenta a correção.
Caso sintético. O tamanho da amostra, o kappa e o laboratório parceiro são inventados.
Erros e limites
O kappa depende da prevalência dos rótulos; relate também a concordância bruta. Uma validação feita por amigos que ajudaram a construir o pipeline não é independente.
Exercícios
- EX029 — Citação do kappa. Cite a concordância observada, a concordância esperada e o kappa do laboratório.
Mostrar critérios de avaliação
Rubrica: 3 = 0,80, 0,31, 0,710; 2 = dois; 1 = um; 0 = nenhum. - EX030 — Por que o kappa. Por que relatar o kappa além dos 80% de concordância bruta?
Mostrar critérios de avaliação
Rubrica: 3 = corrige a concordância ao acaso dada a frequência dos rótulos; 2 = "mais rigoroso"; 1 = nenhum motivo; 0 = nenhum. - EX031 — Sinal do livro de códigos. O que as duas divergências sugerem sobre o livro de códigos?
Mostrar critérios de avaliação
Rubrica: 3 = definição de infraestrutura ambígua; acrescentar exemplo/esclarecer; 2 = livro de códigos pouco claro; 1 = codificadores descuidados; 0 = nenhum. - EX032 — Registro da arbitragem. O que precisa ser preservado quando uma terceira pessoa arbitra?
Mostrar critérios de avaliação
Rubrica: 3 = os dois códigos originais + o código arbitrado + a justificativa/versão do livro de códigos; 2 = código final + um original; 1 = apenas o final; 0 = nenhum. - EX033 — Teste de independência. Um validador que coescreveu o script de parsing é independente? Explique.
Mostrar critérios de avaliação
Rubrica: 3 = não; compartilha pressupostos/erros; é preciso uma equipe separada; 2 = não; 1 = sim; 0 = nenhum. - EX034 — Achado da validação. O laboratório parceiro encontra um arquivo mesclado de forma errada. O que a tese precisa dizer?
Mostrar critérios de avaliação
Rubrica: 3 = relatar o erro, a correção e o efeito nos resultados; 2 = mencionar a correção; 1 = escondê-lo; 0 = nenhum. - EX035 — Adequação do STIX. Quando o STIX 2.1 seria uma escolha ruim para compartilhar os resultados deste estudo?
Mostrar critérios de avaliação
Rubrica: 3 = estatísticas agregadas/livros de códigos não são indicadores; tabelas/código servem melhor; 2 = parcial; 1 = usar sempre STIX; 0 = nenhum.
Síntese
Codifique às cegas e em dobro, corrija o acaso, arbitre com transparência, valide de forma independente e relate cada correção.
Continue estudando — capítulo 05 de 08
← Capítulo 04 (rascunho) · Índice de capítulos do curso · Capítulo 06 (rascunho) →