Files
HealthTracking/docs/research/bpm-indicators-fightrate-2026-06-10.md

337 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/