Quantified Self Experiments / QS - OpenBCI as home sleep lab - how much EOG adds to EEG?


I'm using OpenBCI as my primary sleep tracker starting from end of Dec 2023, after i was unsatisfied with Hypnodyne ZMax electrodes quality. Research / Medical grade polysomnography usually utilize multiple channels of biological signals:

Hypnograms often scored by sleep specialists and there are set of rules (AASM etc) which require EEG, EOG and chin EMG, Body Movements. But do we really need all of them? There are some papers which explored this question and it seems that we can reduce signals to get good enough hypnograms. In this study single channel frontal EEG resulted in kappa=0.67 compared to PSG which doesnt looks well. But we already know that Hypnodyne ZMax have far better agreement against PSG according to this study and my own experimental data in align with study. According to YASA paper, the most important features to reach good agreement were EEG and EOG, but EMG have a little impact. So from here we can see that we might not need chin EMG (which is used to score REM) at all and most of information for scoring sleep is in EEG and EOG signals. EOG is mostly used for scoring REM, so I do not expect a lot of added value for scoring NREM sleep from EOG signal.

According to my data EOG and frontal EEG channels contain a lot of similar activity! Almost all eye movements present in my F7 - T4 and F8 - T3 channels and i see a lot of SWS activity in EOG channels. There a papers which utilized EOG only for scoring sleep and results are not bad at all. Some data points that single channel EEG is not enough for high quality REM detection but may be still in acceptable accuracy range, especially for analyzing trends. Multi-channel EEG approach which include frontal areas might improve accuracy even more, allowing to achieve good accuracy without EOG.

I've slept ~4 weeks with 5 channel-EEG, EOG and ECG and here i'm going to compare EEG only against EEG + EOG agreement.


I'm using OpenBCI Cyton to collect F7-T3, F8-T3, T4-T3, O1-T3, O2-T3 (10-20 system; EEG bias is at Fpz) and EOG channels. Ten-20 conductive paste with gold-cup electrodes were used for each channel. EOG channels were placed as described at Frederik Weber OpenBCI guide at EOG1 and EOG2 positions (bipolar).

OpenBCI Cyton were setup to record with 500Hz sampling rate to microSD card. EEG electrodes were covered with a DIY velcro headband and EOG1 electrode was fixed at position using medical silicone tape.

Since reference (T3) is on the left size, electrodes from left hemisphere (F7 and O1) were re-referenced to T4. For each deviation (F7-T4, O1-T4, F8-T3, O2-T3, T4-T3) hypnograms without and with EOG were build by using YASA. 50Hz notch and 0.1-40Hz bandpass filters were applied for each channel before scoring sleep by YASA.

Visual Analysis

Here i start from looking at both EOG and non-EOG hypnograms for each deviation for a few nights.

White lower one is hypnogram without using EOG data and upper cyan were based on both EEG and EOG passed to YASA. Looking here i cant actually see a lot of difference. The first REM segment was just a bit different, but non significant to me. Awake, Deep and Light doesnt differ too much.

Left frontal channel (F7) shows similar results. I can notice slight difference in awake/light at 2nd deep sleep segment and more fragmented REM at 6:00 but that doesnt make a big difference.

Left occipital channel was not able to detect first short REM segment without EOG. Similarly EOG data just a bit more fragmented at the end of the night, but still in good agreement.

Almost similar results for right occipital channel. First REM were missed.

Lastly T4-T3 channel deals pretty well with rem detection. I can see only a slight difference and first short REM were succesfully detected. Lets look at confusion matrices for that night for each channel.

Lets summarize this night:

Lets look at one more night

I dont see a reason to comment here at all, everything agree pretty well. Lets look at confusion matrices for this night.

The agreement is pretty fine for N3, N2, REM and Awake. I'm not going to bother reader with more nights because of similar graphs, the performance is pretty stable. Lets look at summarized confusion matrices for all nights.

Summary Results

Overall, i dont see too much of added value from EOG channel. Frontal and Temporal channels agree pretty well with EOG, occipital have less agreement on REM thus maybe not optimal for REM detection which confirmed by missed first short REM segments.

Even single channel approach with T3-T4 channels seems do not improve that much with added EOG so i'm still confident that just 3 electrodes (T4, T3 as ref, Fpz as ground) is a good enough for getting good sleep representation, at least in my case.

Overall, I might not need to do EOG at all or just do it less often, for example once a week. Even with EOG I able to achieve montage speed of 2.5 minutes and it takes about a minute to start a session, so my setup takes less than 4 minutes every evening, without EOG i might be in a 3 minute - 3.5 minute range.

This is n=1 so you shouldnt expect this will stand for a wider population.


R Script with analysis isĀ published on github. Comment / correct me if i did something wrong :)