API Reference

The GLAM class

class GLAM(data=None, name=None)

Bases: object

GLAM model instance that includes data, pymc3.model.Model instance, trace, parameter estimates, fit indices and predictions.

Parameters
  • data (pandas.DataFrame) –

    DataFrame containing the experimental data. Each row corresponds to one trial. Must include the following columns:

    • subject (int, consecutive, starting with 0)

    • trial (int, starting with 0)

    • choice (int, items should be 0, 1, …, N)

    • rt (float, in seconds)

    • additional variables coding groups or conditions (str or int)

    For each item i in the choice set:

    • item_value_i: The item value (float, best on a scale between 1 and 10)

    • gaze_i: The fraction of total trial time the item was looked at in the trial (float, between 0 and 1)

  • name (str) – A name for the model. Useful if multiple models are fitted and compared.

compute_waic()

Compute WAIC for all appended PyMC3 models.

Returns

Adds WAIC to GLAM model object.

Return type

None

exchange_data(new_data, verbose=True)

Exchange GLAM model data. Useful for out-of-sample predictions using fitted parameters.

Parameters
  • new_data (pandas.DataFrame) – new data to exchange old data with

  • verbose (bool, optional) – Toggle verbosity.

Returns

new_data replaces data attribute of GLAM model object

Return type

None

fit(method='MCMC', **kwargs)

Perform parameter estimation of the model.

Parameters

method (string ['MCMC', 'VI'], optional) – specifies fitting method to use, can be either ‘MCMC’ for MCMC-sampling or ‘VI’ for variational inference. Defaults to ‘MCMC’.

Returns

Adds trace and well as estimates to GLAM model object

Return type

None

make_model(kind='individual', depends_on={'gamma': None, 's': None, 't0': None, 'tau': None, 'v': None}, within_dependent=[], **kwargs)

Build the GLAM PyMC3 model, specifying model kind and dependencies.

Parameters
  • kind (str, optional) – should be one of [‘individual’, ‘hierarchical’, ‘pooled’], defaults to ‘individual’

  • depends_on (dict, optional) – dictionary specifying for each GLAM model parameter whether the parameter is dependent on any levels of the data e.g. {‘v’: ‘speed’}, here one v parameter is created for each level of the ‘speed’ factor in the response data (factor must be encoded in data)

  • within_dependent (list, optional) – list of parameter names (‘v’, ‘gamma’, ‘s’, ‘tau’) each included parameter is modeled as dependent within a subject (i.e., as drawn from the same meta-distribution) only, if parameter dependency-structure specified in depends_on

Returns

Adds PyMC3 model, depends_on, within_dependent and design to GLAM model object

Return type

None

predict(n_repeats=1, boundary=1.0, error_weight=0.05, verbose=True)

Predict choices and RTs for included data

Parameters
  • n_repeats (int, optional) – Number of repeats of each trial included in data during prediction Defaults to 1.

  • boundary (float, optional) – Magnitude of decision boundary. Defaults to 1.0

  • error_weight (float, optional) – float between [0, 1], defaults to 0.05 determining probability that choice and RT are drawn according to a unifrom error distribution (see manuscript)

  • verbose (bool, optional) – Toggle verbosity.

Returns

Adds predictions to GLAM model object

Return type

None

simulate_group(kind='hierarchical', n_individuals=10, n_trials=100, n_items=3, individual_idx=None, stimuli=None, parameters=None, error_weight=0.05, error_range=(0, 5), value_range=(0, 10), label=None, seed=None)

Simulate data from known parameters. Data is added to any existing attached dataframes, which allows blockwise simulation of multiple groups.

Parameters
  • kind (str, optional) – Should be one of [‘individual’, ‘hierarchical’, ‘pooled’], defaults to ‘hierarchical’

  • n_individuals (int, optional) – number of individuals to be added for this condition

  • n_trials (int, optional) – number of trials per individual

  • n_items (int, optional) – number of items per trial

  • individual_idx (array of ints, optional) – individual indices to use (for within individual design simulation) defaults to continuous participant numbering across conditions

  • stimuli (DataFrame, optional) – instead of simulating item_value and gaze data for the given number of individuals and trials, a DataFrame containing item_values, gaze_data and participant indices can be supplied. This overrides n_individuals and n_trials arguments.

  • parameters (dict, optional) –

    dict with keys: ‘v’, ‘gamma’, ‘s’, ‘t0’, ‘tau’ if kind is individual:

    values: arrays of length n_individual

    if kind is hierarchical:
    values: dicts with keys: mu, sd, bounds

    values: floats for mu, sd, tuple for bounds

  • error_weight (float, optional) – range: [0, 1], probability of simulating error trial with random choice and uniform RT

  • error_range (int tuple of length 2, optional) – range of error RTs

  • value_range (tuple of length 2, optional) – range of item value ratings to be simulated

  • label (str, optional) – condition label. defaults “to condition_n”

  • seed (int, optional) – np.random.seed(argument)

Returns

Adds data to GLAM model instance

Return type

None

The analysis and plots submodules