A technique for detecting affective states from electroencephalography (EEG) signals is proposed. The technique was tested in an experiment in virtual reality. Data was analysed using Matlab, R and Python.
Two variants of the technique are compared. The difference between both variants is the method used for feature selection. Those methods are Linear Mixed-Effects (LME) and Recursive Feature Elimination with Cross Validation (RFECV). Given that RFECV is a well-established feature selection method, it is useful as a benchmark to evaluate the performance of the LME approach proposed here. At the same time, given that LME models are able to capture variations across time, they can be used as a benchmark to evaluate the performance of RFECV when applied to time series analysis.
Read the paper here: https://www.frontiersin.org/articles/10.3389/frvir.2022.964754/full
- Install R (https://cran.r-project.org/)
- Clone this repository:
git clone [email protected]:aepinilla/affect_detection.git
- Download the 'data.zip' file from the OSF repository of the study: https://osf.io/7v9kt/
- Unzip data.zip and place it at the root of the folder you just cloned.
- Using the terminal, go to the root of the 'affect_detection' folder and run the following command:
python main.py
The 'data' folder contains data that has been already preprocessed. To replicate the preprocessing steps, follow these instructions:
- Install Matlab.
- Install EEGLAB following these instructions: https://eeglab.org/tutorials/01_Install/Install.html
- Transform XDF files to CSV for faster processing:
python xdf_to_csv.py
- Open EEGLAB in Matlab and run the preprocessing script located at affect_detection/src/preprocessing.m
All files generated by main.py will be stored in the 'reports' folder. In a MacBook Pro, it took several hours to run the program. If you want to skip that, download the 'reports.zip' file available in the OSF repository: https://osf.io/7v9kt/