# Does a P300 decoder calibrated on a screen still work in VR?

Context transfer · P300 on a screen and in VR

21 people used the same P300 interface on a PC screen and in a virtual-reality headset, calibrated on one display and tested on the other.

- [Reviewed aggregate JSON ↓](https://bci.report/data/context-update.json)
- 

Measured on: [Cattan PC/VR P300 dataset](https://bci.report/datasets/vr-pc-p300/); [LTRSVP · EEG Signals from an RSVP Task](https://bci.report/datasets/ltrsvp/)

## Short answer

It scores above chance after the switch. Across **21** people, each calibrated on a PC screen and tested in a VR headset and also the other way round, a simple logistic regression averaged **66.0%** balanced accuracy over the two directions (95% interval **61.6%–70.2%**; chance **50%**), with stimulus-onset timing corrected. The protocol did not also test each person on the display they were calibrated on, so the cost of the switch is unmeasured.

**The level after a display change, 21 people.** Each person was calibrated on one display and tested on the other, in both directions, averaged within the person. Balanced accuracy, onset-corrected timing. Dot: mean over people; line: participant-bootstrap 95% interval; dashed line: chance, 50%.

- Mean-window logistic regression: 66.0% (61.6%–70.2%)
- Spatiotemporal shrinkage LDA: 63.6% (59.6%–67.7%)

**66.0%** Balanced accuracy after the display change, 21 people

### Above chance after the display change

Interval 61.6%–70.2%; AUROC 0.732.

Two fixed baselines

## Calibrated on one display, tested on the other

Target against non-target epochs, 5 non-targets to every target, so accuracy would reward always answering “non-target”; balanced accuracy and AUROC do not. Primary timing.

Mean over 21 people of each person’s average of the two transfer directions, with participant-bootstrap 95% intervals.

| Baseline | Balanced accuracy | AUROC |
| --- | --- | --- |
| Mean-window logistic regression | 66.0% (61.6%–70.2%) | 0.732 (0.671–0.785) |
| Spatiotemporal shrinkage LDA | 63.6% (59.6%–67.7%) | 0.713 (0.652–0.771) |

Prespecified sensitivity

## With and without the onset correction

The headset and the screen report stimulus onset with different delays. The primary analysis shifts each epoch by the source-reported offset — 19 samples on the PC and 60 in VR, at 512 Hz. The sensitivity analysis leaves epochs at the recorded tag.

Balanced accuracy under each timing scheme, with participant-bootstrap 95% intervals.

| Baseline | Onset corrected (primary) | At the recorded tag |
| --- | --- | --- |
| Mean-window logistic regression | 66.0% (61.6%–70.2%) | 63.8% (61.0%–66.5%) |
| Spatiotemporal shrinkage LDA | 63.6% (59.6%–67.7%) | 57.2% (55.1%–59.4%) |

Spatiotemporal shrinkage LDA depends on timing most: 63.6% with the correction, 57.2% without.

What the scores are computed on

## Twenty-one people, one recording on each display

Every label comes from the source. One malformed row after the last epoch of one recording was discarded.

People

21

each recorded once on each display

Labelled events

30,240

1 target to 5 non-targets

Epochs kept, primary timing

30,101

139 rejected at 500 µV peak to peak

Another presentation change · image rate

## Trained at 5 images a second, tested at 10: does a P300 decoder carry over?

In LTRSVP, a separate dataset scored with a different decoder, 9 people watched aerial images flash past at 5, 6 and 10 a second and looked for the ones with an airplane, recording twice at each rate. A fixed logistic regression is trained on one recording at one rate (run a) and tested on a different recording of the same person (run b), at the same rate or another; within a rate, run b followed run a after a long break. Both arms below are tested on the same 10-Hz images: 223 targets and 2,036 non-targets across the 9 people.

Trained at 5 Hz, run a → tested at 10 Hz, run b

60.8%

AUROC 0.673 (0.617–0.732)

— 95% interval 56.5%–65.8%

Trained at 10 Hz, run a → tested at 10 Hz, run b

63.0%

AUROC 0.695 (0.630–0.753)

— 95% interval 57.7%–68.0%

**−2.2 pp** Trained at 5 Hz minus trained at 10 Hz, same 10-Hz test images, 9 people

### Slightly lower on average — and the interval crosses zero

Paired interval −6.8 to +2.8 pp: it crosses zero, so no change is established. 7 of 9 people had a lower point estimate and 2 a higher one. AUROC moved by −0.022 (interval −0.060 to +0.014), which also crosses zero.

Participant-mean balanced accuracy for each training rate (rows, run a) and test rate (columns, run b), 9 people, with participant-bootstrap 95% intervals. Chance is 50%.

| Training recording | Tested at 5 Hz — 338 targets / 3,069 non-targets | Tested at 6 Hz — 296 targets / 2,664 non-targets | Tested at 10 Hz — 223 targets / 2,036 non-targets |
| --- | --- | --- | --- |
| Trained at 5 Hz | 73.6% (65.8%–80.8%) | 70.7% (64.5%–76.7%) | 60.8% (56.5%–65.8%) |
| Trained at 6 Hz | 74.9% (68.5%–80.9%) | 71.4% (64.3%–78.1%) | 60.6% (57.4%–64.3%) |
| Trained at 10 Hz | 67.5% (59.9%–75.2%) | 69.8% (61.9%–77.2%) | 63.0% (57.7%–68.0%) |

Every cell in a column is tested on the same images, whatever the training rate. On the diagonal the test recording is the same-rate run b, after a long break; off it, the rate also changes, and so does how far apart in the session the two recordings were. The nine cells reuse the same people and the same three training recordings of each.

### Limits of the image-rate comparison

### Rate and recording are confounded

Training at another rate also means training on another recording, with another number of images and another target balance. A difference here is not a causal effect of image rate.

### Ascending presentation order

The original publication reports that the rates were presented from the lowest to the highest, in an order not randomised across participants. Within a rate, run b is the later recording, after a long break; how the two files of each rate map onto the ascending sequence is not documented on PhysioNet. So a cross-rate cell also differs in elapsed time, fatigue and practice.

### 9 people

The 8,626 test images and 81 person-by-cell evaluations all come from these 9 people, and the intervals are bootstrapped over people. 2 of the release's 11 people lack both recordings at one rate and were excluded from file metadata before scoring.

### Overlapping responses, offline

At these rates one image’s baseline and response windows also contain its neighbours’ responses. All results are offline, from a fixed decoder.

### LTRSVP · EEG Signals from an RSVP Task

Ana Matran (University of Essex) · EEG Signals from an RSVP Task 1.0.0, PhysioNet (2017), doi:10.13026/C2KX0P. Original publication: Ana Matran-Fernandez and Riccardo Poli, Towards the automated localisation of targets in rapid image-sifting by collaborative brain-computer interfaces, PLoS ONE 12(5): e0178498 (2017), doi:10.1371/journal.pone.0178498. PhysioNet platform: Pollard et al. (2026), doi:10.1038/s44360-026-00096-z.

The original publication states that the study was approved by the Ethics Committee of the University of Essex and that every participant gave written consent before the experiment. Only cohort aggregates appear here, not the ages, sexes or handedness the paper reports.

[PhysioNet record ↗](https://physionet.org/content/ltrsvp/1.0.0/) · [Original publication ↗](https://doi.org/10.1371/journal.pone.0178498) · [Open Data Commons Attribution License 1.0](https://opendatacommons.org/licenses/by/1-0/)

Data source: [extension-update.json](https://bci.report/data/extension-update.json) · schema bci-report-extension-update-v1.

Methods & limits

## Limits of the display-transfer result

### No same-display reference

Nobody was tested on the display they were calibrated on.

### Within one person, on one day

Each person supplies both their calibration and their test data, on the same day.

### Simple baselines only

Two simple CPU classifiers with no tuning; no foundation model or fine-tuned model was run.

### Event-to-event jitter

The correction shifts epochs by the mean onset delay; jitter around that mean, which a headset can add, remains.

### Cattan PC/VR P300 · a BCI experiment in virtual reality and on a personal computer

Grégoire Cattan, Anton Andreev, Pedro L. C. Rodrigues and Marco Congedo · Dataset of an EEG-based BCI experiment in Virtual Reality and on a Personal Computer, Zenodo, doi:10.5281/zenodo.2605205; documentation arXiv:1903.11297.

All participants gave written informed consent covering the experimental process, the data management procedures and the right to withdraw at any moment; the study was approved by the ethics committee of the University of Grenoble Alpes (CERNI). Only cohort aggregates appear here.

[Zenodo record ↗](https://doi.org/10.5281/zenodo.2605205) · [Dataset documentation ↗](https://arxiv.org/abs/1903.11297) · [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/)

Data source: [reviewed aggregate JSON](https://bci.report/data/context-update.json) · schema bci-report-context-update-v1.

Keep exploring

Transfer

- [— Sensor transfer **Dry vs. wet electrodes**](https://bci.report/topics/dry-vs-wet/)
- [— Context transfer **Screen to VR**](https://bci.report/topics/screen-to-vr/)
- [— Montage **Fewer electrodes**](https://bci.report/topics/fewer-electrodes/)
- [— Motion robustness **On the move**](https://bci.report/topics/on-the-move/)
- [— Session transfer · same person **Later sessions**](https://bci.report/topics/later-sessions/)

Adapting models

- [— Calibration budget **How much calibration?**](https://bci.report/topics/calibration-budget/)
- [— Model adaptation **Which part to update?**](https://bci.report/topics/model-adaptation/)
- [— Representation controls **Does pretraining help?**](https://bci.report/topics/does-pretraining-help/)
- [— Shared encoder · route 2 **One model, several questions**](https://bci.report/topics/shared-encoder/)
- [— Questions in language · route 3 **Questions in language**](https://bci.report/topics/questions-in-language/)
- [— Route 3 follow-ups **New SSVEP frequencies**](https://bci.report/topics/new-ssvep-frequencies/)

Reliability & clinical

- [— Abstention · decision research **When not to act**](https://bci.report/topics/when-not-to-act/)
- [— Sleep staging · simple baselines **Sleep-stage balance**](https://bci.report/topics/sleep-staging/)
- [— Clinical research **Clinical groups**](https://bci.report/topics/clinical-groups/)
- [— Data quality and reproducibility **Checked end to end**](https://bci.report/topics/data-quality/)

Other signals & pilots

- [— Other signals · human and macaque **Beyond scalp EEG**](https://bci.report/topics/beyond-scalp-eeg/)
- [— Pilot studies · small cohorts **Pilot studies**](https://bci.report/topics/pilot-studies/)

[All questions and the transfer-coverage map →](https://bci.report/topics/)

## Cite this page

BCI Report (2026). *Does a P300 decoder calibrated on a screen still work in VR?* https://bci.report/topics/screen-to-vr/

Figures from releases [`extension-update-20261002`](https://bci.report/releases/#extension-update-20261002) (2026-10-02), [`context-update-20260927`](https://bci.report/releases/#context-update-20260927) (2026-09-27). Cite the upstream datasets as well: their credits are on this page.

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/topics/screen-to-vr/, generated from the published page. Figures are aggregate results; terms of use: https://bci.report/data-use/
