Arousal

Autor/a

Hugo Gomez, Lab 25

La presentación de un incentivo genera una pequeña cantidad de excitación que decae exponencialmente con el tiempo. Si el intervalo de tiempo que separa los incentivos sucesivos es lo suficientemente corto, la excitación se acumula hasta un nivel de equilibrio predecible a partir de las constantes de decaimiento derivadas de la presentación de incentivos aislados.

Arousal después de una única alimentación

Los efectos de una única alimentación fue el ligero aumento del nivel de actividad y luego disminuyó lentamente con el tiempo. La tasa a la que la actividad disminuye fue bien descrita por un función exponencial de la forma:

\(R = A_{1}e^{-t/\alpha}\)\((1)\)

Donde R es la tasa prevista de respuestas por minuto, \(A1\) es la intersección de la función en \(tiempo = 0\), \(t\) es el tiempo en segundos desde la alimentación, \(\alpha\) es la constante de tiempo, y \(e\) es la base de logaritmos naturales.

Esta curva representa con precisión como la cola derecha de la curva de actividad se acerca a \(0\) a medida que \(t\) crece. La tasa de regreso al nivel de referencia (\(0\)) está gobernado por \(\alpha\), la “constante de tiempo” del sistema. Cuando \(t = \alpha\), el sistema ha completado el \(63\)% de su regreso al equilibrio. Cuando la constante de tiempo (\(\alpha\)) es relativamente grande, indica que la excitación decae lentamente.

Haz Clic para ver el Código
```{python}
#@title Curva de decaimiento dada la constante de tiempo $\alpha$
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import ipywidgets as widgets
import math


def arousal1 (A, total_time, alpha): 

    R = A * math.e ** (-total_time/alpha)

    plt.figure(dpi=120)
    plt.plot(total_time, R)
    plt.ylabel(r"Excitabilidad")
    plt.xlabel(r"Tiempo")
    plt.title(r"Arousal")
    plt.show()

arousal1(alpha = 50, A = 10, total_time = np.linspace(1, 400, 1000))
```

Ecuación 1.

Haz Clic para ver el Código
```{python}
#@title Ecuación 1
import math
import numpy as np
import matplotlib.pyplot as plt
import ipywidgets as widgets

def timeconstant (A1, dt, total_time, alpha): #agregamos a la función las variables, dt es la diferencia temporal igual a 1s
    plt.figure(figsize = (9, 7))
    for step1 in range(total_time): #creamos un loop en el que la ecuación se ejecute po cada segundo en el tiempo hasta el tiempo máximo
        t_1 = step1 * dt + 1
        R = A1 * ((math.e ** (-t_1/alpha))) #programamos la primera ecuación  
        plt.plot(t_1, R, 'ko') #graficamos el resultado
    plt.xlabel('Time')
    plt.ylabel('Response')

timeconstant(total_time = 400, alpha = 50, A1 = 10, dt = 1)
#Los valores de los parámetros de la funciones exponencial se se encuentra en la bibliografía.
```

Killeen modeló en la siguiente ecuaciòn el curso temporal del fenómeno Arousal a lo largo de varios ensayos. Los parámetros de dicha ecuaciòn están asociados con la inhibición temporal (\(I\)), los comportamientos competitivos (\(C\)) y la excitación (\(A\)):

\(R=A(e^{-t/C}-e^{-t/I})\)\((2)\)

Si existen fuentes adicionales de inhibición o competencia, se deben introducir procesos exponenciales adicionales con sus parámetros. Este sistema da como resultado una función gamma generalizada de la cual la segunda ecuación es un ejemplo simple.

Suponga que todas las constantes de tiempo son idénticas (\(C, I, ... n\)) y que el organismo está inactivo hasta que los procesos inhibidores de \(N\) hayan terminado, después de lo cual se involucra en el comportamiento medido por un “conteo” más. Este modelo produce un proceso gamma simple, con parámetros \(\lambda\) (tasa de conteo), \(N\) (conteo del umbral) y \(A\) (tasa de respuesta asintótica).

\(R=A(\lambda t)^{N}e^{-\lambda t}/N!\)\((3)\)

Ecuación 3

Haz Clic para ver el Código
```{python}
# R = Tasa de respuesta por minuto predicha
# A = Exitación, factor escalar que proporciona una medida del nivel máximo de actividad (134, 47, 32, 10, 7)
# lamda = Tasa de conteo del deacimiento de los rastros de las respuestas, es una constante de tiempo (1/landa) que en este caso es 
#          aproximandamente igual al promedio de C e I (0.215, 0.255, 0.265, 0.825, 1.71)
# N = Procesos inhibitorios, conteo del umbral (en este caso N=2)
# time = Tiempo máximo normalizado (En este caso serían: 25s, 60s, 120s, 200s, 400s)
# R = (A * ((lamda * time)**N) * (math.e**(-lamda * time))) / math.factorial(N) ---> Segunda ecuación

def arousal(lamda, A, N, dt, time): #agregamos a la función las variables, dt es la diferencia temporal igual a 1s
    plt.figure(figsize = (9, 7))
    for step0 in range(time): #creamos un loop en el que la ecuación se ejecute po cada segundo en el tiempo hasta el tiempo máximo
        t0 = (step0 * dt + 1) / time #normalizamos el tiempo a 1
        t_0 = step0 * dt + 1
        R0 = ((A * ((lamda * t_0)**N)) * (math.e**( -lamda * t_0))) / math.factorial(N) #programamos la tercera ecuación  
        plt.plot(t0, R0, 'ko')#graficamos el resultado
    plt.xlabel('Time')
    plt.ylabel('Response')

arousal(time = 400, lamda = 1.71, A = 134, N = 2, dt = 1)
```

Visualización de respustas en diferentes intervalos de tiempo.

Haz Clic para ver el Código
```{python}
#@title Visualización de respustas en diferentes intervalos de tiempo.

A = np.array([134, 47, 32, 10, 7])
lamda = np.array([0.215, 0.255, 0.265, 0.825, 1.71])
N = 2
time = np.array([25, 60, 120, 200, 400])
dt = 1
#todos los valores de los parámetro que se mencionaron desde el inicio 
#son medias geométricas de los datos, obtenidos por un programa iterativo de mínimos cuadrados

def arousal2 (lamda, A, N, dt, time): #esta función junta los valores de los parámetros en orden en un solo gráfico 
                                      #para que sea comparable el cambio de respuestas dado el cambio en el tiempo
    con = 0
    colors = ["b", "g", "r", "yellow", "orange"]
    plt.figure(figsize = (9, 7))
    for t in time:
        for step in range(t): #este es el mismo loop que hicimos anteriormente pero se repite por cada valor en el arreglo de tiempo
            t0 = (step * dt + 1) / t
            t_0 = step * dt + 1
            R0 = ((A[con] * ((lamda[con] * t_0)**N)) * (np.exp(-lamda[con] * t_0))) / math.factorial(N)     
            plt.plot(t0, R0, 'bo', color = colors[con], markersize = 5)
        con +=1
    plt.xlabel('Time')
    plt.ylabel('Response')
arousal2(lamda, A, N, dt, time)
```

Referencias

  • Killeen, P., Hanson, S., & Osborne, S. (1978). Arousal: Its Genesis and Manifestation as Response Rate. Psychological Review, 85(6), 571-581, Arizona State University.

  • Killeen, P. (1975). On the Temporal Control of Behavior. Psychological Review, 82(2), 89-115, Arizona State University.

Versión Interactiva.

Aquí puedes encontrar la versión interactiva.