커피 섭취 vs 수면: 개인 데이터 기반 인과 분석 리포트
대상: Taeho Kim (iPhone + Apple Watch 데이터) 분석 기간: 2025-12-20 ~ 2026-04-09 (110일) 데이터 소스: Apple HealthKit via Health Data Bridge CLI 분석 일자: 2026-04-10 (2026-04-11 Granger 구현 버그 정정 반영)
⚠️ Provisional caveat (2026-04-11): 본 리포트의 p-value들은 공통
betaRegularized함수에 반전 버그가 있던 초기 구현으로 계산되었습니다. 후속 caffeine-multidim.md 리포트에서 이 버그를 발견하고 수정했으나, 본 리포트는 아직 수정된 루틴으로 재계산되지 않았습니다. 다만 본 리포트의 핵심 결론들은 효과 크기(|r|, β) 기반이라 p-value 버그 영향을 받지 않습니다:
- 취침 시각 → 수면 시간: β = -0.801 (회귀 dominant predictor)
- 야간 운동 → 깊은 수면: β = -0.232
- 카페인 → 수면 지표: 모든 상관 |r| ≤ 0.22, 최강 신호는 §4-1의 잔류 카페인 ↔ 깨어남 수 r = 0.21 (small effect, N=110, 버그 없는 계산으로도 p≈0.03이라 양/음 방향 결론에 영향 없음). §4-2 전반부 깨어남 r=0.197, §3-2 Quartile dose-response 방향성도 유지.
p < 0.05/0.10 이분법적 주장은 "provisional"로 간주하고, 방향성·효과 크기·dose-response에 근거한 해석만 신뢰하세요. 재실행 작업은 별도 follow-up으로 예정되어 있습니다.
참고: §5-1의 "깊은수면% → 다음날 RHR r=-0.22"는 수면→다음날 회복 상관이지 카페인 상관이 아닙니다.
Executive Summary
110일간의 Apple Health 데이터(카페인 섭취, 수면 단계, HRV, RHR, 운동, 걸음수)를 약동학 모델링, Granger 인과 검정, Baron-Kenny 매개 분석, 부트스트랩 신뢰구간을 포함한 4단계 분석으로 검증했다.
결론: 현재 카페인 패턴(일 225mg, 마지막 잔 12:37)에서 카페인은 수면에 유의미한 영향을 주지 않는다. 수면의 양과 질을 결정하는 가장 강력한 변수는 취침 시각이며, 깊은 수면에 가장 해로운 변수는 18시 이후 운동이다.
다른 결과와 교차 참조: 카페인은 수면에 영향이 없으나, caffeine-multidim.md 후속 리포트에서 아침 카페인이 일상 HRV(자율신경)에 약한 음의 연관(r=-0.215, effective signal)을 가지는 것으로 나타났습니다. 아래 §6 권장 사항은 "수면 outcome"에 한정된 것이며, HRV 최적화가 목표라면 caffeine-multidim §5 권장 사항도 함께 참고하세요.
단변량 시각의 보조 분석: 같은 디렉토리의 cola-drill-down.md 는 같은 데이터로 단변량 Pearson 상관
caffeine_mg × sleep_onset = +0.22, p≈0.02를 보고합니다. 이 값은 본 리포트의 multivariate β≈0 결과와 모순되지 않습니다 — 단변량 r=0.22 의 대부분은 취침 시각을 통한 confound 이며 (즉 "바쁜 날에 커피도 많이 + 늦게도 잔다"), 본 리포트의 multivariate 회귀가 그 confound 를 흡수해 카페인의 independent β 를 0 으로 떨어뜨립니다. cola-drill-down 자체에도 같은 데이터의 더 결정적 증거가 있습니다 — 저녁(≥17시) 카페인 코호트(n=9)와 안 마신 코호트(n=104)의 잠든 시각 차이는 +1분으로 거의 0. 자세한 reconciliation은 cola-drill-down.md 의 방법론 노트 를 참고하세요.
1. 데이터 개요
수집 데이터
| 데이터 | 유형 | 건수 | 기간 |
|---|---|---|---|
| 카페인 섭취 | raw records | 302 | 2025-12-19 ~ 2026-04-10 |
| 수면 분석 | raw records (5 stages) | 4,061 | 2025-11-30 ~ 2026-04-09 |
| HRV (SDNN) | daily bucketed | 366 | 1년 |
| 안정시 심박수 | daily bucketed | 131 | ~4개월 |
| 운동 | raw records | 539 | 1년 |
| 걸음수 | daily bucketed | 131 | ~4개월 |
| 활동 칼로리 | daily bucketed | 131 | ~4개월 |
| 음주 | raw records | 1 | (거의 미기록) |
개인 기술통계
| 지표 | 평균 | SD | 중앙값 | 범위 |
|---|---|---|---|---|
| 일일 카페인 | 225mg | ±62mg | 223mg | 63–421mg |
| 마지막 커피 시각 | 12:37 | ±2.5h | 12:45 | 07:55–19:15 |
| 잠든 시각 | 23:42 | ±1.5h | 23:35 | 19:42–02:44 |
| 총 수면시간 | 6.9h | ±1.3h | 7.2h | 4.1–10.1h |
| 깊은 수면 % | 11.1% | ±4.0% | 10.5% | 4.7–23.5% |
| REM % | 19.2% | ±4.9% | 19.5% | 7.5–30.2% |
| 수면 효율 | 94.1% | ±3.6% | 94.8% | 78.2–100% |
| WASO (깨어남) | 27min | ±19min | 23min | 0–110min |
| 깨어남 횟수 | 7.7회 | ±3.0 | 7.5 | 0–17 |
| HRV | 50.0ms | ±5.2ms | 50.1ms | 36.9–65.8ms |
| RHR | 49.6bpm | ±2.2bpm | 49.5bpm | 45–57bpm |
2. 분석 1: 카페인과 수면의 관계
2-1. 약동학 모델링
카페인 반감기 5시간을 적용하여 취침 시점의 잔류 카페인 농도를 추정했다.
| Quartile | 취침 시 잔류 | N | 총 수면 | 깊은수면% | 수면 효율 | WASO |
|---|---|---|---|---|---|---|
| Q1 (최저) | 20mg | 28 | 6.3h | 12.1% | 94.4% | 23min |
| Q2 | 30mg | 28 | 6.7h | 11.3% | 94.4% | 25min |
| Q3 | 39mg | 28 | 7.3h | 10.7% | 94.1% | 28min |
| Q4 (최고) | 54mg | 26 | 7.6h | 10.3% | 93.5% | 33min |
잔류 카페인이 높을수록 오히려 수면이 길었다 — 이는 역인과(일찍 자면 대사 시간이 짧아 잔류가 높고, 일찍 잤으니 잠도 길다)로 확인됨.
2-2. 다중회귀 (표준화 β)
수면시간 예측 모델 (R² = 0.686):
| 변수 | β (std) | 해석 |
|---|---|---|
| 취침 시각 | -0.801 | 유일한 유의 변수 |
| 잔류 카페인 | 0.061 | 사실상 0 |
| 마지막 커피 시각 | 0.092 | 사실상 0 |
| 운동 | -0.013 | 무관 |
| 야간 운동 | 0.065 | 무관 |
| 주말 | 0.056 | 무관 |
카페인을 통제하든 안 하든, 취침 시각 하나가 수면시간 변동의 68.6%를 설명한다.
2-3. 오후 카페인 (≥14시) 자연실험
| 지표 | 오전만 (n=83) | 오후 포함 (n=27) | 차이 | Cohen's d |
|---|---|---|---|---|
| 잔류 카페인 | 33.4mg | 41.5mg | +8.0mg | 0.58 (medium) |
| 총 수면 | 6.9h | 6.9h | -0.0h | trivial |
| 깊은수면% | 11.3% | 10.5% | -0.8%p | trivial |
| 수면 효율 | 94.2% | 94.0% | -0.2%p | trivial |
| WASO | 26.9min | 28.6min | +1.7min | trivial |
잔류 카페인은 실제로 +8mg 증가했지만(medium effect), 모든 수면 지표의 차이는 trivial (d < 0.2).
3. 분석 2: 피로 교란변수 가설
사용자 가설: "피곤한 날 커피를 더 마시고, 피곤하니까 잠도 잘 잔다"
3-1. 피로 지수(Fatigue Index) 구성
PCA PC1 (분산 설명 34.5%)을 사용한 합성 지수:
| 프록시 | PCA Loading |
|---|---|
| 전날 수면 부족 | 0.521 |
| 5일 누적 수면부채 | 0.585 |
| HRV 저하 | -0.005 |
| RHR 상승 | -0.473 |
| 전날 수면 효율 저하 | -0.404 |
검증: 전날 수면시간과 r=-0.683 (피로 지수가 높을수록 전날 수면이 짧았음).
3-2. 피로 → 카페인?
Fatigue → Daily Caffeine: r = 0.090, p = 0.70 — 유의하지 않음
피로해도 커피를 더 마시지 않는다. 카페인 섭취의 자기상관(ACF)이 lag 1~5 모두 0.14 미만으로, 커피 소비는 컨디션과 무관한 습관적 패턴이다.
3-3. Granger 인과 검정
| 검정 | F | p | 결과 |
|---|---|---|---|
| 카페인 → 수면? | 1.65 | 0.197 | 유의하지 않음 |
| 수면 → 카페인? | 0.36 | 0.701 | 유의하지 않음 |
양방향 모두 인과관계 없음. 두 변수는 독립적이다.
3-4. Baron-Kenny 매개 분석
| Path | 모델 | β | p |
|---|---|---|---|
| c | Sleep ~ Caffeine (총 효과) | -0.0010 | n.s. |
| a | Caffeine ~ Fatigue | 4.27 | 0.70 |
| b | Sleep ~ Fatigue | -0.0201 | n.s. |
| c' | Sleep ~ Caffeine + Fatigue (직접 효과) | -0.0010 | n.s. |
간접효과 Bootstrap 95% CI: [-1.41, 1.20] — 0을 포함하여 유의하지 않음.
3-5. 최종 인과 판정
Model A (카페인 → 수면 악화): 기각
Model B (피로 → 양쪽 교란): 기각
Model C (혼합): 기각
→ 결론: 카페인과 수면은 독립 변수
4. 분석 3: 수면 분절(자다 깨기)
4-1. 카페인 ↔ 수면 분절 상관
| 카페인 변수 | WASO | 깨어남 수 | 효율 | 분절지수 |
|---|---|---|---|---|
| 일일 카페인 (mg) | -0.09 | -0.04 | 0.08 | -0.02 |
| 마지막 커피 시각 | -0.07 | -0.06 | 0.10 | -0.11 |
| 오후 카페인 (mg) | -0.02 | -0.05 | 0.03 | -0.03 |
| 잔류 카페인 (mg) | 0.15 | 0.21 | -0.06 | 0.04 |
모든 상관이 |r| < 0.22로, 카페인은 수면 분절에도 유의미한 영향이 없다.
4-2. 수면 전반부 vs 후반부
카페인의 약리 효과가 있다면 취침 직후(전반부)에 더 강해야 한다.
| 잔류 카페인 ↔ | 전반부 | 후반부 |
|---|---|---|
| 깨어남 (min) | r=0.197 | r=-0.018 |
| 깊은수면 (min) | r=0.057 | r=-0.007 |
전반부에 미세하게 더 관련이 있지만, 0.20에도 미치지 못하는 수준.
4-3. 극단값 비교
| 구분 | WASO | 깨어남 | 효율 |
|---|---|---|---|
| 적게 마신 날 (147mg) | 29.7min | 7.9회 | 93.8% |
| 많이 마신 날 (301mg) | 24.5min | 7.5회 | 94.5% |
카페인을 2배 넘게 마신 날이 오히려 수면 분절이 적다.
5. 분석 4: 최적 수면 조건
5-1. 잘 자면 다음날 컨디션이 좋아지는가?
| 수면 지표 | → 다음날 HRV | → 다음날 RHR | → 다음날 걸음수 |
|---|---|---|---|
| 총 수면 | r=0.10 | r=0.13 | r=0.04 |
| 깊은수면% | r=-0.11 | r=-0.22 | r=-0.07 |
| 수면 효율 | r=-0.01 | r=-0.04 | r=-0.15 |
| 수면 품질 종합 | r=-0.02 | r=-0.06 | r=-0.12 |
유일한 약한 신호: 깊은수면이 많으면 다음날 RHR이 약간 낮음 (r=-0.22). HRV/걸음수와는 무관.
5-2. 최적 취침시간
취침시간대별 수면 품질
| 취침시간 | N | 총 수면 | 깊은수면 min | 깊은수면 % | WASO | 수면 효율 |
|---|---|---|---|---|---|---|
| ~21:30 | 5 | 8.8h | 54min | 10.3% | 43min | 92.4% |
| 21:30~22:30 | 23 | 8.2h | 46min | 9.4% | 41min | 92.4% |
| 22:30~23:00 | 18 | 7.7h | 42min | 9.2% | 38min | 92.5% |
| 23:00~23:30 | 18 | 6.9h | 47min | 11.5% | 27min | 94.1% |
| 23:30~00:00 | 14 | 6.9h | 44min | 10.7% | 27min | 94.1% |
| 00:00~00:30 | 13 | 6.4h | 46min | 12.1% | 25min | 94.0% |
| 00:30~01:00 | 11 | 6.3h | 39min | 10.5% | 22min | 94.6% |
| 01:00~ | 28 | 5.6h | 44min | 13.4% | 17min | 95.3% |
핵심 발견: 깊은 수면 절대량(min)은 취침 시각과 거의 무관하다 — 언제 자든 ~44-46분. 단 21시 이전에 자면 54min으로 증가.
종합 품질 최적: 22:00 전후 — 수면 8.2h + 깊은수면 46min의 밸런스.
5-3. 취침시간 외 수면 품질 결정 변수
다중회귀 결과 (표준화 β, 영향력 순)
깊은수면 분(min) 예측 (R²=0.135):
| 변수 | β | 해석 |
|---|---|---|
| 야간운동 (≥18시) | -0.232 | 가장 강한 부정적 영향 |
| 3일 수면부채 | +0.161 | 부채 높으면 보상적 증가 |
| 걸음수 | -0.131 | 과도한 활동 → 감소 |
| 주말 | -0.119 | 주말에 약간 감소 |
| 카페인 | -0.041 | 무관 |
깊은수면 비율(%) 예측 (R²=0.278):
| 변수 | β | 해석 |
|---|---|---|
| 취침 시각 | +0.415 | 늦게 잘수록 비율 증가 (시간 짧으니까) |
| 3일 수면부채 | +0.224 | homeostatic 보상 |
| 야간운동 | -0.191 | 깊은 수면 억제 |
| 카페인 | -0.068 | 무관 |
운동 영향 상세
| 운동 조건 | N | 깊은수면 min | 깊은수면% | 수면 품질 z |
|---|---|---|---|---|
| 운동 안 함 | 18 | 48min | 10.8% | +0.09 |
| 가벼운 운동 (≤60min) | 73 | 45min | 11.7% | +0.02 |
| 강한 운동 (>60min) | 39 | 42min | 10.1% | -0.07 |
| 운동 시간대 | N | 깊은수면 min | 수면 품질 z |
|---|---|---|---|
| 18시 이전 | 75 | 46min | +0.04 |
| 18시 이후 | 37 | 39min (-7min) | -0.13 |
6. 종합 권장사항
수면 최적화 레버 (영향력 순)
| 순위 | 변수 | 효과 | 근거 |
|---|---|---|---|
| 1 | 취침 시각 22:00 전후 | 수면시간 68.6% 설명 | 회귀 β=-0.801 |
| 2 | 운동은 18시 이전 | 깊은수면 +7min | β=-0.232 |
| 3 | 운동 강도 60분 이하 | 깊은수면 +6min | 그룹 비교 |
| 4 | 커피는 수면 관점에서 현재 패턴 유지 가능 | 수면에 직접 영향 없음 | 모든 수면 지표 |r| ≤ 0.22 (최강 r=0.21, small effect) |
| 5 | 수면 부채 시 일찍 자기 | 자연 보상 발생 | β=+0.224 |
⚠️ 카페인 권장사항 scope 제한 (2026-04-11): 위 #4 "커피 현재 패턴 유지"는 수면 outcome에만 해당합니다. 후속 caffeine-multidim.md 리포트는 아침 카페인이 일상 HRV(자율신경)에 약한 음의 연관(r=-0.215, dose-response 존재, 교란 통제 후 유지)을 보인다고 결론 내립니다. HRV 최적화가 목표라면, 첫 커피를 오후(가급적 10시 이후)로 늦추거나 줄이는 것이 effective signal로 지지되는 유일한 카페인 레버리지입니다. 효과 크기는 작지만(HRV ~2.8ms 감소, 본인 SD의 55%) 생리학적으로 타당합니다.
커피에 대해 (금단 예측 — 연구 기반)
현재 패턴을 유지해도 수면에 문제 없으나, 만약 금단 시:
- 1~2일: 두통, 졸음, 집중력 저하 (50% 확률)
- 3~5일: 증상 완화, 일시적 조기 취침
- 2~4주: 안정화, 깊은 수면 비율 11% → 13~16% 가능 (Weibel et al. 2021, Sleep)
- HRV/RHR 변화는 작을 것 (당신 데이터에서 카페인↔일상 HRV r=-0.17, caffeine-multidim.md §5 참조)
참고 문헌: Rogers et al. (2010) — 카페인의 "각성 효과"는 대부분 금단 증상의 해소. 2~3주 적응 후 동일 에너지 수준.
7. 분석 한계
- N=110: 중간 수준. 약한 효과(|r| < 0.15)는 검출력 부족 가능.
- 카페인 0mg 일 없음: 대조군 부재로 완전한 인과 추론 불가.
- Apple Watch 한계: EEG 기반이 아닌 가속도계+PPG 기반 수면 단계 추정.
- HRV 민감도: 수면 회복의 미세한 차이를 포착하기에 불충분할 수 있음.
- 자가 보고 없음: 주관적 피로, 기분, 각성 데이터 미포함.
- 음주 데이터 부족: 1건만 기록되어 교란 변수 통제 불가.
부록: 분석 방법론
| 단계 | 방법 | 목적 |
|---|---|---|
| v1 | Pearson 상관, 그룹 비교 | 탐색적 분석 |
| v2 | 약동학 모델(반감기 5h), 다중회귀, dose-response quartile | 교란 변수(취침 시각) 통제 |
| v3 | PCA 피로지수, Cross-correlation, Granger 인과, Baron-Kenny 매개 분석, Bootstrap 2000회 | 인과 방향 검증 |
| v4 | 수면 분절 분석, 전/후반부 차등 효과, 수면 품질 합성 점수 | 수면 미세구조 검증 |
| v5 | 30분 슬라이딩 윈도우, 다변수 수면 품질 회귀 | 최적 조건 탐색 |
도구: Bun + TypeScript (외부 통계 라이브러리 없이 자체 구현: OLS, F-test, PCA power iteration, Bootstrap, ACF/CCF)
<!-- charts:section:start -->📊 데이터 시각화
아래 차트들은
research/taeho-health/sleep-caffeine/charts.mjs가 raw Health Data Bridge 데이터를 직접 읽어 SVG로 생성한 것입니다. 본문 텍스트와 다소 다른 윈도우 / aggregation 을 사용할 수 있고, 본문의 정교한 통계 (Granger / PK / mediation 등) 결과를 시각적으로 보완하는 보조 자료입니다. 자세한 재생산 절차는data/README.md참고.
잠든 시각 × 평균 총 수면 시간
잠든 시각이 늦어질수록 평균 총 수면 시간이 짧아지는 inverse 관계가 보입니다. report.md §5의 "22시 부근이 sleep duration에 가장 유리하다" 결론을 시각화한 것입니다. 본문의 multivariate 회귀 (β=-0.801)를 단변량 그림으로 풀어 본 형태.
카페인 4분위 × 평균 총 수면
일일 카페인 섭취량을 4분위로 나눈 그룹별 평균 총 수면 시간. report.md §2-1의 "용량-반응 관계가 명확하지 않다"를 시각적으로 보여줍니다. Q1↔Q4 차이는 SD 범위 안이라 우연 가능성 농후.
카페인 변수 × 수면 지표 상관 매트릭스
카페인 6변수 × 수면 8지표의 Pearson 상관 매트릭스 (* = |t|>2 ≈ p<0.05). 총 카페인 mg과 잠든 시각의 약한 양의 상관 외에는 거의 모든 셀이 |r|<0.2 — "카페인은 수면 outcome에 약하게 영향을 준다"는 본문 결론과 부합. 단, n=113 데이터에서의 관찰일 뿐 인과 증명은 아님.
총 수면 예측 회귀 (표준화 β forest plot)
총 수면 시간을 예측하는 표준화 회귀 (4 predictors: 취침 시각 / 일일 카페인 / Active kcal / Steps). 취침 시각의 β가 압도적이고 다른 변수들은 거의 0에 가깝다는 본문 §2-2의 multivariate 결과를 시각화. (본 그림의 CI는 indicative이며 정식 OLS bootstrap이 아님 — 정밀한 추론은 본문 표 참조.)
<!-- charts:section:end -->