Quick start#
Installation#
pyLBA requires Python 3.10 or newer. Install from the repository:
pip install git+https://github.com/rgs2151/pyLBA.git
Simulation#
Create a model and specify the starting-point bound, thresholds, drift parameters, and non-decision time:
from pyLBA import LBAModel, LBAParameters
model = LBAModel()
parameters = LBAParameters(
A=1.0,
b=[2.0, 3.0],
v=2.0,
s=1.0,
tau=0.1,
)
data = model.generate_data(500, parameters, seed=42)
print(data.head())
A scalar is shared across accumulators. A vector supplies one value per
accumulator. The number of accumulators is inferred from parameter vectors;
pass n_acc explicitly when all parameters are scalar.
The result is a pandas DataFrame with response times in rt and zero-based
choice labels in response. A fixed seed reproduces the simulated data.
Fitting and prediction#
This example estimates thresholds while holding the other parameters fixed:
model.fit_mcmc(
data,
priors={"A": 1.0, "v": 2.0, "s": 1.0, "tau": 0.1},
draws=1000,
tune=1000,
chains=4,
random_seed=42,
)
predictions = model.predict(100, seed=7)
import arviz as az
print(az.summary(model.trace, var_names=["b"]))
print(model.parameters)
trace contains the posterior samples. parameters contains posterior
means, and predict simulates at those means. See Bayesian fitting for default
priors and custom distributions.
Plot simulated data#
import matplotlib.pyplot as plt
for response, trials in data.groupby("response"):
plt.hist(trials.rt, bins=30, alpha=0.5, label=f"Response {response}")
plt.xlabel("Response time")
plt.ylabel("Trials")
plt.legend()
plt.show()