1. The task
Say I ask you to categorise a stimulus that varies on two dimensions, a face's expression (happy/sad) and sex (male/female). Across many trials we get a 4×4 confusion matrix that indicates which of the 4 stimuli was shown against which of the 4 responses was given.
2. The model
General Recognition Theory (GRT, Ashby & Townsend, 1986) says that because perception is noisy, each stimulus doesn't map to a single point in the mind, but instead maps to a bivariate normal distribution over a two-dimensional perceptual space. The two decision axes are lines through that space (GRIN fixes them at the origin, see decisional separability below). Your response as to which category you saw is determined by which side of each line your percept fell on.
That single picture, four ellipses and a pair of crossed lines, is the entire model. Everything else on this site is about estimating where the ellipses are located in space and how they're shaped from the responses alone. You can go build one of these spaces in the Space Builder page; it's faster to understand by dragging sliders than by reading all of this.
3. The two questions we typically ask with GRT
Perceptual separability. Does one dimension's perceived value depend on the level of the other dimension? If a face looks a little happier just because it's male, expression is not separable from sex, the ellipses shift sideways as you cross the other dimension.
Perceptual independence. On a single trial, does noise on one dimension travel with noise on the other? If an unusually happy-looking sample also tends to look unusually male, the dimensions are correlated on that trial and the ellipses tilt.
These are independent questions. A space can be separable but correlated, non-separable but uncorrelated, or any combination.
4. The confusion matrix
A 4×4 confusion matrix has 12 free numbers (4 rows, each summing to 1, so 3 free probabilities per row). GRIN's representation has exactly 12 identified parameters, 4 per-stimulus x-locations, 4 y-locations, 4 correlations. 12 parameters and 12 free numbers makes a single matrix enough to estimate the whole space (but we must pin the decision bounds to align with their axes). Traditionally this fit is done by numerical maximum likelihood, one optimiser run per participant per candidate model. GRIN replaces that optimiser with a network that we have trained offline on many simulated experiments so that inference becomes a single forward pass through that trained network. See Validate for how it holds up.
Identification task
The experimental design GRT (and GRIN) assumes: one stimulus per trial, varying on two binary dimensions, one response naming both levels. One response key per response option.
Perceptual separability (PS)
A dimension is separable from another if its marginal perceptual distribution doesn't shift with the other dimension's level. Failure of separability is a mean effect, it moves where an ellipse is centered.
Perceptual independence (PI)
Zero correlation between the two dimensions' perceptual noise, within a single stimulus. Failure of independence is a correlation effect, it tilts an ellipse. GRIN's model classes distinguish exact independence (PI), one shared correlation across all four stimuli (RHO1), and a fully free correlation per stimulus.
Decisional separability (DS)
The decision bound on one dimension doesn't depend on the perceived level of the other. GRIN assumes DS throughout, the crossed decision lines are always fixed at the origin, which is what makes the 12-parameter model exactly identified from one matrix. Relaxing DS is future scope, not present behaviour.
Model class
One specific combination of {independent / one shared ρ / free ρ} × {A separable or not} × {B separable or not}, 12 in total. "Fitting a model" in the classical sense means picking the best of these 12; GRIN instead returns continuous parameters plus the probability of each structural claim, so you aren't forced to pick one.
Systems Factorial Technology (SFT)
SFT carries the architecture side of the +RT model. We can ask if a two-dimensional decision is made serially or in parallel, and does it stop as soon as one dimension is settled (self-terminating) or wait for both (exhaustive)? Five architectures in total (the 4 serial/parallel × exhaustive/self-terminating combinations, plus coactive, where evidence for both dimensions pools into a single accumulator).
Simplified ballistic accumulator
The exploratory RT simulator gives each dimension a noisy drift rate and a ballistic finishing time, then combines the two times under five processing architectures. It is not a full Linear Ballistic Accumulator: the GRT sample determines the response, there is no random starting point, and response accumulators do not race within a dimension.
Amortised inference
Paying the cost of learning "how to invert this model" once, during training, so that every subsequent inference is just a forward pass, rather than solving a fresh optimisation for each dataset at analysis time.
Why not just always fit the free/free/free "ds" model and skip model selection?
You can, and GRIN's "MLE, full model" column on the Analyse page does exactly that, for comparison. But the constrained classes exist because separability and independence are the scientific questions usually being asked. Reporting only the unconstrained fit answers "what are the 12 numbers" without addressing "are the dimensions independent," which is normally the actual point of running a GRT study.
My data don't fit a 2×2 design. Can I still use this?
Not directly. GRIN is trained specifically on 2-dimension, 2-level identification designs. A 3-level or 3-dimension design has a different-shaped confusion matrix and a different parameter count, and the network has never seen it. The Analyse page rejects the wrong matrix shape, but that input check is not a general detector of model misspecification. A separate 3×3 estimator is now being explored, but it is not part of the released tool.
How is this different from just fitting a hierarchical Bayesian GRT model in Stan?
They are not automatically the same target. GRIN currently makes a separate, fixed-prior inference for each participant. A hierarchical Stan model estimates population and participant effects jointly and lets the data determine the amount of pooling. GRIN is much faster for the model and prior it was trained on; Stan is slower but can express different priors, hierarchies, and model extensions directly.
Amortised over a fixed prior
GRIN was trained on data simulated from a specific range of sensitivities, correlations, and trial counts (see the manifest shipped with each model). Analyse checks matrix shape, trial counts, accuracy, and RT units where it can. Those are useful input checks, not proof that a dataset falls inside the latent training distribution or that GRT generated it.
Decisional separability
The decision bounds are fixed at the origin in every model class GRIN fits. If your participants use response criteria that shift with the other dimension, GRIN will not detect that, it isn't in the model family.
2×2 identification designs only
Two dimensions, two levels each, one stimulus and one full response per trial. Not same-different tasks, not detection tasks, not larger factorial designs.
A model class winning at 0.4 is not a finding
GRIN reports a probability alongside every structural claim specifically so you don't have to pretend a narrow plurality is a confident conclusion. The Space Builder and Analyse pages both raise this directly.
The RT model adds assumptions
The +RT page is an exploratory proof of concept built around a simplified ballistic timing model. It does not implement the full LBA choice race, and the checkpoint is not distributed with the released packages. Its architecture and timing-parameter outputs should be read as demonstrations of this particular simulator, not as a validated general-purpose RT analysis.
- Ashby, F. G., & Townsend, J. T. (1986). Varieties of perceptual independence. Psychological Review, 93(2), 154–179.
- Townsend, J. T., & Nozawa, G. (1995). Spatio-temporal properties of elementary perception: An investigation of parallel, serial, and coactive theories. Journal of Mathematical Psychology, 39(4), 321–359.
- Townsend, J. T., Houpt, J. W., & Silbert, N. H. (2012). General recognition theory extended to include response times: Predictions for a class of parallel systems. Journal of Mathematical Psychology, 56(6), 476–494.
- Brown, S. D., & Heathcote, A. (2008). The simplest complete model of choice response time: Linear ballistic accumulation. Cognitive Psychology, 57(3), 153–178.
-
grtools(R) andmdsdt(R), the maximum-likelihood implementations GRIN is validated against.
Now do something with it
The tutorials are complete walkthroughs in Python and R: analysing data you already have, stopping a task when the estimate is precise enough, and steering stimulus levels into the range where your question is answerable.
Or try the live task — a short identification task with the model refitting after every response.