Validación y Análisis · Tema 29

Independencia entre replicaciones

Treinta corridas idénticas no son n = 30: sin semillas frescas y estado aislado, el IC miente con total confianza.

01 · Punto de partida

n = 30 idénticas vale n = 1

Reusar la misma semilla, compartir el generador global o no reiniciar el estado produce historias calcadas o encadenadas. La media parece precisa (s ≈ 0) y el IC angostísimo: precisión ficticia sobre una sola historia repetida.

  • ¿Cada réplica tiene semilla propia y registrada?
  • ¿El generador es aislado por réplica?
  • ¿El estado se reinicia de verdad?
  • ¿Cómo detectar la copia antes de publicar?

02 · Definición

Semilla, flujo y estado

⚄

Semilla

El punto de partida del azar. Fija → reproducible; distinta → independiente. Se archiva siempre (Tema 43).

≋

Flujo aislado

Un generador por réplica, sin global compartido. Lo que consume una no mueve a otra.

↺

Estado fresco

Colas vacías, reloj en cero, nivel inicial. Arrastrar estado encadena historias aunque cambie la semilla.

Pecados capitales del azar.
PecadoSíntomaAntídoto
Misma semillas ≈ 0, historias calcadasSemillaᵢ = maestra + i
Random globalOrden de ejecución cambia todoRandom(semillaᵢ) local
Hora como semillaIrreproducibleMaestra fija archivada
Estado arrastradoDeriva entre réplicasConstructor fresco por corrida

03 · Método

Protocolo en 5 pasos

  1. 1
    Fijar y archivar la maestra.

    Ej.: MAESTRA = 20240501. Publicada junto al código (Tema 43). Nada de hora del sistema.

  2. 2
    Derivar semillaᵢ = maestra + i.

    Determinista, única y auditable. Saltos amplios si el generador es sensible (o subflujos).

  3. 3
    Crear rngᵢ local por réplica.

    random.Random(semillaᵢ) pasado como argumento. Prohibido el global dentro del simulador.

  4. 4
    Reiniciar estado completo.

    Construir el sistema de cero en cada réplica. Test: dos corridas con igual semilla dan idéntico; con distinta, difieren.

  5. 5
    Chequear variabilidad sana.

    s > 0 acorde al sistema, trayectorias que se abren en abanico. s = 0 es alarma, no precisión.

maestra→semillaᵢ→rng local→s > 0

04 · La excepción diseñada

Números aleatorios comunes (a propósito)

Prohibido por defecto

Reusar sin decir

Repetir semillas para «estabilizar» fabrica precisión falsa. Si no está diseñado y declarado, es bug.

Permitido con protocolo

CRN para comparar

Comparar A vs. B con las mismas semillas por par aísla el efecto (reduce varianza, Tema 38). Diseñado, pareado y declarado.

CRN
Misma semillaᵢ para Aᵢ y Bᵢ: el azar compartido se cancela en la diferencia. Solo para comparar, nunca para estimar sola.
Test de cordura
Histograma de medias por réplica + rachas: calcadas o en escalera = dependencia. Abanico = salud.
Paralelo
Asignar semilla por índice, no por hilo: el orden de llegada no debe cambiar los resultados.

05 · Representación en Python

Bien aislado vs. global compartido

Python en tu navegador. El modo reusado da s = 0: precisión de mentira.

import random
MAESTRA = 20240501

def replica(semilla):
    rng = random.Random(semilla)  # aislado: nadie más lo toca
    return sum(rng.gauss(12, 2) for _ in range(5)) / 5

frescas = [replica(MAESTRA + i) for i in range(6)]
reusadas = [replica(MAESTRA) for _ in range(6)]
print("frescas:", [round(x, 1) for x in frescas])
print("reusadas:", [round(x, 1) for x in reusadas], "(calcadas: n real = 1)")

Las frescas bailan (s ≈ 1); las reusadas repiten (s = 0). El IC de las segundas es fraude.

Test de cordura: s > 0

import math
def s_de(xs):
    m = sum(xs)/len(xs)
    return math.sqrt(sum((x-m)**2 for x in xs)/(len(xs)-1))
print(f"s frescas {s_de(frescas):.2f} vs s reusadas {s_de(reusadas):.2f}")
print("Alarma si s ≈ 0 con sistema estocástico")

06 · Exploración

Laboratorio: abanico sano vs. riel muerto

n trayectorias de 12 pasos. En modo frescas cada una tiene su semilla (abanico); en modo reusada todas comparten la misma (un riel). Observá s final, EE y el veredicto: el riel promete precisión imposible.

EXPERIMENTO 29

Independencia visible

frescas = abanico · reusada = riel

Los resultados numéricos aparecen debajo.
s final0,00
EE nominal0,00
Trayectorias únicas0
Veredicto—

Con semillas frescas, el abanico estima s ≈ 2 honestamente.

Cada línea es una réplica. 0 = misma semilla para todas; 1 = semilla maestra + i. El EE solo vale en modo frescas.

Preguntas para explorar

  1. Con frescas y n=12: ¿s, EE y únicas? Cambiá a reusada: ¿s y únicas? ¿Qué le pasa al EE?
  2. En reusada con n=20: ¿el EE se achica al crecer n? ¿Por qué ese angostamiento es fraude?
  3. ¿Cuándo reusar a propósito es legítimo? (Pista: CRN pareado A/B declarado).
Ver respuestas sugeridas
  1. Frescas: s ≈ 2, únicas 12, EE honesto. Reusada: s = 0, únicas 1, EE = 0: precisión infinita falsa con n real 1.
  2. Sigue 0: dividir 0 entre √20 es 0. El n falso no crea información; el IC colapsa sobre una anécdota.
  3. Solo en comparación pareada Aᵢ vs. Bᵢ con igual semillaᵢ, declarado como CRN para reducir varianza de la diferencia (Tema 38).

07 · Comprensión

Confusiones frecuentes

«Random global alcanza»

El global lo toca todo (librerías incluidas) y el orden cambia resultados. rng local por réplica: determinismo total.

«Hora como semilla es más aleatorio»

Es irreproducible, no más aleatorio. Maestra fija + índice: aleatorio e independiente y repetible.

«s = 0 es precisión máxima»

Con sistema estocástico es alarma de copia, no logro. La precisión real nunca es cero con azar.

«CRN es trampa siempre»

Sin declarar sí; diseñado para comparar pareada es técnica legítima de reducción de varianza.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: detectar el riel

¿Frescas o riel?

runs = [12.1, 12.1, 12.1, 12.1]
print("únicas:", len(set(runs)), "-> riel: n real = 1")
Ver solución razonada

1 única en 4: riel total. No validar ni informar EE: arreglar semillas y repetir.

Ejercicio 2: maestra + índice

¿Semillas para 5 réplicas con maestra 99?

print([99+i for i in range(5)], "(únicas, auditables, reproducibles)")
Ver solución

[99…103]: cualquiera reproduce la réplica 3 con semilla 101. Trazabilidad total.

Ejercicio 3: CRN declarado

¿Cómo comparar A/B con menos ruido?

Ver una posible respuesta
print("A_i y B_i con semilla 1000+i: la diferencia cancela el azar común.")
print("Documentar CRN; estimar solo con frescas independientes.")

El pareo por semilla aísla el efecto del tratamiento. Sin documento CRN, parece riel.

09 · Síntesis

Ideas para recordar

  • Semilla propia (maestra + i) + rng local + estado fresco = independencia.
  • s ≈ 0 en sistema estocástico = alarma, no precisión.
  • Maestra archivada + log de semillas: auditoría de 30 segundos.
  • CRN solo pareado, diseñado y declarado para comparar.
  • Sin independencia no hay EE, IC, n* ni comparación válidos.

En el próximo tema domaremos el arranque: período de calentamiento.