So filtern Sie Rauschen in EEG-Daten

Ich bin Informatikstudent und mache etwas für einen Psychologieprofessor.

Wir haben EEG-Daten von einem Experiment, bei dem einer Person 140 Bilder für jeweils 2 Sekunden gezeigt wurden. Wir haben 64 Elektroden auf der Kopfhaut platziert, sodass wir 64 Kanäle mit kontinuierlichen Daten haben.

Wir möchten jeden Knoten mit jedem anderen Knoten korrelieren, damit wir ihn mithilfe eines Akkorddiagramms grafisch darstellen können .

Da mein Professor im Ausland ist, habe ich Probleme mit den Anweisungen, die er mir gegeben hat, um die Daten zu manipulieren, um die Korrelationen zu erhalten.

"Sobald Sie in der Lage sind, die Kanalmatrix zu lesen, schlage ich vor, das mittlere Signal von jedem zu subtrahieren und zu filtern, um Rauschen über 30 Hz zu entfernen."

Meine Frage ist, wie man das Rauschen über 30 Hz entfernt? Beispielsweise sehen Daten für 1 Elektrode für 10 Millisekunden so aus (gemessen in uV):

[ 31172.50, 31173.53, 31174.80, 31177.34, 31173.73,
  31172.85, 31172.75, 31172.70, 31174.95, 31178.95]

Das von mir verwendete Python-Skript gibt auch diese Daten aus:

sampling rate: 1000.0 Hz
time: 0.0 s to 1883.15 s

Kann mir jemand in die richtige Richtung weisen, welche Schritte zu unternehmen sind, um Rauschen über 30 Hz zu entfernen? Und ist das auch ein guter Weg, um die Korrelationen zwischen den Elektroden zu berechnen?

Antworten (2)

Das Entfernen von Rauschen kann auf verschiedene Arten erfolgen:

Herkömmliche Filter : Sie könnten einen digitalen Tiefpassfilter erstellen, z. B. einen Chebyshev- oder Butterworth-Filter mit einer Grenzfrequenz bei 30 Hz ( Filt- oder Filtfilt- Funktion in Matlab).

FFT-basierte Filterung : FIR-Filter entfernen Frequenzen im Frequenzbereich. Also wird zuerst eine Fourier-Transformation durchgeführt und dann können die Frequenzen >30 Hz aus dem Signal entfernt werden, indem einfach den FFT-Koeffizienten bei >30 Hz eine '0' zugewiesen wird. Eine umgekehrte FFT bringt dann Ihr Signal zurück ( fftfilt in Matlab).

Wavelet-Transformationen : Da es sich um eine relativ komplexe und leistungshungrige Methode handelt, ist dies möglicherweise nicht die Methode, nach der Sie suchen. Es kann jedoch effizienter sein, bestimmte Arten von Rauschen zu entfernen oder bestimmte Merkmale aus einem Signal zu extrahieren ( cwt- oder dwt - Funktionen in Matlab).

Mit Python kenne ich mich nicht aus. Das Auffinden der entsprechenden Filter in Python sollte ziemlich einfach sein. Es gibt noch mehr Filterverfahren, aber die oben genannten sollten Sie in Gang bringen.

Die Korrelationsanalyse kann mit verschiedenen Methoden durchgeführt werden, einschließlich Pearson-Produkt-Moment-Korrelation , Spearman-Rangordnungskorrelation , Kendall-Rangordnungskorrelation und gegenseitiger Information . Siehe Bonita et al., 2014, DOI: 10.1007/s11571-013-9267-8 .

Das Subtrahieren des mittleren Signals von einem bestimmten Kanal reduziert im Wesentlichen den Signalversatz (das DC-Signal), vergleichbar mit einem Hochpassfilter mit einer sehr niedrigen Grenzfrequenz.

Für die Berechnung von Korrelationen verstehe ich nicht, warum ich "das mittlere Signal von jedem subtrahieren muss", kann ich die Daten nicht einfach korrelieren, nachdem ich das Rauschen gefiltert habe?
Ich weiß nicht, was das "mittlere Signal" bedeutet: der Mittelwert verschiedener Post-Stimulus-EEGs? Oder der Mittelwert über verschiedene Kanäle? Ihre Frage enthält nicht genügend Informationen, um dies zu beantworten.
Ja, das ist alles, was der Professor mir gegeben hat, sobald ich mich mit ihm in Verbindung setze und er diesen Teil erklärt, werde ich zurückkommen, um ihn hier zu posten. Wahrscheinlich nächste Woche. Vielen Dank
Es ist nicht ungewöhnlich, den Mittelwert eines Kanals über die gesamte Aufzeichnung zu ermitteln und ihn dann herauszuziehen.
Ich konnte endlich mit dem Professor sprechen, er sagte in meinem Fall: Da wir 64 Elektroden haben, müssen wir 64 mittlere Signale bekommen. Dann werde ich zum Beispiel das mittlere Signal für Elektrode 1 von dem Signal bei jedem Zeitstempel in Elektrode 1 subtrahieren. Und mache es für jeden. Ich werde die endgültigen Ergebnisse unseres Akkorddiagramms hier posten, wenn ich fertig bin.
Auf der Fourier-Transformation basierende Finite-Impulse-Response-Filter sind nur eine Klasse von FIR-Filtern. Filter sind knifflig, verfälschen Ihr Signal und werden oft schlecht verstanden. Ich würde vorschlagen, Steve Lucks Kapitel über Filter zu lesen, bevor Sie fortfahren. Der grundlegendste FIR-Filter (der auch sehr einfach zu verstehen ist) zum Entfernen von 50/60-Hz-Leitungsrauschen (wenn dies Ihr Ziel wäre) wäre ein Boxcar-Filter.

Die üblichen Schritte sind: - Rohsignal (nach Vorverstärker und Verstärkung) - Bandpassfilter - Bandunterdrückung/Notch-Filter (Cutoff hängt davon ab, wo Sie sich befinden) - Anti-Aliasing-Filter - Sample/Hold - MUX (falls vorhanden mehrere Kanäle) - ADC - Digitales Signal

Wie AliceD erwähnt, können Sie FFT-basierte Filter und WT als Filter verwenden. Für WT wenden Sie es grundsätzlich auf das Signal an (nachdem Sie ein Mutter-Wavelet ausgewählt haben) und Sie erhalten eine Reihe von Koeffizienten, die verschiedene Frequenzkomponenten darstellen, die dann vom Rohsignal subtrahiert werden können, um das Rauschen zu entfernen.

Abgesehen von diesen Filtern können Sie auch Raumfilter verwenden, ein sehr gebräuchlicher ist CSP (Common Spatial Patterns) oder andere wie MEC, CCA, AC, CAR, ICA usw.