最小二乗法によるパラメータ同定奮闘記3

2019年になりましたね!
2018年は12月28日に研究納めをしましたが,2019年は1月1日から研究を開始していきます.
ということで,現在やっているパラメタ同定奮闘記の続きを書いていきます.
(完全なる自分用の研究アーカイブなので,雑に書いてますので読みにくいと思います...)

何をやっているのかというと,脳波の状態(集中とか安静とか)を解析するための数学モデルを作っています.
具体的には,内側のモデルパラメータを逆問題で同定して,パラメータの値によって複雑な脳波の状態が評価できないか?
ということをしているのですが,逆問題を解くための条件設定が色々と難しいので四苦八苦してるという状態です笑

前回の内容の復習

以前の記事はこちら


前回は,
・解析窓ごとにFFT
・ピークを一つ決める
・検討する周波数帯域をあらかじめ,ピークが属する帯域でIFFT
・IFFTで得た1秒間の時系列波形を用いてパラメタ同定

という流れでしたね.
しかし,前回はFFTを行う時に,解析窓の幅が狭かったので周波数分解能はかなり低くて1Hz程度なのがちょっと問題でした.
周波数分解能というのは,以下を見てください!

現在の周波数分解能は,0.976Hz,約1Hzです.
そう,生波形の周波数解析をして,どのくらいの周波数が含まれているのかを確認する時に,約1Hzの分解能しか調べることができません.
ちょっと生体信号を扱う上では不便ですよね.もう少し細かく0.25Hz毎とかで調べたいわけですよ.
そのため,どういう対策をするかというと,

  • 解析窓の幅をもっと長くする
  • サンプリング周波数をもっと短くする

の二つの方法が考えられます.
サンプリング周波数の間隔は,脳波データを取得する実験装置の方で設定する必要があるので,データを取った今,この間隔を短くするのはちょっと無理です.
(厳密には補間することが可能ですが,,,)
そこで,実験データの構造を壊さず解析するために,解析窓の幅を増やすということをします.

今回の内容について

よって今回は以下のような修正を行います.

変更箇所は3箇所です.

  1. 周波数分解能を上げるためにゼロパディングをする
  2. パラメタ同定に使うIFFTが単純すぎたので周波数を一つ追加
  3. 数学モデルの右辺にωの項をもう一つ追加

です.

1秒毎に解析するこだわりは特にないのですが,ゼロパディングをして周波数成分の量を破壊せずに分解能を上げるということをしました.
サンプリング点数の量を稼ぐために,変動しない値(0)を解析窓に挿入する方法です.
(今回は解析窓毎の波形の平均値を3秒分挿入してます)

解析結果

パラメータ同定結果

早速そういうふうな改良でパラメタ同定したものを以下に示します.
また,先に結果から言っておくと,0.5Hz〜を含めた周波数解析結果は,解析窓毎の周波数が圧倒的に低周波数側に寄ってしまったので,以下二つの条件でやります.
周波数条件①:0.5 – 30.0 Hz
周波数条件②:4.0 – 30.0 Hz

デルタ帯域(0.5 – 4.0 Hz)が入っているかどうかの違いです.

以下は周波数条件①
上のグラフから生脳波データ,
その下のグラフは解析窓のデータ+平均値パディング(ゼロパディング)
その下は周波数解析の結果.
下の3×3の小さめのグラフはパラメタです.
見にくくてごめんなさい.
以下は周波数条件②
いい感じに,周波数ピークの獲得がされていて,集中状態や安静状態が判別できそう...?です笑

いちよう,前回の記事を見てもらったら話が早いのですが,被験者は4人いるので,それぞれやって,パラメタの相関を調べました.
最小二乗法によるパラメータ同定奮闘記2

各被験者,各パラメタの相関

周波数条件① 0.5 – 30 Hz

以下,観測結果をまとめました
・ゼロパディングとω2 を追加 → リラックス状態のA-Bの相関が小さくなってきた.
・しかし,まだC-B間の傾向ははっきりしたものはない.
・集中すると,A-Bの相関は -1へ近づくことが分かった.
・ただ,やっぱり低周波帯域(デルタ)の影響がかなり大きいので,デルタを抜いた方が良いのかもしれない.

周波数条件② 4.0 – 30 Hz

以下に観測結果をまとめます.
・デルタ帯域を抜いた場合でパラメタ同定を行うと,これまでの被験者ごとの傾向が全く異なる.
・デルタ帯域を抜いて,かなり傾向が変わるので,この帯域を入れるかどうかがパラメタ同定にかなり影響する.
・モデルの改良(vanderPol導入 or 右辺の項)や帯域の制限(アルファのみ?)などを色々と調べる必要がある.

プログラムについて

ゼロパディングを入れて,アニメーション出力までやってくれるPythonプログラムです.

では〜!
2019年も頑張るぞー