大阪で働くメディカルデータサイエンティストの日記

医療系dataをRを用いて解析します。古典統計学、ベイズ統計学など使えるものは何でも。

Rのパッケージ、RHRVを用いて心拍変動解析

今日は心拍変動解析のお話。

心拍変動解析は心電図のRR間隔(RRI)のゆらぎをスペクトル解析をもちいて、

周波数帯域を高周波HF、低周波LFとし、自律神経の副交感神経の活動をHFが、

交感神経の活動をLF/HFが反映することを利用した解析のことです。

 

今回は実践的にコンピューター言語であるRで解析できるRHRVパッケージが

2019.10.28にupdateされていたので、健忘録としてまとめました。

公式HP:http://rhrv.r-forge.r-project.org/

まずRにインストール

install.packages("RHRV")

library(RHRV)

 

読み込めるのは欧米フォントのみの様々なファイル形式に対応しています。

でもexample.beatsをNotopadにコピーして、CSVファイルかTXTで保存します。

RHRVでは特殊なデータ構造を構築して解析していくようですが、詳細は公式に。

まず、箱を作るためのおまじないです。

data("HRVData")

data("HRVProcessedData")

hrv.data = CreateHRVData()

hrv.data = SetVerbose(hrv.data, TRUE )

 

解析している内容としては

RRIデータを読み込む

②心拍数へ変換する。

③等間隔のデータで解析するために線形補間で再構築する。

フーリエ変換かウーブレット変換でスペクトル解析する。

⑤HF、LF、VHF、VLFを計算して図示する。

 

まずRR間隔(RRI)データを読み込みます。

hrv.data = LoadBeatAscii(hrv.data, " example.beats")

(ここでの落とし穴はこのexampleデータの内容でした。

どうもRRIの積算データになっているようです。

もし用意したデータが心拍数データであれば、変換が必要です。

心拍数=60 ÷ RRI(msec) なので、 RRImsec = 60 ÷ 心拍数として、

1拍目から累積データを作成して、読み込んでください。 

だれかうまい方法があればお知らせください。)

 

②心拍数へ変換する。

hrv.data = BuildNIHR(hrv.data)

素の心拍数データを作成してます。

外れ値を削除するためにフィルターを自動でかけます。

hrv.data = FilterNIHR(hrv.data)

 

③等間隔のデータで解析するために線形補間で再構築します。

hrv.data = InterlolateNIHR(hrv.data, freqhr =4)

デフォルトは4Hzです。

素の心拍数を図示します。

PlotNIHR(hrv.data, main = "niHR")

④ タイムドメイン解析

hrv.data = CreateTimeAnalysis(hrv.data, size =300, interval = 7.8125)

 

フーリエ変換かウーブレット変換でスペクトル解析する。

今回はフーリエ変換

hrv.data = CreateFreqAnalysis(hrv.data)

 

⑤HF、LF、VHF、VLFを計算して図示する。

デフォルトで行うと

hrv.data = CalculatePowerBand(hrv.data, indexFreqAnalysis = 1, size = 300, shift = 30)

PlotPowerBand (hrv.data, indexFreqAnalysis = 1, ymax= 200, ymaxratio = 2.0)

 

なにが行われているが不明な点が多いけど、高額なsoftが不要で、心拍変動解析ができるので、連続する心拍数さえあれば、いろいろ解析できて、役立つ可能性があります。