Mapa de la lección
Lección 04 publicada. Mapa, ejemplo, EX021.
flowchart TD
N0["Resultados de aprendizaje y conexión"]
N1["4.1 Reproducción, replicación, robustez"]
N2["4.2 Reproducir un cálculo de modelo: el modelo insum"]
N3["4.3 La discrepancia de GridWater-Sim sintética"]
N4["4.4 Verificar un simulador"]
N5["4.5 Replicar una línea de base de detección: artefac"]
N6["4.6 Obtención de parámetros"]
N7["4.7 El piloto"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Ejemplo resuelto"]
EX --> Q["Ejercicio EX021"]
Dibujo lógico
flowchart LR
N0["Resultados de aprendizaje y conexión"]
N1["4.1 Reproducción, replicación, robustez"]
N2["4.2 Reproducir un cálculo de modelo: el modelo insum"]
N3["4.3 La discrepancia de GridWater-Sim sintética"]
N4["4.4 Verificar un simulador"]
N5["4.5 Replicar una línea de base de detección: artefac"]
N6["4.6 Obtención de parámetros"]
N7["4.7 El piloto"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX021"]
[Resultados de aprendizaje y conexión]
|
v
[4.1 Reproducción, replicación, robustez]
|
v
[4.2 Reproducir un cálculo de modelo: el modelo insum]
|
v
[4.3 La discrepancia de GridWater-Sim sintética]
|
v
[4.4 Verificar un simulador]
|
v
[4.5 Replicar una línea de base de detección: artefac]
|
v
[4.6 Obtención de parámetros]
|
v
[4.7 El piloto]
|
v
[Ejemplo resuelto] --> [Ejercicio EX021]
Resultados de aprendizaje y conexión
Al terminar este capítulo, el estudiante será capaz de:
- Distinguir la reproducción, la replicación y las comprobaciones de robustez, y elegir cuál necesita una línea de base.
- Reproducir un cálculo de modelo publicado, declarar de antemano una tolerancia, diagnosticar una discrepancia y redactar una bitácora de reproducción.
- Verificar un simulador con invariantes, pruebas unitarias y una implementación independiente antes de confiar en cualquier comparación que produzca.
- Reconocer los artefactos de los protocolos de evaluación —ajuste por punto, fuga temporal, características propias del banco de pruebas— que inflan las líneas de base de detección.
- Obtener de expertos y documentar los parámetros del modelo con incertidumbre explícita.
- Diseñar un piloto acotado cuyo propósito sea la factibilidad, con criterios de continuar o detener, y explicar por qué un piloto no debe usarse para estimar el tamaño del efecto.
El capítulo 3 fijó las hipótesis, las líneas de base y las condiciones de fracaso. Antes de que el estudio principal pueda comparar DEP con SILO, CRITFLAG y ORACLE, hay que demostrar que cada número del que dependen esas comparaciones significa lo que afirma.
4.1 Reproducción, replicación, robustez
Las National Academies (2019) distinguen la reproducibilidad —obtener resultados coherentes con los mismos datos de entrada, pasos computacionales, métodos y condiciones de análisis— de la replicabilidad —obtener resultados coherentes entre estudios dirigidos a la misma pregunta, cada uno con sus propios datos—. Una tercera actividad, a menudo llamada comprobación de robustez, varía las decisiones analíticas sobre los mismos datos. Las tesis sobre infraestructura necesitan las tres:
Tabla de la lección; desplázate para ver todas las columnas →
| Actividad | Ejemplo del Estudio Cascada | Contra qué protege |
|---|---|---|
| Reproducción | Volver a ejecutar un cálculo de inoperabilidad publicado con la matriz publicada | Malinterpretar convenciones; errores de programación en la línea de base |
| Replicación | Construir Port Halvard de forma independiente y comprobar si se mantiene el resultado de Riverbend | Hallazgos propios de un contexto o de un modelo |
| Robustez | Variar pesos, reservas, paso temporal, horizonte | Resultados que dependen de una sola elección arbitraria |
4.2 Reproducir un cálculo de modelo: el modelo insumo-producto de inoperabilidad
4.2.1 El modelo
El modelo insumo-producto de inoperabilidad de Haimes y Jiang (2001) adapta la economía insumo-producto de Leontief a la infraestructura. Cada sector i tiene una inoperabilidad q_i entre 0 (plenamente operable) y 1 (plenamente inoperable). El equilibrio tras una perturbación inicial c* es q = A*q + c*, de donde q = (I − A*)⁻¹ c*. El elemento A*_ij es la inoperabilidad que aporta al sector i cada unidad de inoperabilidad del sector j. La convención importa: la fila es el sector receptor y la columna el sector proveedor. Los artículos y el software difieren en la notación, y algunos derivan A* de tablas económicas de insumo-producto mediante pasos de normalización en los que es fácil equivocarse de forma sutil.
4.2.2 Laboratorio de reproducción
Un artículo «publicado» sintético informa que, tras una perturbación que deja la electricidad inoperable en un 50 %, el agua alcanza una inoperabilidad de equilibrio de 0,236 en un modelo de tres sectores. Declare de antemano una tolerancia de ± 0,005 (el redondeo de la publicación) y luego reproduzca:
# Lab 4a - reproducing an inoperability input-output (IIM) result (offline, standard library only)
# q = (I - A*)^-1 c*. Convention: A*[i][j] = inoperability contributed to sector i per unit inoperability of sector j.
def solve(a, c):
n = len(c)
m = [[(1.0 if i == j else 0.0) - a[i][j] for j in range(n)] + [c[i]] for i in range(n)]
for col in range(n):
piv = max(range(col, n), key=lambda r: abs(m[r][col]))
m[col], m[piv] = m[piv], m[col]
for r in range(n):
if r != col:
f = m[r][col] / m[col][col]
m[r] = [x - f * y for x, y in zip(m[r], m[col])]
return [m[i][n] / m[i][i] for i in range(n)]
sectors = ["power", "water", "telecom"]
A = [[0.00, 0.05, 0.10], # power depends a little on water (cooling) and telecom (SCADA comms)
[0.40, 0.00, 0.15], # water depends strongly on power
[0.30, 0.02, 0.00]] # telecom depends on power
c = [0.50, 0.00, 0.00] # initial perturbation: power 50% inoperable
q = solve(A, c)
print("convention A* (row = receiving sector):", [round(x, 3) for x in q])
At = [list(r) for r in zip(*A)]
qt = solve(At, c)
print("transposed by mistake: ", [round(x, 3) for x in qt])
Salida esperada:
convention A* (row = receiving sector): [0.528, 0.236, 0.163]
transposed by mistake: [0.528, 0.028, 0.057]
Con la convención correcta, la reproducción coincide (agua 0,236). Con la matriz traspuesta —un error que no produce ninguna advertencia, ningún fallo y un vector de aspecto plausible—, la inoperabilidad del agua cae casi un orden de magnitud y la clasificación de los sectores cambia: las telecomunicaciones aparecen ahora más afectadas que el agua. El valor de la propia electricidad coincide casualmente en ambos casos, y eso es exactamente lo que vuelve peligroso el error: quien replique comprobando solo el sector perturbado declararía el éxito.
4.2.3 La bitácora de reproducción
Una bitácora de reproducción registra: el valor objetivo y su fuente (página, tabla); la tolerancia, fijada antes de ejecutar; el entorno de software (versión del lenguaje, sistema operativo); las entradas y su procedencia; la salida exacta; las discrepancias y su diagnóstico; y la decisión (reproducido, reproducido tras una corrección, no reproducido). Cuando la convención de los autores originales es ambigua, escríbales; registre la correspondencia. Una no reproducción es un resultado, no una vergüenza, y pertenece a la tesis.
4.2.4 Lo que un IIM reproducido puede sustentar y lo que no
Reproducir el cálculo solo muestra que se entiende la aritmética. El IIM sigue siendo lineal y basado en el equilibrio: no modela reservas, tiempos ni orden de restablecimiento, y sus coeficientes suelen derivarse de flujos económicos y no de dependencias de ingeniería. En el Estudio Cascada sirve como contraste a nivel sectorial —¿coinciden los sectores que el IIM clasifica como más afectados con los servicios que el modelo de reservas muestra fallando?— y no como competidor del modelo de restablecimiento.
4.3 La discrepancia de GridWater-Sim (sintética)
El banco de referencia sintético GridWater-Sim reporta, para una configuración similar a Riverbend, una pérdida ponderada media de servicios críticos con restablecimiento de clientes primero que la reimplementación del candidato no pudo igualar dentro de la tolerancia declarada de antemano. El diagnóstico siguió el orden que con más frecuencia encuentra la causa:
- Entradas. ¿Se usaron las mismas distribuciones de parámetros? La documentación del banco de referencia daba las distribuciones triangulares como (mínimo, moda, máximo);
random.triangularde Python recibe (mínimo, máximo, moda). Intercambiar la moda y el máximo desplaza la media sin dar aviso. - Semántica. ¿«Restablecido» significa reenergizado o servicio reanudado? GridWater-Sim aplicaba un retardo de rearranque de una hora solo al agua; la reimplementación lo aplicaba a todos los servicios.
- Numérica. El banco de referencia avanzaba el tiempo en pasos fijos; la reimplementación calculaba intervalos de interrupción exactos. Los pasos fijos introducen un error de discretización que depende del paso y de dónde caen los vencimientos de las reservas dentro de un paso.
- Aleatoriedad. ¿Eran idénticos las semillas y el orden de las extracciones? El orden importa: extraer las duraciones antes que las reservas en una implementación y después en otra produce conjuntos de escenarios distintos a partir de la misma semilla.
Tras alinear (1) y (2), la diferencia restante quedó dentro de la tolerancia y se redujo con pasos temporales más pequeños, lo que confirmó (3). La tesis registra el banco de referencia como reproducido tras corregir una ambigüedad en el orden de los parámetros, reporta los valores originales y corregidos, y adopta la implementación de intervalos exactos, conservando la versión de pasos temporales como comprobación independiente.
4.4 Verificar un simulador
La verificación pregunta si el modelo está implementado correctamente; la validación pregunta si representa el sistema real de forma adecuada para su propósito (Sargent, 2013). La verificación va primero, porque validar una implementación con errores no tiene sentido. Invariantes que debe cumplir cualquier simulador de restablecimiento correcto:
- Si todas las reservas superan el horizonte, la pérdida ponderada de servicios críticos es cero con cualquier orden.
- Dos políticas que producen el mismo orden producen resultados idénticos con extracciones idénticas.
- La pérdida del oráculo es menor o igual que la de cada política en cada extracción.
- Aumentar una reserva, con todo lo demás fijo, nunca aumenta la pérdida.
- Las horas-cliente con la regla de Smith son menores o iguales que con cualquier otro orden cuando las duraciones de restablecimiento son iguales.
- La pérdida y las horas-cliente no son negativas y están acotadas por peso × horizonte y clientes × horizonte.
Las pruebas unitarias comprueban los componentes más pequeños: la aritmética de intervalos de un solo servicio; el efecto de una dependencia con reserva en el sitio; la asignación de cuadrillas con dos cuadrillas. Las pruebas entre implementaciones comparan dos implementaciones escritas de forma independiente con extracciones fijas. Las pruebas de condiciones extremas usan reservas nulas, duraciones nulas y un solo alimentador. Conserve las pruebas en el archivo (capítulo 7); un revisor que puede ejecutarlas confía más en las comparaciones que uno que debe aceptarlas por fe.
4.5 Replicar una línea de base de detección: artefactos de evaluación
Aunque el Estudio Cascada no propone un detector, su análisis del tiempo hasta el impacto depende de cuándo se reconoce una interrupción, y el candidato debe ser capaz de juzgar las líneas de base de detección reportadas para la infraestructura. Los mecanismos habituales de inflación son decisiones de evaluación, no propiedades del modelo.
4.5.1 Ajuste por punto
Kim et al. (2022) mostraron que el ajuste por punto (PA) —contar como detectado todo un segmento anómalo cuando se señala cualquier punto de él— puede hacer que puntuaciones aleatorias parezcan excelentes. El siguiente laboratorio reproduce el efecto con etiquetas sintéticas:
# Lab 4b - how point adjustment (PA) inflates detection scores (offline, standard library only)
import random
random.seed(42)
N = 2000
labels = [0] * N
for start, length in [(300, 60), (900, 120), (1500, 80)]:
for t in range(start, start + length):
labels[t] = 1
scores = [random.random() for _ in range(N)] # a detector that knows nothing
thr = sorted(scores)[int(0.97 * N)] # alarm on the top 3% of scores
pred = [1 if s > thr else 0 for s in scores]
def f1(p, y):
tp = sum(1 for a, b in zip(p, y) if a and b)
fp = sum(1 for a, b in zip(p, y) if a and not b)
fn = sum(1 for a, b in zip(p, y) if b and not a)
prec = tp / (tp + fp) if tp + fp else 0.0
rec = tp / (tp + fn) if tp + fn else 0.0
return round(2 * prec * rec / (prec + rec), 3) if prec + rec else 0.0
def segments(y):
segs, t = [], 0
while t < len(y):
if y[t]:
s = t
while t < len(y) and y[t]:
t += 1
segs.append((s, t))
else:
t += 1
return segs
def adjust(p, y, k=0.0):
q = list(p)
for s, e in segments(y):
hit = sum(p[s:e]) / (e - s)
if hit > k:
for t in range(s, e):
q[t] = 1
return q
print("point-wise F1 :", f1(pred, labels))
print("F1 after PA :", f1(adjust(pred, labels), labels))
print("F1 after PA%K (K = 0.20):", f1(adjust(pred, labels, 0.20), labels))
print("segments hit by >=1 alarm:", sum(1 for s, e in segments(labels) if any(pred[s:e])), "of", len(segments(labels)))
Salida esperada:
point-wise F1 : 0.05
F1 after PA : 0.911
F1 after PA%K (K = 0.20): 0.05
segments hit by >=1 alarm: 3 of 3
Un detector sin ninguna información obtiene 0,911 tras el PA porque cada segmento largo contiene, por azar, al menos una de las alarmas aleatorias del 3 %. PA%K con K = 20 % elimina aquí la inflación. Para la investigación en IC, la lección va más allá: ninguna de las dos métricas dice cuándo se produjo la primera alarma verdadera respecto del inicio del segmento, que es lo que importa para las reservas. Una métrica relevante para la consecuencia es la latencia de detección relativa al tiempo hasta el impacto: la fracción de incidentes detectados antes de que se agote la reserva del primer servicio dependiente.
4.5.2 Otros artefactos
- Fuga temporal. Las divisiones aleatorias de series temporales en entrenamiento y prueba permiten que un modelo aprenda del futuro. Use divisiones ordenadas en el tiempo que imiten el despliegue.
- Características propias del banco de pruebas. Un detector puede aprender firmas de las herramientas de inyección de ataques del banco de pruebas o de sus sensores específicos en lugar de los ataques.
- Cobertura del conjunto de ataques. Los ataques de un conjunto de datos los eligieron quienes lo construyeron; el rendimiento frente a ellos dice poco sobre otras clases de ataque (Arp et al., 2022).
- Tasas base. Una tasa de falsos positivos que parece pequeña en un conjunto de datos equilibrado puede desbordar a los operadores con tasas base realistas (Sommer y Paxson, 2010).
4.6 Obtención de parámetros
Las reservas, las duraciones de restablecimiento y los pesos del modelo provienen de personas. La obtención estructurada del juicio experto —preparar a los expertos, pedir cuantiles en lugar de valores únicos, devolverles las distribuciones implícitas y registrar sus razones— reduce el anclaje y el exceso de confianza (O'Hagan et al., 2006). Para el Estudio Cascada (sintético):
Tabla de la lección; desplázate para ver todas las columnas →
| Parámetro | Obtenido de | Forma | Documentación |
|---|---|---|---|
| Duración del restablecimiento de un alimentador | Tres despachadores de la REC | Mínimo, más probable y máximo para maniobras manuales sin SCADA | Razón de cada valor; desacuerdos registrados |
| Reserva de telecomunicaciones | Ingeniero de instalaciones del operador | Autonomía de baterías con la carga medida, horas de combustible del generador | Supuesto de carga enunciado |
| Reserva de agua | Gerente de operaciones de la RWA | Autonomía del generador más vaciado del almacenamiento hasta la presión mínima | Supuesto de demanda (estación) enunciado |
| Reserva del hospital | Director de instalaciones | Combustible disponible con la carga típica; horas de agua en el sitio | Se distinguen los requisitos normativos del inventario real |
| Pesos | Panel de gestión de emergencias | Comparaciones por pares convertidas en pesos | Obtenidos antes de cualquier simulación; firmados y fechados |
Las distribuciones triangulares son una elección pragmática para obtenciones de tres puntos; no se derivan de la física. El capítulo 6 pone a prueba si las conclusiones dependen de la familia de distribuciones.
4.7 El piloto
4.7.1 Para qué sirve un piloto
Un piloto pone a prueba la factibilidad: si funcionan los procedimientos, los materiales, los tiempos, los flujos de datos y los instrumentos. No es un estudio principal pequeño. Los tamaños del efecto estimados a partir de pilotos son demasiado imprecisos para planificar tamaños de muestra o para sustentar afirmaciones (Leon, Davis y Kraemer, 2011). El piloto del Estudio Cascada tuvo dos vertientes:
- Piloto de simulación. Ejecutar las cuatro políticas con 50 extracciones para comprobar que funcionan el código, el registro y los invariantes, que el tiempo de ejecución permite el número de extracciones previsto y que la censura a las 72 horas es poco frecuente. Los resultados del piloto (diferencias entre políticas) se registran como exploratorios y no se interpretan.
- Piloto de ejercicio de mesa. Tres operadores (participantes sintéticos P01–P03, no elegibles para el estudio principal) trabajaron un escenario de 40 minutos con y sin una visualización del tiempo hasta el impacto. Preguntas: ¿entienden la visualización? ¿Revela el escenario el resultado demasiado pronto? ¿Cuánto tarda cada decisión? ¿Funciona el proceso de consentimiento y de cierre informativo?
4.7.2 Criterios de continuar o detener (declarados de antemano)
Tabla de la lección; desplázate para ver todas las columnas →
| Criterio | Umbral | Resultado del piloto (sintético) | Decisión |
|---|---|---|---|
| Pasan las pruebas de invariantes | Todas | Todas | Continuar |
| Censura a las 72 h | < 1 % de las combinaciones servicio-extracción | 0 % | Continuar |
| Tiempo de ejecución para 500 extracciones, incluido el oráculo | < 1 hora | Minutos | Continuar |
| Los participantes leen correctamente la visualización | ≥ 2 de 3 | 3 de 3 tras un cambio de redacción | Continuar con revisión |
| El escenario revela el resultado prematuramente | No | Sí: una inyección mencionaba el «desvío hospitalario» | Revisar la inyección; repetir el piloto con un participante |
| Duración de la sesión | ≤ 60 min | 55 min | Continuar |
Cada revisión se registra en la bitácora de desviaciones con la fecha y la confirmación de que no existían datos del estudio principal.
4.8 Ejemplo resuelto: el piloto que cambió el escenario
En el piloto del ejercicio de mesa, P02 preguntó por qué la reserva del generador del hospital se mostraba como 26 horas cuando «todo el mundo sabe que el agua se va primero». El candidato solo había mostrado las reservas eléctricas directas. La visualización se revisó para mostrar el tiempo efectivo hasta el impacto (el mínimo sobre todos los caminos, como en el Laboratorio 3) junto a las reservas directas, con el camino indicado. Esto cambió el instrumento —un resultado legítimo de un piloto— y planteó una cuestión metodológica para el estudio principal: la comparación entre «con visualización» y «sin visualización» ponía a prueba ahora la visualización del tiempo efectivo hasta el impacto, y no simplemente cualquier información de criticidad. Las hipótesis del ejercicio de mesa se refinaron en consecuencia, antes del estudio principal, y el cambio se prerregistró como enmienda.
4.9 Errores habituales y límites
- Declarar exitosa una reproducción tras comprobar una sola salida.
- Fijar las tolerancias después de ver la discrepancia.
- Tratar el código del banco de referencia como la especificación cuando discrepa de su artículo, o viceversa, sin registrar cuál se siguió.
- Validar un simulador antes de verificarlo.
- Reportar el F1 con ajuste por punto para la detección en infraestructura sin la latencia relativa a la consecuencia.
- Pedir a los expertos números únicos y tratarlos como ciertos.
-
Usar los tamaños del efecto del piloto para planificar o para afirmar.
-
Comprobar solo el sector perturbado en una reproducción, como con la electricidad en la matriz de inoperabilidad traspuesta, que coincide con ambas convenciones.
- Suponer que el orden de los parámetros de una biblioteca coincide con la notación del artículo, como con la distribución triangular en el caso de GridWater-Sim.
- Interpretar las diferencias entre políticas en un piloto, cuando el propósito del piloto es la factibilidad y sus resultados se registran como exploratorios.
- Cambiar un instrumento del ejercicio de mesa tras el piloto sin registrar el cambio en la bitácora de desviaciones.
Ejercicios — capítulo 4
EX021 — Bitácora de reproducción. Objetivo: documentar un intento de reproducción. Entradas: Laboratorio 4a. Restricciones: ejecutar sin conexión; tolerancia de ± 0,005 fijada antes de ejecutar. Pasos: (1) registre el objetivo (agua 0,236); (2) ejecute primero la matriz traspuesta y registre la discrepancia; (3) diagnostique usando la convención de la matriz; (4) ejecute la convención correcta; (5) redacte la entrada de la bitácora con los detalles del entorno. Evidencia esperada: bitácora de reproducción. Rúbrica: 3 = salidas exactas, diagnóstico de la convención, entorno registrado, observa que la electricidad coincide en ambas ejecuciones; 2 = falta un elemento; 1 = sin diagnóstico; 0 = no se ejecutó.
EX022 — Análisis de perturbaciones con el IIM. Objetivo: usar un modelo reproducido para una afirmación acotada. Entradas: Laboratorio 4a con la convención correcta. Restricciones: sin conexión. Pasos: (1) calcule q para las perturbaciones de electricidad 0,5 y de telecomunicaciones 0,5 por separado; (2) calcule q para ambas juntas; (3) compruebe si el resultado conjunto es igual a la suma de los resultados separados y explique por qué; (4) enuncie una afirmación que el modelo sustenta y otra que no puede sustentar. Evidencia esperada: tres vectores y un párrafo. Rúbrica: 3 = vectores correctos, linealidad (superposición) explicada, afirmación limitada a la inoperabilidad de equilibrio sin tiempos; 2 = vectores correctos, explicación pobre; 1 = errores; 0 = nada.
EX023 — La trampa del orden de los parámetros. Objetivo: detectar un error de entrada silencioso. Entradas: una distribución documentada como (low = 4, mode = 8, high = 12). Restricciones: use random.triangular(low, high, mode) de Python. Pasos: (1) calcule la media teórica, (low + mode + high) / 3, para la llamada correcta triangular(4, 12, 8); (2) estime la media de la llamada errónea triangular(4, 8, 12) a partir de 100 000 extracciones con semilla y registre el mínimo y el máximo; explique qué muestrea realmente la llamada errónea; indique qué prueba lo habría detectado. Evidencia esperada: dos medias y una explicación. Rúbrica: 3 = media correcta 8,0; la llamada errónea trata 8 como high y 12 como mode, de modo que la fórmula de CPython devuelve 4 + 4·√(2u) para una u uniforme —valores en [4, ≈ 9,66] con media ≈ 7,77, que no forman en absoluto una distribución triangular—; una comprobación de la media por sí sola es débil, mientras que comprobar que el máximo de la muestra se acerca a 12 y trazar un histograma lo detectan; 2 = error identificado, prueba débil; 1 = error no detectado; 0 = nada.
EX024 — Pruebas de invariantes. Objetivo: redactar pruebas de verificación. Entradas: los invariantes del §4.4 y el simulador que encontrará en el capítulo 5 (Laboratorio 5), o uno propio. Restricciones: al menos cuatro invariantes como aserciones ejecutables. Pasos: (1) elija al menos cuatro invariantes del §4.4; (2) escriba cada uno como aserción ejecutable; (3) ejecute las aserciones con extracciones fijas; (4) introduzca deliberadamente un error, como eliminar el retardo de rearranque de un servicio, y muestre qué prueba falla. Evidencia esperada: código de las pruebas y salida antes y después del error. Rúbrica: 3 = cuatro o más invariantes significativos, el error detectado, explicación de por qué; 2 = las pruebas se ejecutan pero el error no se detecta; 1 = pruebas triviales; 0 = nada.
EX025 — Métrica de detección relativa a la latencia. Objetivo: definir una métrica de detección relevante para la consecuencia. Entradas: Laboratorio 4b y los valores de tiempo hasta el impacto del Laboratorio 3 (el primer impacto crítico a las 2 h para el SCADA del agua, 8 h para las telecomunicaciones). Restricciones: defina la métrica formalmente. Pasos: (1) defina «detectado antes del impacto» para un segmento con inicio conocido y tiempo hasta el impacto conocido; (2) calcúlela para el detector aleatorio, tratando cada paso temporal como 6 minutos y tomando un tiempo hasta el impacto de 2 h para cada segmento; (3) compárela con los valores de F1. Evidencia esperada: definición, fracción calculada, párrafo. Rúbrica: 3 = definición sólida y cálculo correcto a partir del índice de la primera alarma de cada segmento, con el contraste con el PA explicado; 2 = definición correcta, error de cálculo; 1 = vago; 0 = nada.
EX026 — Plan del piloto. Objetivo: diseñar un piloto de factibilidad. Entradas: su propio estudio de los ejercicios anteriores. Restricciones: al menos seis criterios de continuar o detener con umbrales; enunciado explícito de lo que no se estimará. Pasos: (1) enumere las preguntas de factibilidad del piloto; (2) fije umbrales declarados de antemano; (3) defina qué ocurre ante un «detener» en cada una; (4) defina quién puede participar y por qué los participantes del piloto quedan excluidos del estudio principal. Evidencia esperada: plan del piloto. Rúbrica: 3 = criterios medibles, solo de factibilidad, exclusión justificada, proceso de revisión registrado; 2 = un criterio vago; 1 = piloto usado para estimar el efecto; 0 = nada.
Síntesis del capítulo
Antes de comparar métodos, asegúrese de que los números significan lo que afirman. Reproduzca las líneas de base con una tolerancia fijada de antemano, compruebe más de una salida y registre las convenciones: una matriz traspuesta produjo una respuesta plausible y errónea que coincidía en el único valor que comprobaría quien replica con prisa. Diagnostique las discrepancias por entradas, semántica, numérica y aleatoriedad. Verifique los simuladores con invariantes, pruebas unitarias y una implementación independiente antes de validarlos. Trate con suspicacia las líneas de base de detección que dependen del ajuste por punto, de divisiones aleatorias o de un solo banco de pruebas, y prefiera para la infraestructura la latencia relativa al tiempo hasta el impacto. Obtenga los parámetros con su incertidumbre y su procedencia. Use el piloto para ajustar procedimientos e instrumentos, nunca para estimar efectos.