Code for [Ludwig, Wu & Schulz, 2022](TODO insert link) where we studied Exploration, Generalization, and Planning in Correlated Trees.
All modelling code can be found in src.
Correlated trees are constructed with rewards that are correlated between parent and child and between sibling nodes, defined by a diffusion kernel (see src/tree.R).
src/sim_tree.R simulates the n-step task, letting the models "walk down" a tree while collecting rewards.
Agents solving this task are defined in src/tree_models.R.
study contains the website of our experiment ("Roulecity"), as it was run on Prolific.
data_anonym contains anonymised data from this study.
For reproducing the results:
- Install all required R packages (see
./dependencies.txt). - To rerun the model fitting, use the
src/fit_*.Rscripts. When working on a cluster, you can use thesrc/{slurm, pbs}_fit_*.shscripts, depending on your cluster's scheduling system. They will produce .csv files with the best parameter fits in thefit/folder and log files inlog/(if present). The resulting .csv files only contain one subject / tree at a time. To join them, run the shell scriptfit/join_csvs.sh PREFIXwhere PREFIX is the filename without the number and.csv. - To reproduce the figures, run
src/fig_behaviour.Randsrc/fig_model.R, respectively.
You can also play around with the data in the markdown notebooks,
src/behaviour.R and src/model_fitting.R, of which the latter includes Supplementary analyses.
Note that we used b ("breadth"), d ("depth") and c ("correlation") for the three dimensions in the paper. In the code these variables correspond to B ("breadth"), H (height") and A (alluding to the corresponding alpha parameter).