개인 기준선: 당신의 ‘정상’은 집단 평균이 아닙니다

집단 평균은 당신이 빠진 채 계산된 평균입니다. 개인 기준선은 당신 자신의 최근 몇 주가 써 내려간 자입니다. 처음에는 무디고, 쓸수록 정확해집니다.

두 사람, 같은 숫자

평소 수치가 훨씬 높은 사람과 훨씬 낮은 사람이 있다. 어느 날 오후, 두 사람의 수치는 똑같은 숫자에 멈춰 섰다.

집단 자로 재면 이렇게 말하게 된다. 두 번째 사람은 괜찮고, 첫 번째 사람은 상태가 나쁘다고. 하지만 그날 실제로 일어난 일은 달랐다. 첫 번째 사람은 크게 떨어졌고, 두 번째 사람은 크게 올랐다.

아직 당신의 기준선이 없을 때 우리가 쓰는 것이 바로 이 집단 자다. 낯선 사람들의 통계에서 가져온 중심과 너비다. 그것은 처음 며칠을 버티기 위한 임시방편일 뿐, 우리가 옳다고 믿는 방식이 아니다. 쓰면 쓸수록 결점이 드러난다. 그것은 당신을 재는 것이 아니라, 한 번도 만난 적 없는 사람들과 당신 사이의 거리를 재고 있다.

사람과 사람의 차이는, 한 사람의 하루 변동보다 훨씬 크다

HRV는 나이, 성별, 안정 시 심박수, 복용 약물, 훈련 부하, 자율신경 긴장도에 영향을 받는다. 사람 사이에서는 몇 배까지 벌어질 수 있지만, 같은 사람의 날마다 변동은 아주 좁은 범위 안에서 움직인다.

그래서 집단 자는 양쪽에서 모두 틀린다. 기준선이 높은 사람에게는 그 사람이 정상적으로 오가는 아래쪽이 ‘나쁨’으로 판정된다. 기준선이 낮은 사람에게는 정말로 나쁜 날조차 집단의 정상 범위 안에 들어가 자가 아무 말도 하지 않는다.

더 조용한 문제도 있다. 그것은 태어날 때부터 HRV가 높은 사람에게 보상을 준다. 같은 생활 방식이라도 출발점이 다르면 점수가 다르다. 우리가 재고 싶은 것은 낯선 사람들 속에서 당신이 어디에 서 있는지가 아니다. 당신이 자기 자신으로부터 얼마나 멀어졌는지다.

이 자는 어떻게 만들어지는가

먼저 표본을 균등하게 만든다. Apple Watch는 어떤 날은 HRV를 촘촘히 쓰고, 어떤 날은 듬성듬성 쓴다. 그대로 통계에 넣으면 촘촘한 시간대가 더 큰 가중치를 갖는다. 즉 기준선은 몸이 아니라 샘플링 비율에 흔들린다. 그래서 기준선 계산에 들어가기 전에 HRV를 현지 시간 기준으로 같은 길이의 시간 버킷에 묶고, 각 버킷은 중앙값만 남긴다. 그래프, 상세 화면, 그 순간의 점수 계산에는 원본 표본을 그대로 쓴다. 버킷을 쓰는 것은 자를 만드는 단계뿐이다.

그다음 창을 고른다. 상한은 대략 한 달이다. 최근 구간에 HRV 버킷, 안정 시 심박 표본, 채워진 날짜가 충분히 있으면 전체 창을 쓰고, 부족하면 실제로 존재하는 데이터 범위를 쓴다. 왜 더 짧게 잡지 않는가. 끔찍한 밤 하나면 전체가 끌려간다. 왜 더 길게 잡지 않는가. 계절 변화, 훈련 주기, 생활 리듬의 변화가 섞여 들어온다.

중심은 중앙값. 먼저 물리적으로 있을 수 없는 값을 버리고, 표본이 충분할 때 양끝을 조금 잘라낸 뒤 중앙값을 취한다. 밴드가 헐거워져 나온 터무니없는 높은 값이 일주일치 중심을 끌어올려서는 안 된다.

중심을 그 시각에 고정한다. HRV에는 일주기 리듬이 있다. 대부분의 사람은 잠잘 때 가장 높고 오후에 가장 낮다(모양은 사람마다 다르다). 하나의 고정된 중심으로는 부족하다. 우리는 최근 구간의 몇 개의 굵은 시간대 중앙값에서 리듬 계수를 계산한다. 각 시간대에는 충분한 표본이 있어야 하고, 충분히 많은 시간대가 신뢰할 수 있다고 판단되어야 한다. 비어 있는 시간대는 원형 보간으로 메우고, 모든 시각으로 펼친 뒤 가벼운 평활화를 한 번 거쳐, 마지막에 그럴듯한 범위로 제한한다. 어떤 순간의 동적 중심 = 하루 중심 × 그 시각의 계수.

왜 한 시간 단위 버킷이 아니라 몇 개의 굵은 시간대인가. 시계의 HRV는 듬성듬성하고 고르지 않다. 대부분의 시각에는 표본이 한두 개뿐이라, 시간별 중앙값은 결국 잡음으로 곡선을 그리는 셈이다. 굵은 시간대와 보간, 평활화의 조합이, 잘게 쪼갰지만 비어 있는 버킷보다 진짜 리듬에 가깝다.

범위는 표준편차가 아니다. 여기가 가장 중요한 단계다. HRV의 움직임은 곱셈적이다. 높은 수준에서 같은 비율로 떨어지는 것과 낮은 수준에서 같은 비율로 떨어지는 것은 같은 사건인데, 절댓값은 몇 배나 차이 난다. 그래서 각 표본에 대해 그 순간의 동적 중심에 대한 로그 잔차를 계산한다.

로그 척도에서는 기준선이 크게 다른 사람도 같은 그림에 올려 비교할 수 있고, 밀리초로 돌려도 범위는 자연스럽게 양수가 된다. 그리고 그 잔차 더미에서 세 개의 분위를 취한다. 아래쪽, 위쪽, 그리고 더 바깥쪽 하나다.

  • 정상의 아래 경계 = 중심 × exp(아래쪽 분위)

  • 활력이 넘치는 상태로 들어가는 문 = 중심 × exp(위쪽 분위)

  • 나쁨으로 들어가는 문 = 중심 × exp(더 바깥쪽 분위)

흔히 쓰는 사분위가 아니라 이 조합을 고른 데는 이유가 있다. ‘정상’이 당신의 일상 변동 가운데 구간을 덮게 하고, 전체적으로 높은 쪽으로 치우치게 하려는 것이다. 낮은 값은 더 일찍 눈에 띄고, ‘활력 넘침’은 당신 자신의 가장 좋은 구간에 들어갔을 때만 인정된다. 건강 제품이 존재감을 유지하려고 칭찬을 남발해서는 안 된다.

그 위에 안전밸브가 세 개 걸려 있다.

  • 반폭에는 하한이 있다. 원래 변동이 아주 작은 사람은 분위가 터무니없이 좁아져, 한 번의 판독 잡음만으로 하루 종일 상태가 넘나든다.

  • 위쪽 반폭은 아래쪽 반폭의 일정 배수를 넘을 수 없다. 그렇지 않으면 HRV의 오른쪽 긴 꼬리가 ‘정상’의 위쪽 경계를 계속 밀어 올려, 결국 ‘특별히 낮지만 않으면 정상’이 되어 버린다.

  • 나쁨의 문은 한 번 더 바깥으로 밀린다. 분위와 ‘중심에서 유효한 아래쪽 반폭을 몇 개 뺀 값’ 중 더 먼 쪽을 택한다. 같은 이유로, 그 선을 잡음 속에 두지 않으려는 것이다.

잔차 모델에도 자체 진입 조건이 있다. 정규화된 표본이 충분할 것, 채워진 날짜가 충분할 것, 신뢰할 수 있는 시간대가 충분할 것. 이에 못 미치면 전체가 견고한 반폭으로 되돌아간다. 중위 절대 편차와 사분위 범위 중 더 안정적인 쪽을 쓰고, 그 위에 너비 상한을 한 번 더 씌운다. 즉 당신이 보는 범위는 당신 자신의 분위 분포에서 오거나, 무디지만 안정된 자에서 오는 것이지, 데이터가 모자란 상태에서 억지로 만든 분위에서 오지 않는다.

단계의 단위는 ‘반폭’이지 시그마가 아니다. 점수는 현재 값이 중심에서 반폭 몇 개만큼 벗어났는지를 본다(중심보다 아래면 아래쪽 반폭, 위면 위쪽 반폭). 표준편차 몇 개가 아니다. 이렇게 하면 모든 단계가 모든 사람에게 같은 뜻이 된다. 반폭 하나 이내면 정상, 낮은 쪽으로 넘어서면 활력 넘침, 더 바깥이면 다소 지침, 나쁨의 문을 넘으면 마지막 단계다. 사람마다 달라지는 것은 ‘반폭이 얼마나 넓은가’이지 ‘몇 점이 정상인가’가 아니다.

가드레일이 두 개 더 있다. 심박수는 보조 항목으로, HRV가 이미 중심에서 벗어났을 때만 가중치를 얻는다(멀어질수록 무겁다). 그리고 그것은 당신 자신의 안정 시 심박수와 비교된다. 또 하나는 극단적으로 낮은 HRV에 대한 절대적인 하한으로, 개인 기준선을 전혀 보지 않는다. 생리적으로 낮은 것은 낮은 것이다. ‘당신 기준으로는 정상’이라는 변명이 필요하지 않다.

데이터가 아직 부족할 때

처음 며칠은 개인화 점수와 집단용 대체 점수를 날짜 수에 따라 선형으로 섞는다. 이때 기준선은 콜드 스타트로 표시되고, 참고는 되지만 단계 경계를 맡지 않는다. 그다음 ‘학습 중’ 구간이 이어진다. 충분한 날짜를 쌓고 잔차 모델이 품질 검사를 통과해야 비로소 성숙으로 본다.

신뢰도는 별도의 기준이다. 가진 데이터가 적을수록 요구하는 표본이 많아진다. 그것은 그 기준선이 점수 계산에 참여할 자격이 있는지를 정한다. 성숙도는 선택 전략에서의 우선순위와, 화면이 얼마나 자신 있게 말해야 하는지를 정한다.

어느 하루를 평가할 때는 그보다 엄격히 이전의 기준선만 쓴다. 오늘 계산한 기준선이 오늘을 판단하게 두지 않는다. 그렇지 않으면 HealthKit이 표본을 하나씩 동기화해 올 때마다 오늘의 결론이 왔다 갔다 한다.

기준선도 스스로 흘러간다. 그래서 두 번째 닻을 남겨 두었다

이동 창에는 부작용이 있다. 몇 달 동안 낮은 HRV가 이어지면, 그 낮은 수준이 서서히 ‘그 사람의 정상’이 되어 장기적인 변화가 보이지 않게 된다.

그래서 최근 구간의 기준선 스냅샷을 보관하고, 현재 스냅샷을 대략 한 달 전 것과 짝지운다. 짝이 충분히 모이고 방향이 대체로 일치할 때만 ‘지속적 저하’ 또는 ‘지속적 상승’을 출력한다. 사용자에게는 세 가지 상태로 말한다. 지난달보다 조금 좋음, 조금 나쁨, 거의 비슷함. 짝이 모이지 않으면 그 줄은 비워 둔다. ‘모른다’를 ‘변화 없음’으로 쓰지 않는다.

또 하나 느린 닻이 있다. 하루에 아주 작은 걸음만 빠른 기준선 쪽으로 옮기고, 지속적인 흘러감이 있는 동안에는 걸음을 더 줄인다. 그것은 지속적으로 낮을 때만 점수를 아주 살짝 위로 올리고, 지난 기록을 다시 쓰지 않는다. 이 비대칭은 의도적이다. 오래 낮게 이어지는 상태는 더 진지하게 다뤄질 가치가 있다. 오래 높게 이어지는 상태에 보상은 필요 없다.

아직 풀지 못한 부분

샘플링 밀도는 기준선 쪽에서는 버킷 처리로 차단되어 있다. 그러나 일간 집계는 여전히 모든 스트레스 지점을 균등하게 가중하므로, 고빈도 기기에서는 낮 시간대가 원래보다 무겁게 실린다. 이 편향은 파악되어 있고, 시간 버킷 기준 평균으로 바꾸는 방법이 요구사항 목록에 올라 있지만 이번에는 손대지 않았다.

교란 요인도 끝나지 않았다. 카페인, 음주, 시차, 생리 주기, 질병은 모두 HRV를 움직인다. 우리가 명시적으로 다루는 것은 운동과, 가장 큰 원인 몇 가지뿐이다.

마지막으로 분명히 해 둔다. 기준선은 진단이 아니다. 그것은 당신과 당신 자신 사이의 관계를 서술하는 상대적인 자다. 어떤 의학적 주장도 하지 않는다.

한 줄로 맺는다. 집단 평균은 당신이 빠진 채 계산된 평균이다. 개인 기준선은 당신 자신의 최근 몇 주가 써 내려간 자다. 처음에는 무디고, 쓸수록 정확해진다. 그리고 그것을 앞당길 방법은 없다.

더 읽기

Stress HRV에서 이 아이디어를 경험하기

App Store에서 다운로드

이 노트는 개인 웰니스를 위한 제품 생각이며 의료 조언이 아닙니다.