Code for the multistage model (Srivastava et al)
Clone or download
Pull request Compare This branch is 2 commits ahead of PrincetonUniversity:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
figures
.gitignore
MSDDM_wrapper.m
README.md
SrivastavaFengShenhav_RLDM2015_MSDDM_poster_final.pdf
call_MSDDM_wrapper.m
cdf_to_pdf.m
chisq.m
chisq_rt2002.m
dist_deadline.m
fit_sim.m
fit_sim.mat
make_cdf_example.m
multi_stage_ddm_metrics.m
multi_stage_fpt_cont.m
multistage_ddm.m
multistage_ddm_fpt.m
multistage_ddm_fpt_dist.m
nbins.m
obj2a1d2z1xT0.m
reward_rate.m
reward_rate_max.m
rt2002.m
sim_msddm.m
test_chisq.m
test_msfit.m
test_msfit_2stage.m

README.md

multistage

This repository contains code for the numerical computation of various first passage time statistics for a multistage Wiener diffusion model with time varying piecewise constant drift rate. The acronym we use for the model and this code is MSDDM, which is an artifact from the early days of the project. It is the result of a collaboration between Vaibhav Srivastava, Samuel Feng, Jonathan D. Cohen, Naomi Leonard, and Amitai Shenhav.

The remainder of this file highlights key functions associated with the MSDDM package, including core functions (multi_stage_ddm_metrics.m and multistage_ddm_fpt_dist.m) and wrapper functions (MSDDM_wrapper.m and call_MSDDM_wrapper.m)


call_MSDDM_wrapper.m Script describing example calls to MSDDM_wrapper



MSDDM_wrapper.m Function for using multi_stage_ddm_metrics and multistage_ddm_fpt_dist to generate expected ER/DT and upper/lower threshold CDFs for analytic MSDDM process, and compare that to MC simulations of the same. Includes rudimentary plots.

*USAGE: [aRT, aER, aRT_plus, aRT_minus, aCDF_T, aCDF_Y, aCDF_Y_plus, aCDF_Y_minus,simMeanRT, simMeanER,simMeanRT_plus,simMeanRT_minus, simCDF_T, simCDF_Y, simCDF_Y_plus, simCDF_Y_minus] = MSDDM_wrapper(a,s,varthresh,deadlines,thresh,x0,x0dist,runSimulations,doPlots)

*INPUT: a = vector of drift rates at each stage s = vector of diffusion rates at each stage deadlines = vector of times when stages start. Firt entry should be 0. thresh = vector of thresholds to test (IMPORTANT: these are not thresholds for different stages - currently assuming uniform threshold across stages) x0 = support of initial condition. Equals the initial condition in the deterministic case x0dist = density of x0. Equals 1 in the deterministic case runSimulations = binary for whether to perform monte carlo simulations in addition to generating analytic solution doPlots = binary for whether to generate some relevant plots

*OUTPUT: aRT, aER = vectors of analytic expected decision time and error rate, one for each threshold being tested [using multi_stage_ddm_metrics] aCDF_T, aCDF_Y = cell array of analytic CDFs (..._T = RT range, ..._Y = cumul prob), one for each threshold being tested [using multistage_ddm_fpt_dist] simMeanRT, simMeanER, simCDF_T, simCDF_Y = same as above, but using MC simulations to generate each value estimate



multi_stage_ddm_metrics.m Function for generating expected (average) RT/ER overall and mean RTs for upper and lower bounds. Iteratively computes and compiles CDFs for each stage conditional on no threshold crossing in prior stage

*USAGE: [mean_RT, mean_ER, mean_RT_plus, mean_RT_minus]=multi_stage_ddm_metrics(a ,s, deadlines, thresholds, x0, x0dist)

*INPUT: a = vector of drift rates at each stage s = vector of diffusion rates at each stage deadlines = vector of times when stages start. First entry should be 0. thresholds = vector of thresholds at each stage. x0 = support of initial condition. Equals the initial condition in the deterministic case x0dist = density of x0. Equals 1 in the deterministic case

*OUTPUT: mean_RT = mean decision time mean_ER = error rate mean_RT_plus = mean decision time conditioned on correct decision mean_RT_minus= mean decision time conditioned on erroneous decision



multistage_ddm_fpt_dist.m Function for computing CDF overall (Y) and for upper/lower bounds (Yplus, Yminus) separately. Iteratively computes and compiles CDFs for each stage conditional on no threshold crossing in prior stage

*USAGE: [T,Y, Yplus, Yminus]=multistage_ddm_fpt_dist(a,s,threshold,x0,x0dist,deadlines,tfinal)

*INPUT: a = vector of drift rates s = vector of diffusion rates z = threshold x0= discretized initial condition support set x0dist= discretized pdf of the initial condition (equal to 1 if x0 is deterministic) deadlines = set of deadlines, first element is zero tfinal = support for decision time =[0 tfinal]

*OUTPUT: T = support of decision time Y = cdf of decision time



dist_deadline.m Function for computing particle density, mean, MGF, and no decision probability for a given deadline. (The computed density can be assigned as the density of initial condition for next stage.)

*USAGE: [x,prob,pnd,mean_dead,mgf_dead,sec_dead] = dist_deadline(a,s,x0, x0dist,deadline,z, theta)

*INPUT: a = drift rate s = diffusion rate x0 = support of initial condition (discretized) x0dist = density of x0 at points in x0 deadline = change point z= threshold theta = moment generating function parameter

*OUTPUT: x = Support set of distribution at deadline prob = density of X(deadline) conditioned on decision time greater than deadline pnd= probability of no decision until deadline mean_dead= mean value of X(deadline) mgf_dead= moment generating function of X(deadline) sec_dead = second moment of X(deadline)