Three-parameter mixture model
Continuous reproduction: responses centred on the target, on a non-target, or guesses
p_nt equally, so each gets p_nt / (set size − 1): with more items each swap peak is lower, and together they keep p_nt. At the start, with p_nt = 0.33, going from set size 4 to 8 lowers each non-target's share from 0.11 to 0.05.Set size and the non-targets' colours enter the density as the number and the places of the non-target peaks. They do not change how much weight the non-targets get together.
kappa. Guessing gets what p_mem and p_nt leave: at the start, 1 − 0.33 − 0.33 = 0.34. bmm's formulas call it thetat and turn it into a weight with a softmax in which guessing is the reference.p_nt = 0.33 at set size 4 gives each of the 3 non-targets 0.11. bmm's formulas call it thetant.kappa from 7.39 to 20.1 lifts the density at the target from 0.41 to 0.64 per radian, while the weights stay put: 0.33 for the target, 0.11 for each non-target, 0.34 for guessing.What the model says
The three-parameter mixture model (Bays et al., 2009), as implemented in the R package bmm, adds one kind of response to the two-parameter mixture: reporting a non-target item instead of the target, a swap error. On a fraction p_mem of the trials the participant recalls the target, on a fraction p_nt reports one of the \(n - 1\) non-targets, each equally often, and on the remaining trials guesses. All memory responses, to the target or to a non-target, share the precision kappa. A response to a non-target is centred on that item’s colour \(\mu_j\), measured from the target’s colour, so the response error \(x\) follows (index 1 is the target, \(\text{vM}(x;\, \mu, \kappa)\) the von Mises density with mean direction \(\mu\) and precision \(\kappa\)):
\[ f(x) = p_\text{mem}\,\text{vM}(x;\, 0,\, \kappa) + \frac{p_\text{nt}}{n - 1} \sum_{j=2}^{n} \text{vM}(x;\, \mu_j,\, \kappa) + \frac{1 - p_\text{mem} - p_\text{nt}}{2\pi} \]
The three weights are probabilities of exclusive kinds of response, so \(p_\text{mem} + p_\text{nt}
\le 1\) and guessing gets what remains. The page keeps the two sliders inside that limit: each slider’s upper end is 1 minus the other value. In bmm’s model formulas p_mem is called thetat and p_nt thetant, and bmm does not estimate the probabilities directly: it estimates thetat and thetant and turns them into weights with a softmax in which guessing is the reference with the value 0, so \(p_\text{mem} = e^{\theta_t} / (1 + e^{\theta_t} + e^{\theta_{nt}})\), \(p_\text{nt} = e^{\theta_{nt}} / (1 + e^{\theta_t} + e^{\theta_{nt}})\) and the guessing weight is \(1 / (1 + e^{\theta_t} + e^{\theta_{nt}})\). This page uses the probabilities, the argument names of dmixture3p().
The task
One trial is a colour reproduction with several items. The participant sees \(n\) coloured items, one is cued, and the participant chooses its colour on the wheel. The model needs the response error and the colour of every non-target relative to the target, both in radians. The wheel shows the target at the top and the non-targets at their colours. Drag a dot to move a colour, or click it and use the arrow keys; Even colours spreads them evenly around the wheel again, as does a new set size. The locations of the items and their distances from the cued item do not enter the model; that is the difference to the interference measurement model (IMM), which uses them.
Explore
The density has a peak at the target (blue) and one at each non-target’s colour (orange), on the flat floor of guesses (grey). Move p_nt and watch weight shift between the non-target peaks and the floor or the target peak, move kappa and all peaks get narrower together, and drag a colour to move its peak. The bars under the density show the weights: M for memory (the target), numbers for the non-targets, G for guessing.
kappa has bmm’s normal(2, 1) prior on the log scale; its slider spans the prior mean ± 3 SD in log units, and the number field shows \(e^{-1} = 0.37\) to \(e^{5} = 148\). p_mem and p_nt run from 0 to 1 with the limit above, which the sliders keep as you move them: each stops where the other leaves no room. The starting values, kept by the dashed curve and the “start” bars, are p_mem = p_nt = 0.33 and kappa = \(e^{2} = 7.39\): with thetat and thetant at 0, the medians of bmm’s logistic(0, 1) priors, the three weights are 1/3 each, which the sliders’ step of 0.01 rounds to 0.33, so guessing starts at 0.34. Typed values outside the sliders’ ranges are used as long as they are valid. Reset returns everything to the starting values.
Across task settings
Set size enters the likelihood of mixture3p as the number of non-target peaks, and the non-targets’ colours set where those peaks sit. The non-targets share p_nt equally: one of the \(n - 1\) non-targets gets \(p_\text{nt} / (n - 1)\) (bmm adds \(\log(1 / (n - 1))\) to thetant for each non-target), so a larger set size gives more non-target peaks, each lower than before, while all of them together keep p_nt, as the target keeps p_mem and guessing the rest. Set size 1, which mixture3p() accepts, has no non-target: bmm sets every non-target term to \(-100\), the softmax renormalises, and p_nt is split between the target and guessing in proportion to their own weights (at thetat = thetant = 0, 0.5 each instead of a third each). The set-size control on this page runs from 2 to 8. The Across set size panel draws the weights against set size.
Set size 1 aside, kappa and the three weights (p_mem for the target, p_nt for all non-targets together, and guessing) are set by the parameters alone, whatever the number of items on the display. Set size can change them only if the parameters differ between the conditions of an experiment, for example between set sizes. In bmm that is a formula such as thetat ~ 0 + set_size with set_size coded as a factor (a factor column in the data, or factor(set_size) in the formula): 0 + drops the intercept, so every set size gets its own value of the parameter (formula syntax). A numeric set_size in the same formula estimates a single slope for set size instead, which without the intercept runs through the origin. What the model then predicts at each set size is whatever the estimated values say: how the parameters differ between set sizes comes from the data, and the model makes no prediction about it. No slider on this page makes a parameter depend on set size for that reason. The interference measurement model (IMM) is the contrast, as the Across set size panel on that page shows: every item on the display adds its own activation \(c\,e^{-s d_i} + a\) to the sum that each weight is divided by, so with the parameters fixed the target’s weight falls with set size, unless a = 0 and s is so large that the non-targets’ activations vanish.
In bmm
The code updates with the controls. dmixture3p() returns the density for one trial; mu holds the colours in radians, the target first. mixture3p() defines the model for a data set in which each row is a trial: resp_error is the response error, nt_features names the columns with the non-targets’ colours, and set_size is the number of items on the display. bmf() writes the formula and bmm() estimates the parameters; my_data stands for your own data, and fitting runs Stan through brms. In the formula bmm calls p_mem thetat and p_nt thetant. See the mixture models article and the reference pages for mixture3p() and dmixture3p().