337 lines
15 KiB
Markdown
337 lines
15 KiB
Markdown
# FightRate — métricas científicas derivadas de frequência cardíaca e HRV/VFC
|
||
|
||
> Documento técnico-educacional. Nenhuma métrica abaixo deve ser apresentada como diagnóstico médico. Interpretação clínica exige contexto, validação, exame adequado, controle de artefatos e revisão profissional.
|
||
|
||
## Escopo
|
||
|
||
Este relatório consolida fórmulas, algoritmos e limites de interpretação para transformar dados reais do FightRate em indicadores de saúde, desempenho e carga interna. A base foi limitada a literatura acadêmica indexada em PubMed/PMC ou páginas de periódico científico.
|
||
|
||
## Premissa de dados do app
|
||
|
||
O FightRate já pode usar:
|
||
|
||
- `bpm`: frequência cardíaca instantânea enviada pelo Heart Rate Service `180D`, Measurement `2A37`.
|
||
- `timestamp`: instante real de cada amostra persistida.
|
||
- `rrIntervalsMs`: intervalos RR quando o sensor enviar esse campo no pacote `2A37`.
|
||
- `workout_sessions`: janelas de treino marcadas dentro do fluxo contínuo.
|
||
- `continuous_heart_rate_samples`: amostras contínuas, inclusive fora da janela de treino.
|
||
|
||
Separação crítica:
|
||
|
||
1. **Métricas BPM-only**: podem ser calculadas hoje com FC timestampada.
|
||
2. **Métricas dependentes de perfil**: exigem FCmáx, FCrepouso, idade e/ou sexo informados ou estimados.
|
||
3. **Métricas HRV/VFC reais**: exigem RR intervals confiáveis, filtragem de artefatos e janela adequada.
|
||
|
||
## Matriz de implementação
|
||
|
||
| Métrica | Dados mínimos | Pode entrar já? | Observação |
|
||
| --- | --- | --- | --- |
|
||
| FC atual/média/mín/máx | BPM + timestamp | Sim | Baixo risco; métrica central. |
|
||
| Amplitude e variabilidade de BPM | BPM + timestamp | Sim | Útil para esforço estável vs intervalado. |
|
||
| Tempo em zonas fixas | BPM + timestamp | Sim | Usar como zona operacional até existir perfil. |
|
||
| Tendência/deriva de FC | BPM + timestamp | Sim | Rotular como tendência, não causa fisiológica. |
|
||
| Recuperação pós-janela | BPM contínuo após fim da janela | Sim, quando houver dados pós-esforço | Precisa continuar monitorando após encerrar janela. |
|
||
| Zonas por FCmáx | BPM + FCmáx ou idade | Parcial | FCmáx por idade tem erro individual. Preferir FCmáx manual. |
|
||
| Karvonen/HRR | BPM + FCmáx + FCrepouso | Parcial | Mais individualizado, mas exige perfil. |
|
||
| TRIMP | BPM + duração + FCmáx + FCrepouso + coeficiente | Parcial | Útil como carga estimada; limitações em intervalados. |
|
||
| RMSSD/SDNN/pNN50 | RR intervals limpos | Só se RR vier do sensor | Não derivar de BPM médio. |
|
||
| LF/HF/frequência | RR + interpolação + janela adequada | Futuro | Alto risco de interpretação; evitar MVP. |
|
||
| HRV-guided readiness | RR matinal padronizado | Futuro | Depende de protocolo diário consistente. |
|
||
|
||
## 1. Frequência cardíaca atual, média, mínima e máxima
|
||
|
||
**Fonte fisiológica:** monitoramento direto de FC é prático e barato, mas a relação FC↔intensidade é afetada por hidratação, temperatura, fadiga, cafeína, estresse e deriva cardiovascular. Achten & Jeukendrup destacam que FC é útil em campo, mas limitada para estimar gasto energético ou VO₂ individual com alta precisão.
|
||
|
||
**Dados:** BPM válido e timestamp.
|
||
|
||
**Fórmulas:**
|
||
|
||
```text
|
||
FC_atual = último BPM válido
|
||
FC_média = soma(BPM) / n
|
||
FC_mín = min(BPM)
|
||
FC_máx = max(BPM)
|
||
Amplitude = FC_máx - FC_mín
|
||
```
|
||
|
||
**Uso no FightRate:**
|
||
|
||
- Mostrar como leitura primária nos Insights.
|
||
- Usar `sampleCount` e duração para indicar qualidade/confiança.
|
||
- Não exibir quando não houver amostras reais.
|
||
|
||
## 2. Variabilidade simples de BPM
|
||
|
||
Esta não é HRV/VFC. É variabilidade da frequência cardíaca agregada por amostras de BPM. Ainda assim, é útil para caracterizar treino contínuo, intervalado ou caótico.
|
||
|
||
**Dados:** BPM timestampado.
|
||
|
||
**Fórmulas:**
|
||
|
||
```text
|
||
média = soma(BPM) / n
|
||
variância = soma((BPM - média)^2) / n
|
||
DP_BPM = sqrt(variância)
|
||
CV_BPM = DP_BPM / média
|
||
Amplitude = FC_máx - FC_mín
|
||
```
|
||
|
||
**Classificação operacional sugerida:**
|
||
|
||
```text
|
||
CV_BPM < 0.06 = esforço estável
|
||
0.06–0.12 = misto / progressivo
|
||
> 0.12 = intervalado / oscilante
|
||
```
|
||
|
||
**Limitação:** CV alto pode indicar treino intervalado, sensor instável ou mudanças bruscas de contexto. Rotular como “oscilação de FC”, não HRV.
|
||
|
||
## 3. FC máxima estimada e zonas por %FCmáx
|
||
|
||
Tanaka, Monahan e Seals revisaram a fórmula clássica `220 - idade` e propuseram uma equação mais robusta para adultos saudáveis:
|
||
|
||
```text
|
||
FCmáx_estimada = 208 - 0.7 × idade
|
||
%FCmáx = BPM / FCmáx
|
||
```
|
||
|
||
**Zonas operacionais comuns:**
|
||
|
||
| Zona | %FCmáx | Uso prático |
|
||
| --- | ---: | --- |
|
||
| Z1 | <60% | recuperação / muito leve |
|
||
| Z2 | 60–70% | base aeróbia |
|
||
| Z3 | 70–80% | moderado / tempo |
|
||
| Z4 | 80–90% | alta pressão |
|
||
| Z5 | >90% | redline / esforço máximo relativo |
|
||
|
||
**Limitação:** Tanaka et al. deixam claro que FCmáx é amplamente explicada pela idade em população saudável, mas a estimativa individual pode errar bastante. Para o app, a FCmáx manual do usuário deve ter prioridade sobre fórmula.
|
||
|
||
## 4. Reserva cardíaca / Karvonen / HRR
|
||
|
||
Karvonen, Kentala e Mustala popularizaram o uso da faixa entre FC de repouso e FC máxima como referência de intensidade. Swain & Leutholtz demonstraram que `%HRR` se alinha melhor a `%VO₂ reserve` do que a `%VO₂max`.
|
||
|
||
**Dados necessários:** BPM, FCmáx, FCrepouso.
|
||
|
||
**Fórmulas:**
|
||
|
||
```text
|
||
Reserva = FCmáx - FCrepouso
|
||
Intensidade_HRR = (BPM - FCrepouso) / Reserva
|
||
Alvo_BPM = FCrepouso + Intensidade_alvo × Reserva
|
||
```
|
||
|
||
**Uso no FightRate:**
|
||
|
||
- Quando perfil existir, mostrar zonas por HRR como modo mais personalizado.
|
||
- Sem FCrepouso confiável, cair para zonas por %FCmáx ou zonas operacionais fixas.
|
||
|
||
## 5. Tempo em zona
|
||
|
||
Tempo em zona é um dos indicadores mais úteis para leitura visual compacta, porque combina intensidade e duração.
|
||
|
||
**Dados:** BPM timestampado e função `zona(BPM)`.
|
||
|
||
**Algoritmo:**
|
||
|
||
```text
|
||
para i de 1 até n-1:
|
||
delta = timestamp[i] - timestamp[i-1]
|
||
delta_limitado = min(delta, gapMaxMs)
|
||
zona = zona(BPM[i])
|
||
tempo[zona] += delta_limitado
|
||
```
|
||
|
||
**Regras de robustez:**
|
||
|
||
- Ignorar ou limitar gaps grandes para não atribuir minutos sem sinal a uma zona.
|
||
- Exibir duração e percentual.
|
||
- Usar o mesmo cálculo para janela de treino, uso contínuo e faixa customizada.
|
||
|
||
## 6. Carga interna / TRIMP
|
||
|
||
Banister introduziu o conceito de treinamento como “dose” fisiológica, combinando duração e intensidade. O TRIMP clássico usa FC relativa à reserva e um peso exponencial. Desgorces et al. discutem que TRIMP é histórico e útil, mas não é intercambiável com métodos alternativos e pode falhar em exercícios intermitentes quando usa FC média.
|
||
|
||
**Dados necessários:** duração, BPM, FCmáx, FCrepouso, coeficiente.
|
||
|
||
**Banister TRIMP clássico:**
|
||
|
||
```text
|
||
HRr = (FCmédia - FCrepouso) / (FCmáx - FCrepouso)
|
||
TRIMP_homem = duração_min × HRr × 0.64 × e^(1.92 × HRr)
|
||
TRIMP_mulher = duração_min × HRr × 0.86 × e^(1.67 × HRr)
|
||
```
|
||
|
||
**TRIMP acumulado por amostra, mais adequado ao FightRate:**
|
||
|
||
```text
|
||
para cada intervalo entre amostras:
|
||
HRr_i = clamp((BPM_i - FCrepouso) / (FCmáx - FCrepouso), 0, 1.2)
|
||
peso_i = coeficiente_a × e^(coeficiente_b × HRr_i)
|
||
TRIMP += delta_min × HRr_i × peso_i
|
||
```
|
||
|
||
**Uso no FightRate:**
|
||
|
||
- Chamar de **carga estimada**.
|
||
- Se FCmáx/FCrepouso não existirem, mostrar “perfil incompleto”.
|
||
- Para treino de luta intervalado, preferir versão acumulada, não FC média única.
|
||
|
||
## 7. Recuperação cardíaca pós-esforço (HRR recovery)
|
||
|
||
Cole et al. definiram recuperação como a queda da FC do pico ao primeiro minuto após o exercício; em teste clínico, queda `≤ 12 bpm` no primeiro minuto foi associada a maior mortalidade. No FightRate, isso deve ser usado apenas como referência educativa, pois o contexto é treino livre, não teste clínico padronizado.
|
||
|
||
**Dados necessários:** fim da janela de treino e monitoramento contínuo por 1–2 min depois.
|
||
|
||
**Fórmulas:**
|
||
|
||
```text
|
||
HRR_1min = FC_fim_ou_pico - FC_60s_após
|
||
HRR_2min = FC_fim_ou_pico - FC_120s_após
|
||
```
|
||
|
||
**Algoritmo recomendado:**
|
||
|
||
1. Ao fechar a janela, manter monitor contínuo ativo.
|
||
2. Guardar FC no fim da janela e pico dos últimos minutos.
|
||
3. Buscar amostra mais próxima de `endedAt + 60s` e `endedAt + 120s`.
|
||
4. Exibir apenas se houver amostras suficientes depois da janela.
|
||
|
||
## 8. Deriva cardiovascular / tendência de drift
|
||
|
||
Coyle & González-Alonso definem a deriva cardiovascular como queda progressiva do volume sistólico após 10–20 min de exercício, acompanhada por aumento de FC. Sem potência, velocidade, temperatura e hidratação, o app só deve inferir “tendência de deriva de FC”, não causa.
|
||
|
||
**Dados:** série BPM longa e timestampada.
|
||
|
||
**Fórmulas operacionais:**
|
||
|
||
```text
|
||
média_inicial = média de uma janela inicial estável
|
||
média_final = média da janela final
|
||
Deriva_abs = média_final - média_inicial
|
||
Deriva_% = Deriva_abs / média_inicial × 100
|
||
```
|
||
|
||
**Janela sugerida para app:**
|
||
|
||
- Se duração ≥ 20 min: comparar primeiros 20% vs últimos 20%, ignorando aquecimento curto.
|
||
- Se duração < 10 min: não calcular deriva; mostrar “janela curta”.
|
||
|
||
## 9. HRV/VFC com RR intervals
|
||
|
||
A Task Force ESC/NASPE estabeleceu padrões clássicos de medição e interpretação de HRV. Shaffer & Ginsberg detalham métricas de domínio do tempo, frequência e não lineares, reforçando que duração da janela, artefatos, respiração, idade, sexo e método de medição mudam a interpretação.
|
||
|
||
**Dados necessários:** RR/NN intervals em milissegundos, limpos de artefatos.
|
||
|
||
### Domínio do tempo
|
||
|
||
```text
|
||
SDNN = desvio padrão dos intervalos NN
|
||
RMSSD = sqrt(média((NN[i+1] - NN[i])²))
|
||
NN50 = contagem de pares sucessivos com |ΔNN| > 50 ms
|
||
pNN50 = NN50 / número_de_pares × 100
|
||
```
|
||
|
||
**Interpretação resumida:**
|
||
|
||
- RMSSD é uma das métricas mais usadas para atividade vagal de curto prazo.
|
||
- SDNN depende fortemente da duração da janela; 24h e 5 min não são intercambiáveis.
|
||
- pNN50 é correlacionado com RMSSD, mas RMSSD costuma ser preferido.
|
||
|
||
### Domínio de frequência
|
||
|
||
Bandas clássicas:
|
||
|
||
```text
|
||
VLF: 0.0033–0.04 Hz
|
||
LF: 0.04–0.15 Hz
|
||
HF: 0.15–0.40 Hz
|
||
LF/HF = potência_LF / potência_HF
|
||
```
|
||
|
||
**Limitação importante:** LF/HF é controverso como “balanço simpático-vagal”; respiração, postura e não estacionaridade podem distorcer a leitura. Para MVP, não usar LF/HF como score principal.
|
||
|
||
### Não lineares
|
||
|
||
```text
|
||
SD1 = dispersão perpendicular no Poincaré; relacionado a RMSSD
|
||
SD2 = dispersão longitudinal no Poincaré
|
||
SampEn = regularidade/complexidade da série
|
||
DFA α1 = correlação fractal de curto prazo
|
||
```
|
||
|
||
**Uso no FightRate:** futuro, apenas após validação de RR do sensor e filtros de artefato.
|
||
|
||
## 10. HRV-guided readiness / prontidão
|
||
|
||
Kiviniemi et al. testaram prescrição diária guiada por HRV em treino de endurance: quando HRV matinal caía significativamente, o treino era reduzido para baixa intensidade ou repouso. Buchheit argumenta que medidas quase diárias de 5 min em repouso e FC submáxima podem ser úteis quando interpretadas individualmente com erro de medida, menor mudança importante e contexto de carga.
|
||
|
||
**Requisitos para FightRate:**
|
||
|
||
- Protocolo matinal padronizado, não amostra aleatória de treino.
|
||
- RR intervals reais.
|
||
- Baseline individual de vários dias.
|
||
- Exibir como prontidão/protocolo, não diagnóstico.
|
||
|
||
**Algoritmo futuro:**
|
||
|
||
```text
|
||
baseline = média móvel de LnRMSSD dos últimos 7–10 dias
|
||
limite = baseline - desvio_ou_SWC
|
||
se LnRMSSD_hoje < limite:
|
||
sugestão = reduzir intensidade / recuperar
|
||
senão:
|
||
sugestão = treino planejado permitido
|
||
```
|
||
|
||
## 11. Alertas e anomalias
|
||
|
||
**Dados:** BPM, timestamp, perfil opcional.
|
||
|
||
Regras não clínicas úteis:
|
||
|
||
```text
|
||
Sem sinal = nenhuma amostra válida por N segundos
|
||
Pico abrupto = |BPM_atual - BPM_anterior| > limiar em poucos segundos
|
||
Alta sustentada = BPM > limite por N segundos
|
||
Queda pós-pico = FC cai X bpm em 60/120s após janela
|
||
```
|
||
|
||
**Cuidado:** alertas de saúde reais exigem validação médica. No app, usar linguagem operacional: “verifique sensor”, “pausa recomendada”, “zona alta sustentada”.
|
||
|
||
## Recomendações diretas para a tela Insights
|
||
|
||
1. Substituir lista simples por uma **grade tabular de instrumentos** com linhas compactas.
|
||
2. Priorizar métricas calculáveis hoje:
|
||
- FC atual/média/mín/máx;
|
||
- duração e amostras;
|
||
- tempo em zonas;
|
||
- variabilidade BPM;
|
||
- carga observada/carga estimada;
|
||
- tendência de deriva;
|
||
- recuperação pós-janela quando existir.
|
||
3. Exibir métricas dependentes de perfil como **bloqueadas** ou “perfil necessário”, sem inventar FCmáx/FCrepouso silenciosamente.
|
||
4. Exibir HRV/VFC como **indisponível** quando não houver RR intervals confiáveis.
|
||
5. Cada métrica deve ter:
|
||
- valor;
|
||
- unidade;
|
||
- status (`OK`, `perfil`, `RR`, `janela curta`, `sem dados`);
|
||
- frase curta de leitura;
|
||
- base de cálculo/confiança.
|
||
6. Para uso espacial eficiente, usar tabela em linhas densas, trilhos e separadores do Corner Instrument — não cards genéricos.
|
||
|
||
## Referências acadêmicas
|
||
|
||
1. Task Force ESC/NASPE. *Heart rate variability: standards of measurement, physiological interpretation and clinical use*. Circulation. 1996. PubMed: https://pubmed.ncbi.nlm.nih.gov/8598068/
|
||
2. Shaffer F, Ginsberg JP. *An Overview of Heart Rate Variability Metrics and Norms*. Front Public Health. 2017. PMC: https://pmc.ncbi.nlm.nih.gov/articles/PMC5624990/
|
||
3. Tanaka H, Monahan KD, Seals DR. *Age-predicted maximal heart rate revisited*. J Am Coll Cardiol. 2001. PubMed: https://pubmed.ncbi.nlm.nih.gov/11153730/
|
||
4. Karvonen MJ, Kentala E, Mustala O. *The effects of training on heart rate; a longitudinal study*. Ann Med Exp Biol Fenn. 1957. PubMed: https://pubmed.ncbi.nlm.nih.gov/13470504/
|
||
5. Swain DP, Leutholtz BC. *Heart rate reserve is equivalent to %VO2 reserve, not to %VO2max*. Med Sci Sports Exerc. 1997. PubMed: https://pubmed.ncbi.nlm.nih.gov/9139182/
|
||
6. Cole CR, Blackstone EH, Pashkow FJ, Snader CE, Lauer MS. *Heart-rate recovery immediately after exercise as a predictor of mortality*. N Engl J Med. 1999. PubMed: https://pubmed.ncbi.nlm.nih.gov/10536127/
|
||
7. Achten J, Jeukendrup AE. *Heart rate monitoring: applications and limitations*. Sports Med. 2003. PubMed: https://pubmed.ncbi.nlm.nih.gov/12762827/
|
||
8. Coyle EF, González-Alonso J. *Cardiovascular drift during prolonged exercise: new perspectives*. Exerc Sport Sci Rev. 2001. PubMed: https://pubmed.ncbi.nlm.nih.gov/11337829/
|
||
9. Buchheit M. *Monitoring training status with HR measures: do all roads lead to Rome?* Front Physiol. 2014. PubMed/PMC: https://pubmed.ncbi.nlm.nih.gov/24578692/
|
||
10. Kiviniemi AM, Hautala AJ, Kinnunen H, Tulppo MP. *Endurance training guided individually by daily heart rate variability measurements*. Eur J Appl Physiol. 2007. PubMed: https://pubmed.ncbi.nlm.nih.gov/17849143/
|
||
11. Desgorces FD, Hourcade JC, Dubois R, Toussaint JF, Noirez P. *Training load quantification of high intensity exercises: discrepancies between original and alternative methods*. PLoS One. 2020. PMC: https://pmc.ncbi.nlm.nih.gov/articles/PMC7398532/
|
||
12. Foster C, Florhaug JA, Franklin J, et al. *A new approach to monitoring exercise training*. J Strength Cond Res. 2001. PubMed: https://pubmed.ncbi.nlm.nih.gov/11708692/
|