<jupyter_start><jupyter_text>Validación metodológica - experimentosCon el objeto de validar la metodología, se realizan experimentos de los cuales ya se conoce su relación causal. Esos experimentos se generan a continuación para multiples realizaciones.  Importación de bibliotecas<jupyter_code>from IPython import display
import ipywidgets
import numpy as np<jupyter_output><empty_output><jupyter_text>Experimento 0 $$X_i \nleftrightarrow Y_i$$<jupyter_code>def experimento_0(lt):
    global ltxx, ltyy, ltyx, ltxy, pa, pb, qa, qb
    """
    Genera las series X y Y
    
    Parámetros
    ----------
    lt : Longitud de la serie
    p : Parámetro p para generar X
    q : Parámetro q para generar Y
    
    Regresa
    ----------
    Arreglos de X y Y
    """
    # Inicialización
    p = 0.4 * (pa + pb)
    q = 0.4 * (qa + qb)
    # Generacion de X
    x = np.random.binomial(n = 1, p = p, size = lt)
    # Generacion de Y
    y = np.random.binomial(n = 1, p = q, size = lt)
    
    return x, y<jupyter_output><empty_output><jupyter_text>Experimento 1 $$X_i = Y_i$$<jupyter_code>def experimento_1(lt):
    global ltxx, ltyy, ltyx, ltxy, pa, pb, qa, qb
    """
    Genera las series X y Y
    
    Parámetros
    ----------
    lt : Longitud de la serie
    p : Parámetro p para generar X y Y
    
    Regresa
    ----------
    Arreglos de X y Y
    """
    # Inicialización
    p = 0.4 * (pa + pb)
    # Generacion de X
    x = np.random.binomial(n = 1, p = p, size = lt)
    # Generacion de Y
    y = np.copy(x)
    
    return x, y<jupyter_output><empty_output><jupyter_text>Experimento 2 $$X_i \rightarrow Y_{i + l_{xy}}$$<jupyter_code>def experimento_2(lt):
    global ltxx, ltyy, ltyx, ltxy, pa, pb, qa, qb
    """
    Genera las series X y Y
    
    Parámetros
    ----------
    lt : Longitud de la serie
    ltxy : Retardo de la influencia de X sobre Y
    qa : Parámetro qa para generar Y
    qb : Parámetro qb para generar Y
    
    Regresa
    ----------
    Arreglos de X y Y
    """
    # Inicialización
    p = 0.4 * (pa + pb)
    x = np.random.binomial(n = 1, p = 0.5, size = 100)
    y = np.random.binomial(n = 1, p = 0.5, size = 100)
    # Proceso principal
    while y.size < ltxy + lt:
        q = qa * x[-ltxy] + qb * (1.0 - x[-ltxy])
        x_cont = np.random.binomial(1, p = p)
        y_cont = np.random.binomial(1, p = q)
        x = np.append(x, x_cont)
        y = np.append(y, y_cont)
    # Corte
    x = x[-lt :]
    y = y[-lt :]
    
    return x, y<jupyter_output><empty_output><jupyter_text>Parámetros de simulación<jupyter_code>nr = 100      # Numero de realizaciones
lt = 100_001  # Tamaño de las series X y Y
ltxx = 23     # Tiempo de retardo de X -> X
ltxy = 13     # Tiempo de retardo de X -> Y
ltyx = 19     # Tiempo de retardo de Y -> X
ltyy = 29     # Tiempo de retardo de Y -> Y
pa = 0.12     # Parámetro pa para generar X
pb = 0.88     # Parámetro pb para generar X
qa = 0.12     # Parámetro qa para generar Y
qb = 0.88     # Parámetro qb para generar Y<jupyter_output><empty_output><jupyter_text>Inicialización<jupyter_code>x00, y00 = np.empty((nr, lt)), np.empty((nr, lt))  # Experimento X <-/-> Y
x01, y01 = np.empty((nr, lt)), np.empty((nr, lt))  # Experimento X = Y
x02, y02 = np.empty((nr, lt)), np.empty((nr, lt))  # Experimento X -> Y<jupyter_output><empty_output><jupyter_text>Realizaciones<jupyter_code># Barra de progreso
progreso = ipywidgets.FloatProgress(
    value = 0,
    min = 0,
    max = nr, 
    description = 'Progreso:')
display.display(progreso)

progreso.value = 0
for r in range(nr):
    x00[r], y00[r] = experimento_0(lt)
    x01[r], y01[r] = experimento_1(lt)
    x02[r], y02[r] = experimento_2(lt)
    progreso.value = r + 1<jupyter_output><empty_output><jupyter_text>Archivos<jupyter_code>ruta = "datos_experimentos_validacion/"
np.savetxt(ruta + "x00" + ".csv", x00, fmt = "%d")
np.savetxt(ruta + "x01" + ".csv", x01, fmt = "%d")
np.savetxt(ruta + "x02" + ".csv", x02, fmt = "%d")

np.savetxt(ruta + "y00" + ".csv", y00, fmt = "%d")
np.savetxt(ruta + "y01" + ".csv", y01, fmt = "%d")
np.savetxt(ruta + "y02" + ".csv", y02, fmt = "%d")<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14199614271938282, 'fraction_numerical': 0.028206364513018323, 'mean_word_length': 2.642669007901668, 'pattern_counts': {'":': 0, '<': 35, '<?xml version=': 0, '>': 39, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '155039', 'license': 'CC0-1.0', 'n_tokens_mistral': 1787, 'n_tokens_neox': 1680, 'n_words': 457, 'path': 'validacion_experimentos.ipynb', 'repo_name': 'tri-ntropy/termo-causalidad', 'size': '4148'}