Using OfflineAnalysis to select control feature(s)?
Posted: 29 May 2012, 08:41
Question: Should online control features be selected based on task-specific spectral amplitude/power changes with or without adaptive normalization? If adaptive is best, then how can we use OfflineAnalysis to help us select the best feature?
Read the following if you require more details.
Using the OfflineAnalysis tool I'm getting nice 1/f spectra during imagery and similar spectra during rest with the exception of a nice peak around 14Hz. This also yields great rsq values around that frequency. See the attached figure. {5:C3, 6:Cz, 10: P3, 11: Pz}. I did not use any spatial filter. Based on this assessment I would use C3 @ 14Hz as my control signal.
I tried to simulate this result by using the bci2000chain tool using only . I tried to match the AR parameters to those used by OfflineAnalysis as best as I could. While I can't match the SampleBlockSize after the fact, I can match the WindowLength. I don't know which WindowFunction OfflineAnalysis' mem uses, if any. In the attached figure the red line is the rsq value (right y-axis). Everything else is labeled. The results are pretty similar.
Of course no one uses these raw amplitude values for control. Assuming no spatial filter and only C3 @ 14Hz is our control feature.
How should I normalize this feature for control?
A simple, non-adaptive, way to normalize would be to take the median value of C3 @ 14Hz as the offset and then scale by 1/variance. In my experience, spectral amplitude is not normally distributed so it seems like the cursor will not have equal speed on either side of the midline. I find that brain signals can be made a little more normal by taking the power in db (10*log10(amplitude^2)) but currently BCI2000 does not offer this option.
We can also use an adaptive normalizer http://www.bci2000.org/wiki/index.php/U ... Normalizer. This way the offset and gain are updated every trial based on some previous data. The problem with this is that the result of adaptive normalization isn't really the same as the result using OfflineAnalysis.
I repeated the bci2000 chain analysis using. The LinearClassifier simply turns every channel x frequency into an output channel and the normalizer is set to 'adaptive' using 3 s of baseline data.
The results are quite different. Based on this Cz at 14Hz is now better and C3's rsq peaks at 8Hz.
If I had hours and hours of data instead of the 40 trials here, would the results converge?
Should cursor speed be 0 at the beginning of a trial (i.e., normalized to baseline)? Should we assume that there is some drift in the control signal that the subject will never have voluntary control over and therefore normalize the cursor speed to some previous amount of data? Or should the cursor speed always be some direct transformation of the current amplitude (or power) with the expectation that the subject will eventually learn to return the signal amplitude to baseline between trials?
Does the answer change if the goal is to induce plasticity vs to provide useful control?
Thank you for any insight.
Read the following if you require more details.
Using the OfflineAnalysis tool I'm getting nice 1/f spectra during imagery and similar spectra during rest with the exception of a nice peak around 14Hz. This also yields great rsq values around that frequency. See the attached figure. {5:C3, 6:Cz, 10: P3, 11: Pz}. I did not use any spatial filter. Based on this assessment I would use C3 @ 14Hz as my control signal.
I tried to simulate this result by using the bci2000chain tool using only
Code: Select all
TransmissionFilter|ARFilterHow should I normalize this feature for control?
A simple, non-adaptive, way to normalize would be to take the median value of C3 @ 14Hz as the offset and then scale by 1/variance. In my experience, spectral amplitude is not normally distributed so it seems like the cursor will not have equal speed on either side of the midline. I find that brain signals can be made a little more normal by taking the power in db (10*log10(amplitude^2)) but currently BCI2000 does not offer this option.
We can also use an adaptive normalizer http://www.bci2000.org/wiki/index.php/U ... Normalizer. This way the offset and gain are updated every trial based on some previous data. The problem with this is that the result of adaptive normalization isn't really the same as the result using OfflineAnalysis.
I repeated the bci2000 chain analysis using
Code: Select all
TransmissionFilter|ARFilter|LinearClassifier|NormalizerIf I had hours and hours of data instead of the 40 trials here, would the results converge?
Should cursor speed be 0 at the beginning of a trial (i.e., normalized to baseline)? Should we assume that there is some drift in the control signal that the subject will never have voluntary control over and therefore normalize the cursor speed to some previous amount of data? Or should the cursor speed always be some direct transformation of the current amplitude (or power) with the expectation that the subject will eventually learn to return the signal amplitude to baseline between trials?
Does the answer change if the goal is to induce plasticity vs to provide useful control?
Thank you for any insight.