OpenCyber Academy
Mestrado · Capítulo 6 · Português
Código do curso: OCA-183Capítulo 06: OCA-183-C006

Capítulo 6 — Coleta e análise de dados

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 06 publicada. Mapa, exemplo, EX033.

flowchart TD
  N0["6.1 Disciplina de coleta"]
  N1["6.2 Laboratório 6 — sensibilidade ao coeficiente do"]
  N2["6.3 Parágrafo de resultados honesto"]
  N3["6.5 Dos números às alegações"]
  N4["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX033"]

Desenho lógico

flowchart LR
  N0["6.1 Disciplina de coleta"]
  N1["6.2 Laboratório 6 — sensibilidade ao coeficiente do"]
  N2["6.3 Parágrafo de resultados honesto"]
  N3["6.5 Dos números às alegações"]
  N4["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX033"]
[6.1 Disciplina de coleta]
    |
    v
[6.2 Laboratório 6 — sensibilidade ao coeficiente do]
    |
    v
[6.3 Parágrafo de resultados honesto]
    |
    v
[6.5 Dos números às alegações]
    |
    v
[Síntese do capítulo]
    |
    v
[Exemplo resolvido] --> [Exercício EX033]

Objetivos de aprendizagem e conexão

Depois deste capítulo, você consegue (1) coletar dados do modelo e da bancada sob um plano congelado, (2) usar sementes pareadas e intervalos de bootstrap, (3) executar análises de sensibilidade e (4) escrever um parágrafo de resultados honesto.

6.1 Disciplina de coleta

Congele os limiares a partir das sementes de ajuste; execute as sementes de avaliação; depois a bancada R2 com os mesmos valores congelados. Registre semente, detector, classe de ataque, instante do alarme e transbordamento no alarme. Nada de espiar os dados de ataque da R2 antes do congelamento.

Na prática, escreva um pequeno manifesto contendo k, h, a faixa de sementes de ajuste e um hash do script de análise, e recuse-se a carregar os arquivos de ataque da R2 até que esse manifesto exista. Se você mudar k depois de ver a R2, não tem mais uma validação — tem mais um exercício de ajuste, e precisa dizer isso. Mantenha um caderno de laboratório com data, pessoa, identificadores das execuções e anomalias (oscilação de energia, recalibração de sensor); anomalias que coincidem com alarmes são explicações rivais.

6.2 Laboratório 6 — sensibilidade ao coeficiente do orifício

# Lab 6: bootstrap CI for delay difference (paired) + sensitivity to orifice coefficient.
import random
def delay(seed, orifice=0.02, k=0.8, steps=900, onset=300):
    rng=random.Random(seed); true=est=50.0; s=0.0
    # keep equilibrium near 50: nominal inflow = orifice*50
    for t in range(steps):
        inflow=orifice*50 + rng.gauss(0,0.05)+(0.05 if t>=onset else 0)
        true+=inflow-orifice*true
        lvl=(50.0 if t>=onset else true)+rng.gauss(0,0.3)
        est+=inflow+rng.gauss(0,0.02)-orifice*est
        s=max(0.0,s+abs(lvl-est)-k)
        if s>6 and t>=onset: return t-onset
    return None
for orifice in (0.015,0.02,0.025):
    d8=[]; d6=[]; diffs=[]
    for i in range(150):
        a=delay(i,orifice,0.8); b=delay(i,orifice,0.6)
        if a is not None: d8.append(a)
        if b is not None: d6.append(b)
        if a is not None and b is not None: diffs.append(a-b)
    rng=random.Random(1); boots=sorted(sum(rng.choice(diffs) for _ in diffs)/len(diffs) for _ in range(1000)) if diffs else []
    print(f"orifice={orifice} detected_k0.8={len(d8)}/150 detected_k0.6={len(d6)}/150 "
          f"mean_diff={sum(diffs)/len(diffs):.1f} 95%CI=[{boots[25]:.1f},{boots[974]:.1f}]")

Saída esperada:

orifice=0.015 detected_k0.8=150/150 detected_k0.6=150/150 mean_diff=6.0 95%CI=[5.6,6.4]
orifice=0.02 detected_k0.8=150/150 detected_k0.6=150/150 mean_diff=7.1 95%CI=[6.6,7.6]
orifice=0.025 detected_k0.8=150/150 detected_k0.6=150/150 mean_diff=8.6 95%CI=[7.9,9.4]

O custo em atraso de escolher k = 0,8 em vez de 0,6 cresce à medida que o coeficiente do orifício aumenta (dinâmica natural mais rápida / sinal diferente). Os intervalos descrevem apenas o ruído da simulação.

O laboratório pareia as sementes: cada semente é executada com as duas folgas, e a diferença é tomada dentro da semente, o que remove o ruído que as duas execuções compartilham. O bootstrap então reamostra essas diferenças pareadas. As três configurações de orifício detectam todos os episódios com as duas folgas, então o compromisso está inteiramente no atraso. Os intervalos descrevem apenas o ruído da simulação; não dizem nada sobre como um tanque real difere do modelo.

6.3 Parágrafo de resultados honesto

"No modelo sintético do Harbor Loop, o CUSUM de resíduo detectou 80/80 episódios de replay da classe A (atraso médio de 37,7 passos, transbordamento médio no alarme de 1,38) com 0/80 execuções com alarme falso; a faixa de ±1,5 detectou 0/80, com 11/80 execuções com alarme falso. A classe B (medidor de vazão também falsificado) evadiu o CUSUM em 80/80 ensaios. O custo em atraso da folga mais robusta k = 0,8 em relação a 0,6 foi de 6,0–8,6 passos nos coeficientes de orifício de 0,015–0,025. A validação na bancada R2 é relatada separadamente, com limiares congelados."

O parágrafo relata a falha no mesmo padrão de frase que o sucesso, de modo que a classe B não pode ser lida por cima. Ele dá cada número com seu denominador e nomeia o modelo como sintético. Também aponta adiante para os resultados da bancada sem alegá-los. Confira se cada número corresponde exatamente à saída do laboratório antes que ele entre na dissertação.

6.4 Erros comuns e limites

Sementes independentes em comparações pareadas; intervalos apresentados como incerteza do mundo real; esconder a classe B.

As comparações pareadas precisam da mesma semente para as duas configurações; sementes independentes acrescentam ruído que esconde diferenças pequenas. Os intervalos de bootstrap descrevem a variabilidade da simulação sob o modelo, não a incerteza sobre plantas reais. A classe B pertence à tabela principal de resultados, não a um apêndice, porque é o limite medido do método e um operador precisa conhecê-lo. Relate as sementes usadas em cada comparação, para que outros possam repetir o pareamento exatamente.

6.5 Dos números às alegações

Depois dos Laboratórios 3 e 6, você tem contagens de detecção, atrasos, execuções com alarme falso e uma curva de sensibilidade. Transformá-los em alegações exige a escada do livro de doutorado companheiro: uma observação de protocolo não é uma inferência sobre o processo. Diga "o CUSUM alarmou com atraso médio de 37,7 passos enquanto o transbordamento real era de 1,38" (observação + inferência sobre o processo), e não "o CUSUM impede transbordamentos" (alegação de consequência sem evidência da camada de proteção). Quando chegarem os resultados da bancada R2, relate-os nas mesmas unidades, para que o leitor veja a transportabilidade, ou a sua falha, sem ter de procurar.

Mantenha uma pequena tabela que associe cada número à alegação que ele sustenta e ao nível dessa alegação. Um atraso em passos sustenta uma alegação de detecção; o transbordamento no alarme sustenta uma inferência sobre o processo dentro do modelo; nenhum dos dois sustenta uma afirmação sobre proteção, porque o estudo não mediu uma camada de proteção. Essa tabela alimenta depois o registro de alegações.

Exercícios — capítulo 6

Síntese do capítulo

Planos congelados, desenhos pareados, varreduras de sensibilidade e parágrafos honestos — incluindo a condição de falha — são o padrão de análise desta dissertação.

Respostas comentadas

EX033. Use o parágrafo da §6.3 com os números dos Laboratórios 3/6.

EX034. Sementes independentes alargam os ICs (o ruído compartilhado deixa de se cancelar).

EX035. Estocásticas: sorteios de ruído. Paramétricas: orifício, k, viés. Estruturais: tanque único, ignorar o atraso.

EX036. "k e h com hash registrado antes que qualquer dado de ataque da R2 seja aberto."

EX037. Relatar a proporção de detecção + a mediana do atraso entre os detectados, ou uma curva de sobrevivência.

EX038. Não são incerteza sobre plantas reais nem sobre o erro estrutural do modelo.