# TS+LR and MDM: results on public EEG datasets

Classical method

Riemannian classification works on the spatial covariance matrix of each EEG window, a point on the manifold of symmetric positive-definite matrices. Two decoders from Barachant, Bonnet, Congedo and Jutten (IEEE Transactions on Biomedical Engineering, 2012) are run here: the minimum distance to mean (MDM) classifier, which assigns a window to the class whose mean covariance is nearest in Riemannian distance, and tangent-space logistic regression (TS+LR), which maps covariances into the tangent space at a reference point and fits a logistic regression there. BCI Report runs both through pyRiemann with fixed settings and OAS covariance estimates, under the same participant-held-out protocols as the other methods; the settings follow the MOABB reference pipelines (TSLR.yml with max_iter raised, MDM.yml unchanged).

Measured on: [ds003810](https://bci.report/datasets/ds003810/); [EEGMAT](https://bci.report/datasets/eegmat/); [ds005342](https://bci.report/datasets/ds005342/) · Protocols: [Motor imagery & rest](https://bci.report/protocols/mi-rest/); [Arithmetic & rest](https://bci.report/protocols/arithmetic-rest/); [Idle & command](https://bci.report/protocols/idle/)

**Also known as** TS+LR · tangent space + logistic regression · tangent-space logistic regression · MDM · minimum distance to mean · Barachant et al. 2012

**Reference** [Barachant A, Bonnet S, Congedo M, Jutten C. Multiclass brain–computer interface classification by Riemannian geometry. IEEE Transactions on Biomedical Engineering 59(4):920–928, 2012. ↗](https://doi.org/10.1109/TBME.2011.2172210)

[Official code ↗](https://github.com/pyRiemann/pyRiemann) · Description sources [doi.org](https://doi.org/10.1109/TBME.2011.2172210) · [github.com](https://github.com/pyRiemann/pyRiemann) · [github.com](https://github.com/NeuroTechX/moabb)

## Published results

Compare figures within a group only: task, cohort, chance level and electrode layout can differ between groups. One row is above another only where their 95% intervals do not overlap.

### [ds003810](https://bci.report/datasets/ds003810/) · Core matrix · motor imagery & rest

Source page: [Core-matrix protocol: Motor imagery & rest](https://bci.report/protocols/mi-rest/) · Chance level 50.0% · [core-matrix-20261106-mi-rest.csv](https://bci.report/data/core-matrix-20261106-mi-rest.csv)

**Balanced accuracy, 2 configurations.** Dot: the estimate; line: 95% interval; dashed line, where drawn: chance level.

- TS+LR · OAS · 4–40 Hz: 58.9% (54.9%–63.9%)
- MDM · OAS · 4–40 Hz: 53.8% (50.8%–57.9%)

| Method | Condition | Metric | Value | People |
| --- | --- | --- | --- | --- |
| [TS+LR · OAS · 4–40 Hz](https://bci.report/methods/riemannian/) | Rest versus right-hand imagery | Balanced accuracy | 58.9% (54.9%–63.9%) — Primary row · one fixed configuration (MOABB-reference settings) | 10 |
| [MDM · OAS · 4–40 Hz](https://bci.report/methods/riemannian/) | Rest versus right-hand imagery | Balanced accuracy | 53.8% (50.8%–57.9%) — Secondary row · one fixed configuration (MOABB-reference settings) | 10 |

### [EEGMAT](https://bci.report/datasets/eegmat/) · Core matrix · arithmetic & rest

Source page: [Core-matrix protocol: Arithmetic & rest](https://bci.report/protocols/arithmetic-rest/) · Chance level 50.0% · [core-matrix-20261106-arithmetic-rest.csv](https://bci.report/data/core-matrix-20261106-arithmetic-rest.csv)

**Balanced accuracy, 2 configurations.** Dot: the estimate; line: 95% interval; dashed line, where drawn: chance level.

- TS+LR · OAS · 4–40 Hz: 65.5% (59.6%–71.8%)
- MDM · OAS · 4–40 Hz: 71.5% (65.5%–77.8%)

| Method | Condition | Metric | Value | People |
| --- | --- | --- | --- | --- |
| [TS+LR · OAS · 4–40 Hz](https://bci.report/methods/riemannian/) | Serial subtraction versus resting EEG | Balanced accuracy | 65.5% (59.6%–71.8%) — Primary row · one fixed configuration (MOABB-reference settings) | 36 |
| [MDM · OAS · 4–40 Hz](https://bci.report/methods/riemannian/) | Serial subtraction versus resting EEG | Balanced accuracy | 71.5% (65.5%–77.8%) — Secondary row · one fixed configuration (MOABB-reference settings) | 36 |

### [ds005342](https://bci.report/datasets/ds005342/) · Core matrix · idle & command

Source page: [Core-matrix protocol: Idle & command](https://bci.report/protocols/idle/) · [core-matrix-20261106-idle.csv](https://bci.report/data/core-matrix-20261106-idle.csv)

| Method | Condition | Metric | Value | People |
| --- | --- | --- | --- | --- |
| [TS+LR · OAS](https://bci.report/methods/riemannian/) | Seated motor imagery · cue-gated replay | Command detection ≤3 s | 35.0% — Summed test trials. Fixed calibration rule; 60 training trials and 30 calibration trials per participant. Four-person case study; cohort aggregates only, no subgroup or population claim. | 4 |
| [TS+LR · OAS](https://bci.report/methods/riemannian/) | Seated motor imagery · cue-gated replay | Idle false activation | 6.7% — Summed test trials. Fixed calibration rule; 60 training trials and 30 calibration trials per participant. Four-person case study; cohort aggregates only, no subgroup or population claim. | 4 |
| [MDM · OAS](https://bci.report/methods/riemannian/) | Seated motor imagery · cue-gated replay | Command detection ≤3 s | 35.0% — Summed test trials. Fixed calibration rule; 60 training trials and 30 calibration trials per participant. Four-person case study; cohort aggregates only, no subgroup or population claim. | 4 |
| [MDM · OAS](https://bci.report/methods/riemannian/) | Seated motor imagery · cue-gated replay | Idle false activation | 1.7% — Summed test trials. Fixed calibration rule; 60 training trials and 30 calibration trials per participant. Four-person case study; cohort aggregates only, no subgroup or population claim. | 4 |

[All methods →](https://bci.report/methods/) · [All datasets →](https://bci.report/datasets/)

Core matrix

## Core-matrix rows: recipe and paired differences

Release: [`core-matrix-update-20261106`](https://bci.report/releases/#core-matrix-update-20261106)

### How these rows were run

| Method | Recipe | MOABB reference pipeline | Implementation | Code licence |
| --- | --- | --- | --- | --- |
| TS+LR — Supervised fit | OAS · 4–40 Hz; OAS · idle-native windows | MOABB TSLR.yml, with max_iter raised to 5000 | pyRiemann 0.12 (wheel SHA-256 74a90b2ef0938c94fe9bf90b6506991fc19da55850aae5fdf992026b3845d43a) and scikit-learn | BSD-3-Clause |
| MDM — Supervised fit | OAS · 4–40 Hz; OAS · idle-native windows | MOABB MDM.yml, unchanged | pyRiemann 0.12 (wheel SHA-256 74a90b2ef0938c94fe9bf90b6506991fc19da55850aae5fdf992026b3845d43a) and scikit-learn | BSD-3-Clause |

One fixed configuration per method: library or MOABB-reference settings with the stated deviations. The 4–40 Hz band-pass (or demeaning plus 50 Hz decimation on the ERP protocols) is part of the recipe and is applied to each window on its own.

The EEGMAT signals were ICA-cleaned and may be rank-deficient; OAS shrinkage then dominates the low-variance directions of the covariances that TS+LR and MDM read.

### Sensitivity lines

The same methods with other input filtering, labelled; they are not matrix rows.

- **TS+LR · OAS · raw** · [Motor imagery & rest](https://bci.report/protocols/mi-rest/): 54.4% (51.1%–57.9%), macro F1 0.473, 10 people
- **TS+LR · OAS · 8–32 Hz** · [Motor imagery & rest](https://bci.report/protocols/mi-rest/): 60.1% (54.8%–65.6%), macro F1 0.530, 10 people
- **MDM · OAS · raw** · [Motor imagery & rest](https://bci.report/protocols/mi-rest/): 52.0% (50.5%–53.7%), macro F1 0.438, 10 people
- **MDM · OAS · 8–32 Hz** · [Motor imagery & rest](https://bci.report/protocols/mi-rest/): 56.0% (52.1%–60.6%), macro F1 0.460, 10 people
- **TS+LR · OAS · raw** · [Arithmetic & rest](https://bci.report/protocols/arithmetic-rest/): 63.1% (57.5%–68.7%), macro F1 0.580, 36 people
- **MDM · OAS · raw** · [Arithmetic & rest](https://bci.report/protocols/arithmetic-rest/): 70.7% (63.1%–78.2%), macro F1 0.667, 36 people

### Paired differences

Each difference is the mean over people of each person’s difference in balanced accuracy, in percentage points (pp), on the same windows and people.

Paired participant bootstrap (10,000 draws). The four contrasts against the Spectral ridge cells carry 98.75 % intervals (Bonferroni over four); the other contrasts carry nominal 95 % intervals with no familywise claim. 'Higher' or 'lower' means the interval lies wholly above or below zero; 'unresolved' means it includes zero.

Ten people: a percentile bootstrap over ten people tends to give intervals narrower than their nominal level.

### Primary contrasts: against the Spectral ridge cell

| Difference | Mean (pp) | 98.75% interval, Bonferroni-adjusted for four contrasts | 95% interval, unadjusted | Reading |
| --- | --- | --- | --- | --- |
| TS+LR − Spectral ridge — Motor imagery & rest — TS+LR · OAS · 4–40 Hz | +4.0 pp | −1.1 to 11.5 | −0.3 to 9.7 | unresolved |
| TS+LR − Spectral ridge — Arithmetic & rest — TS+LR · OAS · 4–40 Hz | +8.8 pp | 1.6 to 16.1 | 3.0 to 14.6 | higher |

### Against EEGNet

against the matrix's one-seed EEGNet cell; training variance not included

| Difference | Mean (pp) | nominal 95% interval | Reading |
| --- | --- | --- | --- |
| TS+LR − EEGNet — Motor imagery & rest — TS+LR · OAS · 4–40 Hz | −12.1 pp | −18.1 to −5.4 | lower |
| MDM − EEGNet — Motor imagery & rest — MDM · OAS · 4–40 Hz | −17.2 pp | −23.7 to −10.6 | lower |
| TS+LR − EEGNet — Arithmetic & rest — TS+LR · OAS · 4–40 Hz | −2.1 pp | −8.0 to 3.8 | unresolved |
| MDM − EEGNet — Arithmetic & rest — MDM · OAS · 4–40 Hz | +3.8 pp | −1.3 to 9.3 | unresolved |

### Secondary rows against the Spectral ridge cell

| Difference | Mean (pp) | nominal 95% interval | Reading |
| --- | --- | --- | --- |
| MDM − Spectral ridge — Motor imagery & rest — MDM · OAS · 4–40 Hz | −1.1 pp | −4.7 to 3.8 | unresolved |
| MDM − Spectral ridge — Arithmetic & rest — MDM · OAS · 4–40 Hz | +14.7 pp | 8.9 to 20.5 | higher |

### Against the CSP+LDA row

Show the table

| Difference | Mean (pp) | nominal 95% interval | Reading |
| --- | --- | --- | --- |
| TS+LR − CSP+LDA — Motor imagery & rest — TS+LR · OAS · 4–40 Hz | +11.8 pp | 7.9 to 16.8 | higher |
| TS+LR − CSP+LDA — Motor imagery & rest — TS+LR · OAS · raw | +7.3 pp | 3.8 to 11.6 | higher |
| TS+LR − CSP+LDA — Motor imagery & rest — TS+LR · OAS · 8–32 Hz | +13.0 pp | 7.8 to 18.6 | higher |
| MDM − CSP+LDA — Motor imagery & rest — MDM · OAS · 4–40 Hz | +6.8 pp | 3.3 to 10.8 | higher |
| MDM − CSP+LDA — Motor imagery & rest — MDM · OAS · raw | +4.9 pp | 1.3 to 9.2 | higher |
| MDM − CSP+LDA — Motor imagery & rest — MDM · OAS · 8–32 Hz | +8.9 pp | 4.6 to 13.7 | higher |

The CSP+LDA row reads the windows with no band-pass; the raw-arm lines read the same input.

### Against the frozen encoders LaBraM and CBraMod

| Difference | Mean (pp) | nominal 95% interval | Reading |
| --- | --- | --- | --- |
| TS+LR − LaBraM — Motor imagery & rest — TS+LR · OAS · 4–40 Hz | +5.4 pp | 0.3 to 11.3 | higher |
| TS+LR − CBraMod — Motor imagery & rest — TS+LR · OAS · 4–40 Hz | −4.0 pp | −8.4 to 0.9 | unresolved |
| TS+LR − LaBraM — Arithmetic & rest — TS+LR · OAS · 4–40 Hz | +0.9 pp | −4.6 to 6.6 | unresolved |
| TS+LR − CBraMod — Arithmetic & rest — TS+LR · OAS · 4–40 Hz | +3.2 pp | −1.5 to 8.0 | unresolved |

These pairs use the matrix's LaBraM and CBraMod rows (frozen encoder + ridge head) only.

### Recipe arms: the same method with other input filtering

Show the table

| Difference | Mean (pp) | nominal 95% interval | Reading |
| --- | --- | --- | --- |
| TS+LR · OAS · 4–40 Hz − TS+LR · OAS · raw — Motor imagery & rest | +4.5 pp | 0.6 to 7.9 | higher |
| MDM · OAS · 4–40 Hz − MDM · OAS · raw — Motor imagery & rest | +1.8 pp | −1.5 to 6.3 | unresolved |
| TS+LR · OAS · 4–40 Hz − TS+LR · OAS · 8–32 Hz — Motor imagery & rest | −1.2 pp | −6.0 to 2.6 | unresolved |
| MDM · OAS · 4–40 Hz − MDM · OAS · 8–32 Hz — Motor imagery & rest | −2.2 pp | −3.8 to −0.8 | lower |
| TS+LR · OAS · 4–40 Hz − TS+LR · OAS · raw — Arithmetic & rest | +2.4 pp | −3.0 to 8.1 | unresolved |
| MDM · OAS · 4–40 Hz − MDM · OAS · raw — Arithmetic & rest | +0.7 pp | −5.3 to 7.2 | unresolved |

### Within the family: primary row against secondary row

| Difference | Mean (pp) | nominal 95% interval | Reading |
| --- | --- | --- | --- |
| TS+LR − MDM — Motor imagery & rest — TS+LR · OAS · 4–40 Hz | +5.1 pp | 2.3 to 7.8 | higher |
| TS+LR − MDM — Arithmetic & rest — TS+LR · OAS · 4–40 Hz | −6.0 pp | −11.6 to −0.5 | lower |

### Credits

TS+LR and MDM: Barachant, Bonnet, Congedo and Jutten, IEEE TBME 2012 and Neurocomputing 2013; xDAWN: Rivet, Souloumiac, Attina and Gibert, IEEE TBME 2009; XDAWNCov: Barachant and Congedo 2014; OAS: Chen, Wiesel, Eldar and Hero, IEEE TSP 2010; Ledoit and Wolf 2004; MOABB reference pipelines (BSD-3-Clause), Jayaram and Barachant, J. Neural Eng. 2018, read for citation and not executed; pyRiemann 0.12 (BSD-3-Clause).

- Barachant, Bonnet, Congedo and Jutten. Multiclass brain–computer interface classification by Riemannian geometry. IEEE Transactions on Biomedical Engineering 59(4), 2012. [doi ↗](https://doi.org/10.1109/TBME.2011.2172210)
- Barachant, Bonnet, Congedo and Jutten. Classification of covariance matrices using a Riemannian-based kernel for BCI applications. Neurocomputing 112, 2013. [doi ↗](https://doi.org/10.1016/j.neucom.2012.12.039)
- Chen, Wiesel, Eldar and Hero. Shrinkage algorithms for MMSE covariance estimation. IEEE Transactions on Signal Processing 58(10), 2010. [doi ↗](https://doi.org/10.1109/TSP.2010.2053029)
- Jayaram and Barachant. MOABB: trustworthy algorithm benchmarking for BCIs. Journal of Neural Engineering 15(6), 2018. [doi ↗](https://doi.org/10.1088/1741-2552/aadea0)

## Cite this page

BCI Report (2026). *TS+LR and MDM: results on public EEG datasets*. https://bci.report/methods/riemannian/

Figures from releases [`core-matrix-update-20261106`](https://bci.report/releases/#core-matrix-update-20261106) (2026-11-06), [`research-preview-20260920`](https://bci.report/releases/#research-preview-20260920) (2026-09-20). Cite the upstream datasets as well: each dataset’s page gives its credit.

Every release is archived on Zenodo: [doi:10.5281/zenodo.23123296](https://doi.org/10.5281/zenodo.23123296). [BibTeX for the site and its releases →](https://bci.report/api/#cite-heading) · [CITATION.cff ↗](https://raw.githubusercontent.com/twu3202/bci-report/main/CITATION.cff)

---
Markdown copy of https://bci.report/methods/riemannian/, generated from the published page. Figures are aggregate results; terms of use: https://bci.report/data-use/
