eelbrain.table.difference(y, x, c1, c0, match, sub=None, data=None)

Subtract data in one cell from another

  • y (Union[NDVar, Var, str, Sequence[Union[str, Var, NDVar]]]) – One or several variables for which to calculate the difference.

  • x (Union[Factor, Interaction, NestedEffect, str]) – Model for subtraction, providing categories to compute c1 - c0.

  • c1 (Union[str, Tuple[str, ...]]) – Name of the cell in x that forms the minuend.

  • c0 (Union[str, Tuple[str, ...]]) – Name of the cell in x that is to be subtracted from c1.

  • match (Union[Factor, Interaction, NestedEffect, str]) – Units over which measurements were repeated. c1 - c0 will be calculated separately for each level of match (e.g. "subject", or "subject % condition").

  • sub (Union[Var, ndarray, str]) – Only include a subset of the data.

  • data (Dataset) – If a Dataset is specified other arguments can be str instead of data-objects and will be retrieved from data.


Dataset with the difference between c1 and c0 on y.

Return type



ERP difference wave: assuming a dataset data with EEG data (data['eeg']), a variable named 'condition' with levels 'expected' and 'unexpected', and multiple subjects, the following will generate the unexpected - expected difference waves:

>>> diff = table.difference('eeg', 'condition', 'unexpected', 'expected',
... 'subject', data=data)

If data also contains a different factor crossed with condition, called 'word' with levels 'verb' abd 'adjective', then separate difference waves for verbs and adjectives can be computed with:

>>> diff = table.difference('eeg', 'condition', 'unexpected', 'expected',
... 'subject % word', data=data)

Given the latter, the difference of the difference waves could be computed with:

>>> diffdiff = table.difference('eeg', 'word', 'verb', 'adjective',
... 'subject', data=diff)