ケィオスの時系列解析メモランダム

時系列解析,生体情報学,数学・物理などの解説です.

【Rで時系列解析】Rでパワースペクトル推定:心拍変動解析での実際

Rで時系列のパワースペクトルを推定したいとき,もっともお気楽なのは,"spectrum"というコマンドを使うことだと思います.今回は,心拍変動 (RR間隔時系列)のスペクトル解析で"spectrum"コマンドを使った実例を紹介します.ちなみに,例として使用したRR間隔時系列は,10分の長さのもので,4 Hz (0.25 秒間隔)でリサンプリングされています (リサンプリングについては関連記事参照).ヘッドアップティルト試験で,0°,20°,40°の3条件で計測されたものです.今回は,HFとか,LFの説明は省略します.真のパワースペクトルは,どんな形か想像して推定結果を観察してください.

 Rの"spectrum"コマンドでは,ペリオドグラムの計算の前処理として,トレンドを除く,窓関数をかける処理が含まれています.後処理として,全パワーも調整されているようです (私の印象です). 

1. 自己回帰過程の当てはめを使ったパラメトリック推定

 まずは,時系列に自己回帰過程を当てはめ,推定された自己回帰過程の係数を使ってパワースペクトルを推定した結果です.

パワースペクトルパラメトリック推定の結果.

サンプリング間隔dtの時系列をxとすれば,

tmp <- spectrum(x, plot="false",method="ar")
freq <- tmp$freq/dt
psd <- tmp$spec*dt

のようにすれば,パワースペクトルを推定できます.freqに周波数,psdにパワースペクトル密度が入ってます.

2. ペリオドグラムを使ったノンパラメトリック推定

 ペリオドグラムの平滑化でいろいろと設定を変えた結果を以下になれべておきます.ここでは,

tmp <- spectrum(x, plot="false",spans=c( ... ))
freq <- tmp$freq/dt
psd <- tmp$spec*dt

として,"spans"オプションの設定を変えています.

パワースペクトルの推定結果.修正ダニエルを1回かけて平滑化した場合.
パワースペクトルの推定結果.修正ダニエルを2回繰り返して平滑化した場合.
パワースペクトルの推定結果.修正ダニエルを3回繰り返して平滑化した場合.

まとめ

 「パワースペクトルパラメトリック推定とノンパラメトリック推定の結果の見た目は全然違う」という印象を持っている人も多いと思います.しかし,平滑化を使えば,ある程度似たグラフになることが分かると思います.とはいえ,通常は正解が分からないので,思い切った平滑化は難しいと思います.
 
 心拍変動解析について説明すれば,平滑化しても,しなくても,HFパワー,LFパワーはほとんど変りません.平滑化はパワースペクトルの見栄えを変えているだけです.