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

Subtract data in one cell from another

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

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

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

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

  • match (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 (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)