---
title: "Verfitication of Solutions"
subtitle: ""
author:
- Kizen Sasaki
date: 2023-12-28
date-modified: today
date-format: 'YYYY MMMM DD'
language:
title-block-published: First version
titel-block-modified: This version
format:
html:
html-math-method: katex
code-tools: true
code-fold: true
code-link: true
pdf:
geometry:
- top=30mm
- bottom=30mm
- left=30mm
- right=25mm
docx: default
code-line-numbers: true
---
@fig-1
```{r}
#| message: false
#| echo: false
#| label: fig-1
#| layout-ncol: 2
#| fig-cap: "Heart rate time series"
#| fig-subcap:
#| - "Non-interpolated heart rate"
#| - "Interpolated heart rate"
#| fig.width: 7
#| fig.height: 7
library(RHRV)
library(tidyverse)
library(openxlsx)
# Frequency-domain analysis techniques p.43, p.54, , p73
hrv.data <- CreateHRVData()
hrv.data <- SetVerbose(hrv.data, TRUE)
hrv.data <- LoadBeatAscii(hrv.data, "beatsFolder/example.beats")
hrv.data <- BuildNIHR(hrv.data)
hrv.data <- FilterNIHR(hrv.data)
hrv.data = InterpolateNIHR(hrv.data, freqhr = 4)
# Plot
PlotNIHR(hrv.data)
PlotHR(hrv.data)
```
```{r}
#| message: false
#| echo: false
# Time-domain analysis techniques p.49
hrv.data <- CreateTimeAnalysis(hrv.data, size = 300, interval = 7.8125)
table1 <- tibble(
Parameters = c("SDNN", "SDANN", "SDNNIDX", "pNN50", "SDSD", "rMSSD", "IRRR", "MADRR", "TINN", "HRVi"),
Units = c("$ms$", "$ms$", "$ms$", "%", "$ms$", "$ms$", "$ms$", "$ms$", "$ms$", "$ms$"),
Value = hrv.data$TimeAnalysis[[1]][Parameters]
)
# knitr::kable(table1)
```
```{r}
#| message: false
#| echo: false
# Frequency-domain analysis techniques p.53 Wevelet transform p.60
hrv.data <- BuildNIHR(hrv.data)
hrv.data <- FilterNIHR(hrv.data)
hrv.data <- InterpolateNIHR(hrv.data, freqhr = 4)
hrv.data <- CreateFreqAnalysis(hrv.data)
hrv.data=CalculatePowerBand(hrv.data, indexFreqAnalysis = 1,size=300, shift=30,
type = "wavelet", wavelet = "la8",
bandtolerance = 0.01, relative = FALSE)
```
@fig-2
```{r}
#| message: false
#| echo: false
#| label: fig-2
#| fig-cap: "Heart rate dynamics plot"
#| fig-height: 12
# Plotting wavelet analysis
PlotPowerBand(hrv.data, indexFreqAnalysis = 1, normalized=TRUE, hr=TRUE)
hrv.data=CalculatePSD(hrv.data,indexFreqAnalysis = 1, method = "lomb", doPlot="F")
# CalculateEnergyInPSDBands(hrv.data, indexFreqAnalysis =1) # Verfy ULF, VLF, LF, HF
```
```{r}
# CalculateEnergyInPSDBands(hrv.data, indexFreqAnalysis =1)
ULF <- round(median(CalculateEnergyInPSDBands(hrv.data, indexFreqAnalysis =1)[[1]]), 5)
VLF <- round(median(CalculateEnergyInPSDBands(hrv.data, indexFreqAnalysis =1)[[2]]), 5)
LF <- round(median(CalculateEnergyInPSDBands(hrv.data, indexFreqAnalysis =1)[[3]]), 5)
HF <- round(median(CalculateEnergyInPSDBands(hrv.data, indexFreqAnalysis =1)[[4]]), 5)
LFHF <- round(LF/HF, 5)
### Heart rate
HRmax <- max(hrv.data$Beat$niHR)
HRmin <- min(hrv.data$Beat$niHR)
HRave <- round(mean(hrv.data$Beat$niHR))
HRmed <- round(median(hrv.data$Beat$niHR))
```
```{r}
#| message: false
#| echo: false
#| label: tbl-example
#| tbl-cap: "Heart Rate Variability(HRV) Analysis during 2-hourse Bicycle training"
#| tbl-subcap:
#| - "Time-domain HRV Metrics"
#| - "Frequency-domain HRV Metrics with Definitions. **How to make it heart rate integer only. I want to use {gt} & {geExtras}.**"
#| layout-ncol: 2
# for LF/HF, ULF, VLF, LF, HF
table2 <- tibble(
Parameters = c("LF/HF", "ULF", "VLF", "LF", "HF","HRmax", "HRmin", "HRave", "HRmed"),
Units = c("%", "$ms^{2}$", "$ms^{2}$", "$ms^{2}$", "$ms^{2}$","$bpm$", "$bpm$", "$bpm$", "$bpm$"),
Value = c(LFHF, ULF, VLF, LF, HF, HRmax, HRmin, HRave, HRmed)
)
# table1のUnits列とValue列の項目名を削除
table1 <- setNames(table1, c("Parameters", "", ""))
# table2のUnits列とValue列の項目名を削除
table2 <- setNames(table2, c("Parameters", "", ""))
knitr::kable(table1)
knitr::kable(table2) # for verifing
```