• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
HDDM: Hierarchical Bayesian estimation of the Drift Diffusion Model
 

HDDM: Hierarchical Bayesian estimation of the Drift Diffusion Model

on

  • 1,286 views

Talk presented at MathPsych

Talk presented at MathPsych

http://github.com/hddm-devs/hddm

Statistics

Views

Total Views
1,286
Views on SlideShare
1,286
Embed Views
0

Actions

Likes
1
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    HDDM: Hierarchical Bayesian estimation of the Drift Diffusion Model HDDM: Hierarchical Bayesian estimation of the Drift Diffusion Model Presentation Transcript

    • HDDM: Hierarchical Bayesian Drift-Diffusion Modeling Thomas V. Wiecki & Imri Sofer, Michael J. Frank
    • Drift-Diffusion Model
    •  
    •  
    • Traditional model fitting Fitting separate models to each subject Fitting one model to all subjects e.g. DMAT, fast-dm, EZ Ignores similarities Ignores differences Subject 1 ... Subject n P( data 1 | θ 1 ) ... P( data n | θ n ) P( data| θ ) Subject 1 ... Subject n Subject 1 ... Subject n Subject 1 ... Subject n
    • Hierarchical model estimation Subject 1 ... Subject n Group P( θ group |θ 1 , θ. , , θ n ) P(θ 1 |data, θ group ) ... P(θ n |data, θ group )
    • Hierarchical Bayesian estimation
        Pro
      • Adequately maps experimental structure onto model
      • Needs less data for individual subject estimation
      • Constraining of subject parameters (helps with extreme fits)
      • Estimation of full posterior, not just maximum
      • ...
        Contra
      • Computationally expensive (sampling, e.g. MCMC)
      • Correct model behavior can be hard to assess (e.g. chain convergence)
      • Methods still in development
      • Hierarchical Bayesian estimation (via PyMC) of parameters of the DDM in Python.
        • Ratcliff, Vandekerckhove, Tuerlinckx, Lee, Wagenmakers
      • Heavily optimized likelihood functions
        • Navarro & Fuss (2009) likelihood
        • Collapsed model for inter-trial variabilities
      • Flexible creation of complex models tailored to specific hypotheses (e.g. separate drift-rate parameters for different stimulus types).
      • Several convergence and goodness-of-fit diagnostics
      • Validated : integrated tests check if parameters from simulated data can be recovered
      HDDM
    • ...it works!
    • How to get your data into HDDM response, rt, subj_idx, difficulty 1, 1.06, 1, hard 1, 1.052, 1, hard 1, 1.398, 1, hard 0, 0.48, 1, easy 1, 1.798, 1, easy 1, 0.94, 1, easy 1, 2.093, 2, hard 1, 0.91, 2, hard 0, 1.019, 2, hard ...
    • Model specification via configuration file [depends] v = difficulty [mcmc] samples=5000 burn=1000
    • Model fitting $> hddmfit simple_difficulty.conf simple_difficulty.csv Creating model... Sampling: 100% [0000000000000000000000000000000000] Iterations: 5000 name mean std 2.5q 25q 50q 75q 97.5 mc_err a : 2.029 0.034 1.953 2.009 2.028 2.049 2.090 0.002 t : 0.297 0.007 0.282 0.292 0.297 0.302 0.311 0.001 v('easy',): 0.992 0.051 0.902 0.953 0.987 1.028 1.102 0.003 v('hard',): 0.522 0.049 0.429 0.485 0.514 0.561 0.612 0.002 logp: -1171.276303 DIC: 2329.069932 DIC without separate drift rates: 2373.395603
    • Output statistics hard condition easy condition Error responses mirrored along y-axis.
    • Output statistics II
    • Python model creation import hddm # Load data from csv file into a NumPy structured array data = hddm.load_csv('simple_subj_data.csv') # Create a HDDM model multi object model = hddm.HDDM(data, depends_on={'v':'difficulty'}) # Create model and start MCMC sampling model.sample(5000, burn=2000) # Print fitted parameters and other model statistics model.print_stats() # Plot posterior distributions and theoretical RT distributions hddm.plot_posteriors(model) hddm.plot_post_pred(model)
    • Trial-by-trial random effects Cavanagh, Wiecki et al (submitted)
    • Upcoming features
      • GPU optimized likelihood (~5x speed-up)
      • Contaminant model
      • Linear Ballistic Accumulator Model
      • Switch-task model
      Note to developers: it is very easy to add your own models to this framework!
    • http://github.com/hddm-devs/hddm