Capítulo 6 — Coleta e análise de dados
Mapa da aula
Aula 06 publicada. Mapa, exemplo, EX034.
flowchart TD
N0["6.1 Coleta"]
N1["6.2 Codificação das falhas"]
N2["6.3 Diferença-em-diferenças"]
N3["6.4 Resultados da bancada"]
N4["6.5 Validação no Fenwick College"]
N5["Síntese do capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX034"]
Desenho lógico
flowchart LR
N0["6.1 Coleta"]
N1["6.2 Codificação das falhas"]
N2["6.3 Diferença-em-diferenças"]
N3["6.4 Resultados da bancada"]
N4["6.5 Validação no Fenwick College"]
N5["Síntese do capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX034"]
[6.1 Coleta]
|
v
[6.2 Codificação das falhas]
|
v
[6.3 Diferença-em-diferenças]
|
v
[6.4 Resultados da bancada]
|
v
[6.5 Validação no Fenwick College]
|
v
[Síntese do capítulo]
|
v
[Exemplo resolvido] --> [Exercício EX034]
Objetivos de aprendizagem e conexão
Você vai (1) coletar dados segundo um protocolo congelado; (2) codificar logs de falha de forma confiável e medir a concordância; (3) estimar um efeito de diferença-em-diferenças; (4) analisar os resultados da bancada; e (5) validar num segundo local. O capítulo executa a proposta do Capítulo 5 e fornece os resultados que o Capítulo 7 vai redigir.
6.1 Coleta
Oito semanas de dados do LK-HS-1 são coletadas sob o protocolo emendado: quatro semanas antes e quatro depois da implantação escalonada, com metade dos navegadores gerenciados (aleatorizada pelo identificador do dispositivo) recebendo primeiro a política híbrida. Congele o script de análise e registre o seu hash antes de revelar os rótulos das coortes.
Mantenha um registro de coleta com as interrupções ou lacunas na telemetria do proxy e dos navegadores, com datas, porque um dia faltando numa coorte enviesaria a comparação. Verifique, antes de revelar os rótulos, que a aleatorização pôs números aproximadamente iguais de dispositivos em cada coorte e que ambas usaram o caminho do proxy em proporções semelhantes.
6.2 Codificação das falhas
Cada série com falha tem um trecho de log. Dois codificadores (C1, C2) atribuem, de forma independente e com um livro de códigos escrito, um de quatro rótulos — size (reset do proxy após o primeiro segmento), cert (validação de certificado), timeout, other.
# Lab 6 (synthetic): agreement between two coders labelling 60 failure logs, then the share of
# failures attributed to "split ClientHello mishandled" after reconciliation.
from collections import Counter
labels = ["size", "cert", "timeout", "other"]
a = ["size"]*30 + ["cert"]*12 + ["timeout"]*10 + ["other"]*8
b = ["size"]*27 + ["timeout"]*3 + ["cert"]*11 + ["other"] + ["timeout"]*9 + ["size"] + ["other"]*8
n = len(a); po = sum(x == y for x, y in zip(a, b)) / n
ca, cb = Counter(a), Counter(b); pe = sum(ca[l]*cb[l] for l in labels) / n**2
print(f"observed agreement {po:.3f} chance {pe:.3f} Cohen's kappa {(po-pe)/(1-pe):.3f}")
Saída esperada:
observed agreement 0.917 chance 0.323 Cohen's kappa 0.877
Um κ de 0,88 indica forte concordância além do acaso; as discordâncias (sobretudo size contra timeout, porque um segundo segmento descartado pode parecer um timeout) são resolvidas por discussão e registradas.
Mantenha o livro de códigos com um trecho de log de exemplo para cada rótulo, sobretudo para a fronteira difícil entre size e timeout. Os codificadores trabalham com trechos sem os rótulos das coortes, para que saber se o grupo híbrido foi oferecido não influencie o rótulo escolhido.
6.3 Diferença-em-diferenças
Com uma coorte de controle concorrente, o efeito é a mudança na coorte tratada menos a mudança na coorte de controle, estimado separadamente por caminho. Resultados sintéticos: caminho do proxy +20,4 por 10.000 (IC 95% 15,1–25,8); caminho direto +0,6 (−1,0 a 2,2). A H1 é apoiada. O pequeno aumento da própria coorte de controle no caminho do proxy (+0,6, exercício EX034) capta a sazonalidade, o rival 4, que o desenho antes/depois, sozinho, teria atribuído ao grupo híbrido.
Relate a estimativa com o seu intervalo e o número de séries por trás de cada célula, para que o cálculo possa ser conferido. O intervalo do caminho direto inclui zero, o que apoia a segunda parte da H1. O aumento da coorte de controle mostra por que o controle concorrente importa: sem ele, a mudança sazonal teria sido contada como efeito do grupo híbrido.
6.4 Resultados da bancada
Na cópia isolada do proxy na bancada, 200 handshakes por condição: hello de um segmento sem o codepoint, 0/200 falhas; hello de um segmento com o codepoint híbrido, 0/200; hello de dois segmentos sem o codepoint (só preenchimento), 187/200; hello de dois segmentos com o codepoint, 189/200. As falhas acompanham a segmentação, não o codepoint: a H2 é apoiada e o rival 3 é rejeitado para este modelo de proxy. Depois da aplicação da atualização de firmware do fornecedor na bancada, as falhas com dois segmentos caem para 0/200, o que antecipa a H3.
As quatro condições variam tamanho e codepoint de forma independente, e é isso que permite à bancada separar os dois rivais que os logs não conseguiam separar. Informe as versões de firmware da bancada antes e depois da atualização e o preenchimento usado em cada condição, para que outro laboratório possa reproduzir o resultado com o mesmo modelo de proxy.
6.5 Validação no Fenwick College
O Fenwick (sintético) tem um fornecedor de proxy diferente. Aplicando a análise congelada: excesso no caminho do proxy de +1,2 por 10.000 (−0,8 a 3,2) — nenhum efeito relevante. O mecanismo é específico do produto; a dissertação deve dizer "o modelo de proxy legado da Larkspur", e não "proxies com inspeção". Um resultado nulo no segundo local é um achado sobre o escopo, não uma falha do estudo.
Congele o script de análise antes de abrir os dados do Fenwick, como na Larkspur, e registre o seu hash. Relate o intervalo do Fenwick junto com a estimativa: ele inclui zero e exclui um efeito tão grande quanto o da Larkspur. Registrar o fornecedor e a versão do proxy no Fenwick permite que os leitores vejam quais produtos o resultado nulo cobre.
6.6 Erros comuns e limites
- Revelar os rótulos das coortes antes de congelar o script.
- Tratar o κ como aprovado/reprovado sem examinar quais categorias discordam.
- Generalizar um defeito específico de um produto para uma categoria de produtos.
- Os números sintéticos aqui ilustram métodos; não são medições de nenhum produto.
Cada erro tem uma salvaguarda neste capítulo: um hash do script registrado antes da revelação, um exame de quais rótulos discordaram em vez de apenas um limiar de κ, o resultado nulo do Fenwick usado para limitar a alegação a um modelo de proxy e uma declaração clara de que os números são sintéticos.
Exercícios — capítulo 6
- EX032 — Registro de congelamento. Escreva o registro de congelamento (o quê, hash, testemunha, data). Rubrica: 3 = verificável.
- EX033 — Interpretação do kappa. Recalcule o Laboratório 6 depois de trocar três rótulos size do codificador B por timeout; interprete. Rubrica: 3 = κ correto e comentário sobre qual confusão importa.
- EX034 — DiD à mão. Caminho do proxy tratado 5,0→26,0, caminho do proxy de controle 5,1→5,7 por 10.000: calcule a DiD. Rubrica: 3 = 20,4 e explicação.
- EX035 — Tabela da bancada. Explique como as quatro condições da bancada discriminam entre os rivais 1 e 3. Rubrica: 3 = lógica correta.
- EX036 — Escopo a partir da validação. Escreva a frase de escopo implicada pelo resultado nulo do Fenwick. Rubrica: 3 = alegação específica do produto, sem generalização excessiva.
- EX037 — Ameaças. Liste três ameaças ao pressuposto de tendências paralelas da DiD neste contexto. Rubrica: 3 = específicas do cenário.
Síntese do capítulo
Scripts congelados, codificação dupla com κ, uma estimativa de diferença-em-diferenças por caminho, uma bancada que varia tamanho e codepoint de forma independente e a validação num segundo local transformam uma correlação num relato causal delimitado.
Continue estudando — capítulo 06 de 08
← Capítulo 05 · Índice de capítulos do curso · Capítulo 07 →
Siga para a próxima lição escrita.