はじめに
この記事は、前回の記事:Polar Vantage V3を使って_その1の続きの記事になります。
前回のおさらい
前回は、Polar Vantage V3の脈拍数の精度の高さと、生データの抽出方法および簡単な解析方法について述べました。
今回の記事について
心拍数(脈拍数)が健康とどうかかわるのか、意外にご存じない方もいると思います。今回は2023年11月から2024年5月まで計測した私の心拍数のデータ(計193日)から、「お酒と疲労」の関係をテーマに考察していきたいと思います。
お酒と心拍数
疲労が蓄積すると、体が回復を促すために心拍数が増加する、というのは皆さん聞いたことがあるかと思います。
実はお酒を飲むことでも、心拍数が増加します。これは、アルコール分解のために脳が全身に血液を流そうとすることで生じます。なので、アルコール摂取量が多いほど心拍数が増加そして増加している期間も長くなります。
解析用データベースの作成
心拍数の生データは以下のように処理をして解析用データベースに変換しました。
df = pd.read_pickle("Data_resamp.pkl")
df = df.reset_index(drop=True)
for MeasDate in df["MeasDate"].unique():
tdf = df[df["MeasDate"] == MeasDate]
tdf["hr_moveave_60s"] = tdf["hr"].rolling(60).mean()
df.loc[tdf.index, "hr_moveave_60s"] = tdf["hr_moveave_60s"]
df_analysis = pd.DataFrame()
cnt = 0
for MeasDate in tqdm(df["MeasDate"].unique()):
tdf = df[df["MeasDate"] == MeasDate]
weekday_index = pd.to_datetime(tdf["MeasDate"]).dt.weekday.values[0]
weekday = pd.to_datetime(tdf["MeasDate"]).dt.day_name().values[0]
tdf_1_6 = tdf[(1 <= tdf["DateTime"].dt.hour) & (tdf["DateTime"].dt.hour < 6)]
tdf_7_9 = tdf[(7 <= tdf["DateTime"].dt.hour) & (tdf["DateTime"].dt.hour < 9)]
tdf_9_12 = tdf[(9 <= tdf["DateTime"].dt.hour) & (tdf["DateTime"].dt.hour < 12)]
tdf_14_18 = tdf[(14 <= tdf["DateTime"].dt.hour) & (tdf["DateTime"].dt.hour < 18)]
tdf_19_23 = tdf[(19 <= tdf["DateTime"].dt.hour) & (tdf["DateTime"].dt.hour < 23)]
tdfs = [tdf_1_6, tdf_7_9, tdf_9_12, tdf_14_18, tdf_19_23]
labels = ["sleep", "go-to-office", "am", "pm", "night"]
for tdf2, label in zip(tdfs, labels):
df_analysis.loc[cnt, f"MeasDate"] = MeasDate
df_analysis.loc[cnt, f"Weekday"] = weekday
df_analysis.loc[cnt, f"Weekday_index"] = weekday_index
if(len(tdf2) == 0):
#欠損がある場合
df_analysis.loc[cnt, f"mean_{label}"] = 60
df_analysis.loc[cnt, f"min_{label}"] = 60
df_analysis.loc[cnt, f"max_{label}"] = 60
df_analysis.loc[cnt, f"max-min_{label}"] = 0
df_analysis.loc[cnt, f"std_{label}"] = 0
else:
v = "hr_moveave_60s"
df_analysis.loc[cnt, f"mean_{label}"] = tdf2[v].mean()
df_analysis.loc[cnt, f"median_{label}"] = tdf2[v].median()
df_analysis.loc[cnt, f"min_{label}"] = tdf2[v].min()
df_analysis.loc[cnt, f"max_{label}"] = tdf2[v].max()
df_analysis.loc[cnt, f"max-min_{label}"] = tdf2[v].max() - tdf2[v].min()
df_analysis.loc[cnt, f"std_{label}"] = tdf2[v].std()
cnt += 1
解析方針
睡眠中の心拍数
お酒を飲むのはいつか?と聞かれると、多くの人は休み前の金曜日(華金)あるいは土曜日と答えるのではないでしょうか?
今回は、日〜木と、金、土の睡眠中の心拍数の差の違いを見ることにします。
結果と考察
各曜日ごとの睡眠中の心拍数の違いを示します。縦軸が心拍数です。
※各曜日の1時~6時の平均を示しています。
-
これを見ると・・・やはり、土曜日(金曜日の睡眠)が高くなっています。
金曜日の飲酒が原因と考えられますね。飲み過ぎ注意。 -
データを見て意外だったのは、僅かではありますが、月曜日から木曜日にかけて、平均心拍数が徐々に上がっています。冒頭に申し上げた通り、心拍数は疲労の蓄積でも増加します。
つまり、平日の仕事の疲れが、徐々に蓄積していき、土日で一気に回復しているという可能性が考えられます。
日中の心拍数変動パターン
次に、11月~5月の心拍数の日中の変動パターンを見たいと思います。
縦軸が心拍数、横軸が0:00~23:59までの時間帯を表しています。
- 深夜(0~2付近)は比較的心拍数が安定しています。これは睡眠の影響ですね。
- 午前中(2~4付近)にピークがあります。これは通勤時の運動によるものですね。
- 中盤(4~6付近)にもピークがあります。これは、食事によるものですね。
- 後半(6~)は、波形が上に行くものと、下に行くもの、きれいに分かれている気がします。これは、飲み会があるとき、ないとき?の違いなのかな、と考えれられます。
なんとなく、体感で経験的に理解していることでも、こうやってデータを蓄積させ定量的に評価すると、説得力が増しますよね。
自分の長期データを解析すると、普段の習慣を見直すにきっかけに繋がりそうです。
補足
今回は統計的有意差までは示していません。あくまでも傾向を示しています。