【问题标题】:Fitting autoregressive models to EEG timeseries将自回归模型拟合到 EEG 时间序列
【发布时间】:2015-08-09 22:02:27
【问题描述】:

所以我读到可以将 AR 模型拟合到 EEG 数据,然后使用 AR 系数作为数据聚类或分类的特征:例如Mohammadi 等人,使用 AR 模型对 EEG 信号进行人员识别,2006 年。

作为质量控制步骤和解释的帮助,我想直观地查看拟合模型生成/模拟的时间序列类型。如果我正在做 K 均值或其他分类,这也可以让我展示原型模型。

但是,我似乎只能产生噪音!

任何朝着我想要的方向迈出的步伐都会受到欢迎。

section1 = data[88000:91800]
section2 = data[0:8000]
section3 = data[143500:166000]

section1 -= np.mean(section1)
section2 -= np.mean(section2)
section3 -= np.mean(section3)

绘制时:

maxOrder = 20
model_one = AR(section1).fit(maxOrder, ic = 'aic', trend = 'nc') 
model_two = AR(section2).fit(maxOrder, ic = 'aic', trend = 'nc') 
model_three = AR(section3).fit(maxOrder, ic = 'aic', trend = 'nc') 

fake1 = arma_generate_sample(model_one.params,[1],1000, sigma = 1)
fake2 = arma_generate_sample(model_two.params,[1],1000,sigma = 1)
fake3 = arma_generate_sample(model_three.params,[1],1000,sigma = 1)

ax1.plot(fake1)
ax2.plot(fake2)
ax3.plot(fake3)

【问题讨论】:

  • 主要问题是绘图看起来不像具有对称高斯噪声的 AR。中间地块和最后一个地块负冲击较大。在金融领域,有些类似的模式被建模为不对称的重尾冲击分布。此外,对于这种高频数据,20 滞后可能太短了。
  • 感谢您的评论。是的,这是有道理的,具有对称噪声的 AR 不应该很好地模拟两条底部迹线 - 我有点困惑,如果它们确实是,那么如何用 AR 对诸如这些的 EEG 信号进行建模。如果我使用更高的滞后数,模型会随着预测时间的增加而开始振荡。您是否知道任何解释不对称重尾冲击分布或如何拟合/编码它们的好(简单)资源?

标签: python time-series statsmodels autoregressive-models


【解决方案1】:

关于 EEG 数据的标准最简单的或多或少真实的说法是它具有 1/f 或“粉红色”分布。 1/f 信号的一个有趣之处在于它们是非平稳的,并且无法通过任何阶的 ARMA 过程正确建模。 (1/f 意味着低频波动任意大,这意味着任意相隔的点保持相关性,并且您拥有的数据越多,您可以检测到的相关性越远——ACF 永远不会收敛到任何有限的东西。另外,重要的是要意识到频谱内容和类似 ARMA 的过程是超级超级相关的,因为信号的自相关函数完全决定了它的频谱分布,反之亦然——这两个函数是彼此的傅里叶变换。)

所以基本上这意味着您使用基本时间序列统计数据所做的任何事情都将是一个巨大的违反理论的黑客行为。这并不意味着它不会在实践中产生一些有用的分类特征,而是相应地校准你的期望......你得到的结果很可能与 Mohammadi 等人得到的结果完全相同,而且他们只是懒得做任何适合度的检查/报告。

有一些方法可以通过小波或 ARIMA 过程直接对 1/f 噪声进行建模。

根据您的数据,您可能还需要担心与简单 1/f 分布的偏差:诸如 alpha 之类的东西(在 10 Hz 时会在频谱分布中产生显着的颠簸)、诸如肌肉噪声、电线噪声之类的伪影, 和心跳(这也会导致与简单的 1/f 频谱的显着偏差——尤其是肌肉会产生非常独特的宽带〜白色噪声)和眨眼(会产生巨大的脉冲偏差,这不会很好) - 由任何假设平稳性或在频域中工作的技术建模)。

my thesis 的第 5.3 节对这些问题进行了更多讨论(附有参考资料),尽管是在进行类似 ERP 的分析而不是机器学习的背景下进行的。

【讨论】:

  • 哦,对了,尤其是那些“下行冲击”,它们看起来可能对我来说是心跳(尽管我不像某些人那样擅长这方面的东西)。您也许可以使用 ICA 或类似方法将它们分开。这绝对是一件很奇怪的事情。在我看来,只有你的三个样本信号中的第一个看起来像干净的脑电图。
  • 我不确定数据是头皮脑电图还是海马场电位。在后一种情况下,上面的轨迹是θ波,中间的轨迹是尖波和波纹。如果是头皮脑电图,上面的轨迹是阿尔法波,中间的轨迹是睡眠纺锤波。它不是心跳伪影。它们看起来都像是干净的录音,具体取决于大脑的状态(例如 REM 睡眠与慢波睡眠)。
  • 需要注意的是,波纹(同步爆发神经元产生的 200 Hz 信号)紧随脉冲事件之后。这表明它们是人口峰值事件,而不是 ECG、EMG 或 EOG 伪影。如果是外部噪音,它不会被时间锁定到涟漪中。
  • 啊,谢谢,这很有道理——我自己只处理过清醒行为数据。
  • 是的,这些实际上是场电位,但它们看起来类似于单个 EEG 通道记录的癫痫发作事件,所以我没有提及。对不起,如果这混淆了事情。顶部轨迹是基线,就在癫痫发作之前的中间,以及底部癫痫发作。那么你认为 ARIMA 可能更适合这个吗?那么我可以根据 ARIMA 参数进行分类吗?
猜你喜欢
  • 2020-11-20
  • 2014-04-25
  • 2017-11-02
  • 2020-03-27
  • 2016-09-03
  • 1970-01-01
  • 2018-11-22
  • 2019-09-15
  • 2016-04-23
相关资源
最近更新 更多