OpenCyber Academy
Pesquisa doutoral · Capítulo 5 · Português
Código do curso: OCA-191Capítulo 05: OCA-191-C005

Capítulo 5 — Estudo principal e validação independente

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 05 publicada. Mapa, exemplo, EX027.

flowchart TD
  N0["5.1 Condução do estudo"]
  N1["5.2 Diferença em diferenças"]
  N2["Laboratório — Diferença em diferenças com verificaçã"]
  N3["5.3 Leitura da estimativa"]
  N4["5.4 Validação independente"]
  N5["5.5 Relato da incerteza"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX027"]

Desenho lógico

flowchart LR
  N0["5.1 Condução do estudo"]
  N1["5.2 Diferença em diferenças"]
  N2["Laboratório — Diferença em diferenças com verificaçã"]
  N3["5.3 Leitura da estimativa"]
  N4["5.4 Validação independente"]
  N5["5.5 Relato da incerteza"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX027"]
[5.1 Condução do estudo]
    |
    v
[5.2 Diferença em diferenças]
    |
    v
[Laboratório — Diferença em diferenças com verificaçã]
    |
    v
[5.3 Leitura da estimativa]
    |
    v
[5.4 Validação independente]
    |
    v
[5.5 Relato da incerteza]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX027]

Objetivos de aprendizagem

Você vai (1) conduzir um estudo de adoção escalonada com equipes de comparação; (2) estimar um efeito com diferença em diferenças; (3) obter validação independente da codificação e da análise; (4) relatar a incerteza com honestidade.

5.1 Condução do estudo

Ao longo de dezoito meses, dezoito equipes da Tessaro adotam o protocolo em três ondas, conforme os orçamentos permitem, enquanto doze equipes continuam a revisão de design sem ele. Amara coleta todo mês as mudanças de design, as sessões, as pontuações de fidelidade e os defeitos. As mudanças simultâneas, como uma divisão que introduz security champions, são registradas num log trimestral. Ela evita influenciar os resultados: não participa das sessões, e o assistente de codificação que classifica os defeitos não sabe quais equipes adotaram a prática. O cegamento da codificação protege a medida de desfecho do desejo muito natural de ver a intervenção dar certo.

5.2 Diferença em diferenças

A análise compara a mudança na taxa de defeitos das equipes que adotam com a mudança nas equipes de comparação ao longo do mesmo período. Se os dois grupos melhoram igualmente, a diferença é zero e a prática não tem efeito mensurável além da tendência geral. O método pressupõe tendências paralelas: sem a intervenção, os dois grupos teriam evoluído de forma parecida. Amara verifica essa premissa nos dados anteriores à adoção e encontra tendências próximas o bastante para prosseguir. O laboratório abaixo calcula a estimativa sobre taxas sintéticas por equipe e período e uma verificação simples por permutação, que embaralha os rótulos de adoção para ver com que frequência uma diferença tão grande surge por acaso.

Laboratório — Diferença em diferenças com verificação por permutação

# Difference-in-differences on synthetic team rates (defects per 100 design changes) + permutation check.
import random, statistics
random.seed(5)
adopt = [(round(random.gauss(3.9, 0.5), 2), None) for _ in range(18)]
comp = [(round(random.gauss(3.7, 0.5), 2), None) for _ in range(12)]
adopt = [(b, round(b - 1.1 + random.gauss(0, 0.9), 2)) for b, _ in adopt]
comp = [(b, round(b - 0.3 + random.gauss(0, 0.9), 2)) for b, _ in comp]
def did(a, c):
    return statistics.mean(y - x for x, y in a) - statistics.mean(y - x for x, y in c)
est = did(adopt, comp)
print(f"adopting: {statistics.mean(x for x,_ in adopt):.2f} -> {statistics.mean(y for _,y in adopt):.2f}")
print(f"comparison: {statistics.mean(x for x,_ in comp):.2f} -> {statistics.mean(y for _,y in comp):.2f}")
print(f"DiD estimate: {est:.2f} per 100 changes")
allt = adopt + comp; hits = 0; R = 5000
for _ in range(R):
    random.shuffle(allt)
    if did(allt[:18], allt[18:]) <= est: hits += 1
print(f"permutation share as extreme: {hits / R:.3f}")

Execute com python3 lab_did.py. Saída verificada:

adopting: 3.75 -> 2.80
comparison: 3.83 -> 3.65
DiD estimate: -0.77 per 100 changes
permutation share as extreme: 0.022

5.3 Leitura da estimativa

Nos dados sintéticos, as equipes que adotam caíram de 3,75 para 2,80 defeitos por cem mudanças (variação de -0,95), enquanto as equipes de comparação caíram de 3,83 para 3,65 (-0,18). A diferença em diferenças é de -0,77, cerca de menos 0,8, aproximadamente um quinto a menos de defeitos em relação à linha de base. A verificação por permutação mostra uma diferença desse tamanho em cerca de dois por cento dos embaralhamentos. Amara relata a estimativa com essa incerteza e observa que ela é um pouco menor que o quarto que a Tessaro esperava. Ela evita a palavra prova e escreve que os dados são compatíveis com uma redução modesta sob as premissas declaradas.

5.4 Validação independente

Um segundo pesquisador de outra universidade, que recebe apenas o manual de codificação e uma amostra aleatória de defeitos, os recodifica às cegas e chega a uma concordância substancial com a codificação original. Um estatístico roda de novo, de forma independente, a análise a partir dos scripts arquivados por Amara e obtém a mesma estimativa. A validação também abrange uma análise de sensibilidade: excluir a divisão que introduziu security champions muda a estimativa só um pouco, o que enfraquece essa explicação rival. Cada etapa de validação é relatada com quem a fez, o que recebeu e o que encontrou, incluindo uma pequena divergência de codificação resolvida com o esclarecimento de uma definição.

5.5 Relato da incerteza

A seção de resultados de Amara começa pela estimativa do efeito e seu intervalo, depois os dados de fidelidade, depois as análises de sensibilidade e, por fim, as limitações. Ela relata que as equipes com pontuação de fidelidade baixa mostraram pouca mudança, o que é compatível com a prática importar, mas também poderia refletir equipes menos engajadas. Ela evita recomendar a adoção universal e declara, em vez disso, que na Tessaro a prática esteve associada a uma redução modesta, a um custo de cerca de noventa minutos por mudança. Uma incerteza honesta torna o resultado útil para outras organizações que decidem se experimentam a prática nas suas próprias condições.

Exemplo resolvido

Amara conduz o estudo de dezoito meses, estima uma diferença em diferenças de cerca de menos 0,8 defeito por cem mudanças, com p de permutação de cerca de 0,02, obtém a recodificação cega e uma nova execução independente e relata os resultados de fidelidade e de sensibilidade.

Caso sintético. Todos os dados das equipes, as estimativas e os validadores são sintéticos.

Erros e limites

As tendências paralelas podem valer antes da adoção e falhar depois. As verificações por permutação com poucas equipes têm resolução grosseira.

Exercícios

Síntese

Um estudo principal ganha credibilidade com grupos de comparação, medição cega, validação independente e incerteza relatada com clareza.

Respostas comentadas

EX027. Para que o desejo de ver a intervenção dar certo não influencie a classificação dos defeitos.

EX028. Que, sem a intervenção, as equipes que adotam e as de comparação teriam seguido tendências paralelas.

EX029. Uma estimativa de -0,77 defeito por cem mudanças, com proporção de permutação de 0,022.

EX030. A estimativa quase não mudou, o que enfraquece a explicação rival de que os champions causaram a redução.

EX031. É compatível com a ideia de que a prática importa, mas também com a de que as equipes menos engajadas pontuam baixo e melhoram menos.

EX032. Ela evita recomendar a adoção universal e declara uma redução modesta na Tessaro a cerca de noventa minutos por mudança.