Simulation only. No human participants have been recruited or run. Every figure on this site is computed from synthetic observers with known ground truth, and says so.

Simulation lab

Pick a synthetic observer, give it a history effect — or a confound with no history effect at all — and watch what the analysis reports.

Start with central tendency only. That observer has no memory of the previous trial as such; it drifts toward the average of the last twenty orientations. The binned curve still rises through the middle, and the naive estimate — a tuning curve on the previous stimulus alone — comes out positive. The adjusted estimate, which also models the running mean and the previous response, falls back toward zero. Then switch to response history only and see which parameter absorbs it.

0.0°true stimulus-history amplitude
1.12°naive estimate (DoG only)
-0.02°adjusted estimate (+ response history, running mean)

SIMULATED DATA · in-browser, simplified estimator

  • binned responses
  • true tuning
  • naive fit
  • adjusted fit
−202−90−60−300306090previous − current stimulus orientation (°)response error (°)

What this lab is not: the pipeline. It simulates the same generative observer as src/timemind/observers.py, but estimates by least squares with the tuning width fixed at a 22° peak and large errors trimmed, where the pipeline uses maximum likelihood with a free width, a wrapped-normal noise model and an explicit lapse term, fitted per observer and tested at the group level. The lab shows one observer at a time, so expect its estimates to be noisy. Every reported number on this site comes from the pipeline, not from here.