らくがきちょう

文字数制限の無いTwitter的な

(解析メモ)心拍変動のスペクトル解析(前置き編)

 こいつらの続きです↓

(解析メモ)時刻のデータをExcelやMatlabで扱う - らくがきちょう

(解析メモ)等間隔でサンプルされてない信号の処理(簡単な整形だけ) - らくがきちょう

 

時刻データや不等間隔の信号処理で何をしていたのかというと、心拍RR間隔スペクトル解析やってました。いわゆる心拍変動解析ってやつ。

 

なお、せっかくなので心拍変動解析の概要からまとめていくことにしたら概要だけで結構長くなってしまったので、不等間隔がどうのこうのという話は次回に持ち越し。

 

以下、心拍変動のスペクトル解析の概要について雑にまとめてみました。

 

心拍RR間隔

 心拍RR間隔とは、雑に言うと心臓の「ドックン」から次の「ドックン」までの時間間隔のこと。

 もう少しちゃんと説明すると、心電図を計測するとP波、Q波、R波、S波、T波と呼ばれる特徴点が出てくるんですが、その中のR波とR波の時間間隔のこと。R波だけ示すと下図のような感じ。

f:id:MshrOkn:20201217200941p:plain

心電図のRR間隔

 ドックンドックンの間隔はだいたい一定だけれども、ミリ秒とかの単位で見れば揺らいでいる。たとえば、下図は私が5分間椅子に座った状態で実際に計測してみたときのデータ↓

f:id:MshrOkn:20201217192927p:plain

心拍RR間隔の時系列の例

ざっくり780ms前後の間隔だったとして、1分あたり何拍(beat per minute: bpm)の単位に直すと77 bpmぐらい。同年代の男性としてはやや高めか。体力ゴミですんません*1

なお、計測中は 80 bpmメトロノームに合わせて4拍吸って4拍吐いて、というリズムで呼吸していたことを付記(後の内容への伏線)

 

 このRR間隔のゆらぎ=心臓の拍動のリズムのゆらぎを分析することで、自律神経バランスがある程度評価できるとされている。

 

周波数解析

 その分析の仕方の中に、いわゆる周波数スペクトル(心拍のゆらぎがどんな周波数成分で構成されているか)に着目する方法がある。

 「周波数成分」とはどういうことかというと、たとえば左下図のように1 Hz、2 Hz、3 Hz、… 6 Hzの波があったとする(1 Hzとは、1秒に1往復するサイン波のこと。2Hzなら1秒に2往復)。なお、左下図では3 Hzだけ振幅を2倍にしてある。

これらの波を全部足し合わせる(合成する)と、右下図のようなちょっと複雑な波ができる。

f:id:MshrOkn:20201217193653p:plain

波の合成

 合成された波をただ眺めていても元の周波数成分がなんだったのかはわからないが、ある計算をすると元になった周波数成分が何Hzの波でそれぞれどんな振幅だったのかを推定することができる。これが周波数解析。そして左下図の「どの周波数の波がどれだけの振幅だったっぽいですよ」という図が周波数スペクトル(簡単のためごまかしまくってます)。

f:id:MshrOkn:20201217193927p:plain

周波数解析

 

心拍変動の周波数解析

 具体的な数値を出すと、心拍RR間隔の時系列を周波数解析にかけると、だいたい0.01 Hz~0.5 Hzぐらいの成分の振幅が強く出てきて、そのあたりが「生理的に意味のある周波数帯」と考えられている。

中でも特に0.01~0.15 Hzあたりは「低周波(Low Frequency: LF)帯」、0.15~0.4 Hzあたりは「高周波(High Frequency: HF)帯」と呼ばれる。ついでにいうとHF帯にはピークが出てくることが多く、これはしばしば呼吸のリズムに対応している。

 これらの振幅が何を表すかざっくり言うと、LF帯の振幅は交感神経の活動度(強いほど興奮)と、HF帯の振幅は副交感神経の活動度(強いほどリラックス)と相関しているとされる。つまり、心拍変動の周波数スペクトルを見ると、興奮・沈静の度合いがある程度評価できるということ。

 ここまで図でまとめると下図のようなかんじ。

f:id:MshrOkn:20201217195226p:plain

心拍変動のスペクトル解析

 もっとも、LF帯には副交感神経の活動度も反映されてるという報告とか、どっちも相関してるとは言っても微妙じゃね?みたいな話もあるので、このへんはちゃんとした文献を当たってほしい。

とりあえずがっつりめの教科書を1冊示しておくと、↓の本はかなりおすすめ。

こころとからだを知る心拍数 | 山地 啓司 |本 | 通販 | Amazon

もっと一般向けなやさしい本は見つけたら and/or 思い出したら追記します。

 

周波数解析のアルゴリズム

 心拍の周波数スペクトルを見る方法は昔からいろいろ提案されてきている。詳しく説明したくない(する自信がない)けど高速フーリエ変換法、最大エントロピー法、自己相関法、などなど。

 いずれも一長一短あるわけだけど、最大のややこしいところは、どの方法も本来は等間隔にサンプリングされた信号のための解析手法であるという点。心拍RR間隔という信号は、その性質上等間隔でサンプルされることはあり得ないので、上記のアルゴリズムは本来適用することができない。

 それでも研究者にとってスペクトルを見たいという欲望は抗いがたいものがあったのでしょう、みなさん等間隔になるよう適当な方法で間のデータを内挿して、スペクトル解析を行ってきた。出力されるスペクトルは補間の方法によってもアルゴリズムによっても当然微妙に異なるので、文献間で値を比較するのはけっこう難しかったりする*2

特に最大エントロピー法や自己相関法は補間の方法のほかにも「次数」というパラメータの設定によっても結果が大きく変わるので、正直ものすごく扱いにくい*3

 

次回予告:最近注目されてるっぽいアルゴリズム

 そんななか、ここ10年ぐらいで注目度が高まってるっぽいアルゴリズムがある(ようやく本題)。Lomb-Scargle法というアルゴリズムである。なぜ注目されているかというと、この方法は不等間隔の信号にそのまま適用できるという最高にクールなアルゴリズムなのである。

 

 というわけで、続きはまた今度。

 

*1:一般的に体力の強い人ほど1分あたりの拍動回数は少なくなる。トップクラスのマラソン選手だと40bpmぐらいまで落ちる

*2:どんな周波数成分がメインなのかを目視する分にはそんなに困らないが、そのあと帯域ごとの積分値とかLF/HF比(低周波パワーと高周波パワーの比率)とかの集約変数を求める際に影響が出てくる

*3:出力されるスペクトルは見やすいものの、次数で結果が大きく変わるのであれば出てきたスペクトルを本当に信用していいのかという話にもなる。そして次数の決め方も「これなら誰も文句は言わん!」みたいなはっきりした方法がないので、やっぱりものすごく扱いにくい。