1 보고가 왜 설계만큼 중요한가
같은 자료·같은 통계 분석을 한 두 보고서가 있더라도, 무엇을 어떻게 보고했는가에 따라 독자의 해석이 갈린다. 보고 누락은 두 가지 비용을 만든다.
- 재현 불가 — 후속 연구가 같은 표본·같은 정의를 재구성할 수 없음.
- 메타분석 불가 — 다른 연구와 통합되지 못해 전체 문헌의 가치가 떨어짐.
이 두 비용이 누적된 결과가 1990 년대까지 만성화된 관찰 연구 보고의 부실이었다. 무작위 임상시험이 CONSORT 표준으로 보고를 정비한 직후, 같은 발상으로 관찰 연구의 보고 표준이 만들어졌다 — STROBE (Strengthening the Reporting of Observational Studies in Epidemiology).
관찰 연구(코호트·case-control·cross-sectional)의 보고 시 필수 포함 22 항목 체크리스트 (von Elm et al., 2007). RCT 의 CONSORT 와 같은 계열이며, 각 항목에 대한 이유(rationale)와 사례가 28 페이지 elaboration 문서로 별도 제공된다 (Vandenbroucke et al., 2007).
2 STROBE 22 항목 — 단계별 체크리스트
STROBE 22 항목 (관찰 연구 보고 표준)
│
├── Title/Abstract (1) : 설계명 명시 + 균형 잡힌 요약
│
├── Introduction
│ ├── Background/rationale (2): 과학적 배경
│ └── Objectives (3) : 사전 가설 명시
│
├── Methods
│ ├── Study design (4) : 설계 핵심 요소
│ ├── Setting (5) : 시·공간·기간
│ ├── Participants (6) : 적격 기준·표본 추출
│ ├── Variables (7) : 결과·노출·교란·효과 수정
│ ├── Data sources (8) : 측정 방법·도구
│ ├── Bias (9) : 편향 통제 시도
│ ├── Study size (10) : 표본 크기 산출
│ ├── Quantitative vars (11) : 양적 변수 처리
│ └── Statistical methods (12): 통계 방법·결측·민감도
│
├── Results
│ ├── Participants (13) : 흐름도, 단계별 인원
│ ├── Descriptive data (14) : 인구·노출·교란 기술
│ ├── Outcome data (15) : 결과 빈도·요약
│ ├── Main results (16) : 보정 전후 추정·CI
│ └── Other analyses (17) : 부분·상호작용·민감도
│
└── Discussion
├── Key results (18) : 핵심 결과 요약
├── Limitations (19) : 한계·편향 방향·크기
├── Interpretation (20) : 신중한 해석
├── Generalisability (21) : 외적 타당도
└── Funding (22) : 자금원·역할
2.1 항목별 직관 — 왜 각 항목이 필요한가
Title (1): 설계명(“cohort study”) 을 명시하지 않으면 독자가 메타분석에서 적절한 풀에 분류할 수 없다.
Setting (5): “2010~2015 년 미국 동부 3 개 종합병원” 같은 정보가 빠지면 결과의 일반화 가능성을 판단할 수 없다.
Participants (6): 적격 기준(eligibility) 이 모호하면 같은 코호트를 다시 짤 수 없다. 매칭 코호트라면 매칭 기준과 노출자/비노출자 수도 보고.
같은 “암 환자 코호트” 라도
- A 보고서: “암 환자 1,000 명 등록”
- B 보고서: “2018-01-01~2019-12-31 사이 진단된 stage I-III 유방암 환자 중, 진단 시점 기준 18~75 세, 임신·전이·이전 항암 치료 이력 없는 자 1,000 명. 진단 시점부터 5 년 추적.”
A 는 후속 연구가 재현 불가능한 ‘검은 상자’ 다. B 는 같은 표본을 다른 데이터로 재구성할 수 있다. 이 차이가 STROBE 의 가치다.
Bias (9): 어떤 편향이 있을 수 있는지 + 무엇을 어떻게 통제했는지 명시. “통제하지 않았다” 도 정직한 답.
Study size (10): “왜 1,000 명인가” — 사전 검정력 분석인가, 가용 표본인가, 비용 제약인가. 이유가 빠지면 검정력 부족 결과를 어떻게 해석할지 모른다.
Statistical methods (12): 결측 처리, 추적 손실 처리, 민감도 분석 모두 사전 계획이 보고되어야. 사후 결정으로 분석 전략이 바뀌었다면 그 사실도 보고.
Participants flow (13): 흐름도가 정수다.
적격성 평가: N=2,500
↓ (제외 N=800: 적격성 미달)
적격: N=1,700
↓ (제외 N=500: 동의 거부)
등록: N=1,200
↓ (제외 N=200: 추적 손실)
분석 포함: N=1,000
이 그림 한 장이 표본 자기선택 패턴을 한눈에 보여준다.
Main results (16): 보정 전(crude)과 보정 후(adjusted) 추정을 모두 보고. 어떤 교란을 보정했고 그 이유를 명시. 가능하면 RR 을 절대 위험으로 변환하여 NNT 같은 임상 해석 가능 형태로 제시.
Limitations (19): 한계와 더불어 편향의 방향과 크기까지. “남성 표본만 있어 여성 일반화 어려움” 으로 끝나면 안 됨 — “여성에게서는 효과가 더 클 가능성 시사 (왜냐하면 …)” 같은 방향 추정이 STROBE 의 요구.
Generalisability (21): 어떤 인구·환경에 결과를 옮길 수 있는가. 외적 타당도의 명시.
2.2 도입 10 년 후의 현실
STROBE 도입 10 년 후 평가에서, 고임팩트 일반 의학지의 cohort 보고도 STROBE 항목의 약 70% 만 충족 (Poorolajal et al., 2011). 전문 분과지 — 수부 외과 (Sorensen et al., 2013), 성형외과 (Agha et al., 2016), 신장학 (Rao et al., 2016), 피부과 (Bastuji-Garin et al., 2013) — 는 더 낮은 준수율.
원인: 많은 연구자가 STROBE 자체를 모른다. 학술지가 STROBE 체크리스트 제출을 투고 요건으로 강제하지 않으면 자발적 준수는 약하다.
2.3 개선 전략
| 주체 | 행동 |
|---|---|
| 저자 | STROBE 체크리스트를 작성 단계에서 사용 |
| 학술지 | 투고 요건으로 체크리스트 첨부 의무화 |
| 심사자 | STROBE 점검을 심사 일부로 |
| 교육 | 대학원 역학 과정에 STROBE 포함 |
이 다층 노력이 표준의 실효를 결정한다.
3 변형 1 — Before-After Studies (시계열)
같은 참여자를 개입 전후로 측정하여 비교하는 설계. 시계열(time series)의 일종이며, 코호트의 변형으로 분류된다 (Schulz & Grimes, 2019, Ch.4.7.1).
설계 흐름:
T0 측정 (개입 전) → 개입 적용 → T1 측정 (개입 후) → 차이 비교
직관적으로 가장 단순하고, 외부 비교군이 필요 없어 운영이 가벼워 보인다. 그러나 이 단순함의 대가가 다음 3 가지 함정이다.
3.1 함정 1 — Regression to the Mean (평균 회귀)
가설: 고혈압 환자(수축기 혈압 > 160 mmHg) 100 명을 등록하여 새 약 처방 후 1 개월 뒤 다시 측정한다고 하자.
측정 1 회의 무작위 변동이 존재하므로, 처음에 평균보다 높게 나온 사람들 중 상당수는 약과 무관하게도 다음 측정에서 평균에 가까워진다. 즉 측정값 자체가 “운 나쁘게 높았던” 일부를 포함한다.
결과: 약 효과가 0 이라도 평균이 떨어지는 것처럼 보인다. 이것이 평균 회귀(regression to the mean) 이다 (Cockrell Skinner et al., 2016).
3.1.1 직관 — 시험 점수 비유
100 명의 학생이 같은 시험을 두 번 본다고 하자. 첫 시험에서 상위 10% 의 점수만 본 뒤 두 번째 시험을 보면, 그 10% 의 평균 점수는 첫 시험보다 낮아진다 — 진짜 능력이 떨어진 것이 아니라, 첫 시험에서 운 좋게 잘한 부분이 두 번째에는 평균 쪽으로 이동한 것이다. 이 효과를 통제하지 않은 before-after 분석은 “두 번째 시험이 점수를 떨어뜨린다” 같은 가짜 인과를 만들어 낸다.
3.1.2 회피
| 전략 | 설명 |
|---|---|
| 외부 비교군 추가 | 같은 극단값으로 등록한 비처치군과 비교 |
| 다중 baseline 측정 | 등록 시점 측정을 여러 회 평균 → 측정 변동 흡수 |
| RCT 로 전환 | 무작위 배정으로 평균 회귀를 두 군에 동등 부여 |
3.2 함정 2 — Secular Trends (시간 추세)
폐렴 발생률은 겨울에 늘고 여름에 준다. 만약 새 백신 효과를 평가하는 before-after 가 9 월 측정 → 6 월 측정이라면, 백신 효과가 0 이라도 겨울 폭증이 끝나며 자연스레 발생률이 줄어드는 추세에 백신 효과가 묻힌다.
비슷한 외부 이벤트들 — 정부 정책 변화, 미디어 보도, 진단 기준 개정 — 모두 secular trend 의 원천이다.
3.2.1 회피
- 외부 비교군 (전국 평균 또는 같은 지역 비처치 인구) 추가.
- 여러 시점의 baseline 추세선 추출 후 추세에서 벗어난 잔여 효과만 처치 효과로.
3.3 함정 3 — Carryover Effect (잔류 효과)
여러 약을 순차 비교하는 cross-over 설계나, 처치 전 baseline 측정 시 이전 약의 잔류가 남아 있을 수 있다.
3.3.1 회피
- Washout period — 처치 사이에 충분한 시간 공백을 두어 잔류 농도를 0 으로 만듦.
- 약물 반감기에 따라 적정 washout 길이 산출.
3.4 IT 대응 — Before-After 의 실험 함정
A/B 테스트의 통제군이 없는 “기능 출시 전후 매출 비교” 가 같은 패턴이다. 모든 3 함정이 IT 에서도 그대로 발생한다.
| 함정 | 의학 사례 | IT 사례 |
|---|---|---|
| Regression to mean | 고혈압 환자 1 회 측정으로 등록 | 매출 급락 후 “회복 캠페인” 시작 |
| Secular trends | 계절 폐렴 추세 | 블랙프라이데이·명절 효과 |
| Carryover | 약물 잔류 농도 | 캠페인 잔류, 사용자 학습 효과 |
자세한 IT 분석은 전후 비교(Before-and-After)가 위험한 이유 참조.
4 변형 2 — Nested Case-Control Studies
대규모 코호트 안에서 결과 발생자(case)와 미발생자에서 무작위 표집한 대조군(control)에 대해서만 추가 측정을 수행하는 설계 (Schulz & Grimes, 2019, Ch.4.7.2).
설계 흐름:
Step 1: 코호트 등록 시 모든 참여자의 표본(혈청·DNA 등) 채취·동결.
Step 2: 추적 종료 후 결과 발생자(case) 식별.
Step 3: 미발생자에서 무작위 매칭(연령·성별 등)으로 control 선정.
Step 4: case + control 에서만 비싼 검사 수행.
Step 5: 노출과 결과의 연관 분석.
4.1 왜 이 설계가 필요한가
핵심 동기는 비싼 검사 비용이다. 정교한 혈액 검사·유전자 분석·영상 측정 등은 1 인당 비용이 크다. 10,000 명 코호트 전체에 적용하기 어렵다. 그러나 결과 발생자가 200 명이라면 200 + 매칭 control 200 = 400 명만 측정하면 된다 — 96% 의 비용 절감.
4.2 강점
| 강점 | 설명 |
|---|---|
| 시간 선후 보장 | 코호트 등록 시 표본 채취 → 노출이 결과 이전임이 자동 보장 |
| 비용 절감 | 비싼 측정을 case + control 에만 |
| Recall bias 회피 | 표본은 등록 시 수집 → 사후 회상 의존 없음 |
| 다중 결과 적용 가능 | 같은 코호트에서 여러 결과별로 nested CC 반복 가능 |
4.3 사례 — 미토콘드리아 DNA 와 전립선암
대규모 검진 시험 안에 nested case-control 을 설계 (Moore et al., 2017): 전립선암 발병 800 명 (case) + 매칭 비발병 800 명 (control) 의 말초혈 백혈구에서 미토콘드리아 DNA 추출. 전체 시험 등록자 수만 명 중 1,600 명만 측정하여 노출-결과 연관 검정.
4.4 다른 활용 사례
- 자궁 내 차원과 IUD 제거: 초음파로 측정한 자궁강 차원과 IUD 제거 사이 연관 (Liang et al., 2014).
- 폐기능과 폐암: spirometry 로 측정한 기도 폐쇄와 폐암 위험 (Maldonado et al., 2010).
전 세계의 많은 대규모 코호트가 혈액·DNA bank를 운영한다. Nested case-control 은 이 자산을 효율적으로 활용하는 분석 모듈이다. 새 가설(예: 새로 발견된 바이오마커)이 등장할 때마다 같은 표본에서 새 측정을 추가하여 결론을 도출할 수 있다.
4.5 약점
| 약점 | 설명 |
|---|---|
| Case 정의 의존 | 결과 분류가 부정확하면 case 군이 오염 |
| 매칭 변수 선정 | 매칭이 너무 강하면 노출-결과 연관 자체를 약화 (overmatching) |
| 코호트 의존성 | 대규모 코호트가 미리 존재해야 함 |
4.6 통계 분석
Nested case-control 의 분석은 conditional logistic regression 이 표준이다.
매칭된 case-control 쌍 또는 셋(strata) 안에서 odds ratio 를 추정하는 회귀.
\[ \log \frac{P(\text{case}) }{1 - P(\text{case})} \bigg|_{\text{stratum} \ s} = \beta_1 x_1 + \cdots + \beta_p x_p \]
각 stratum 별 baseline 발생률이 자유롭게 변하도록 하여 매칭 변수의 영향을 통제.
4.6.1 직관 — 매칭이 stratum 을 만든다
매칭은 case 1 명 + control k 명 의 작은 stratum 을 만든다. 각 stratum 안에서는 매칭 변수(연령·성별 등)가 거의 동일하므로 그 영향을 자동 통제한다. 조건부 우도(partial likelihood) 가 stratum 안의 노출 패턴만 사용하여 OR 을 추정한다.
4.7 일반 코호트 분석과의 차이
| 측면 | 일반 Cohort | Nested CC |
|---|---|---|
| 분모 | 전체 위험 인구 | Case + matched control |
| 효과 지표 | RR, HR, IR | OR (RR 근사) |
| 표본 효율 | 모든 사례 분석 | 비싼 측정만 sample |
| 검정력 | 사건 수 결정 | Case 수 결정 (control/case 비율도 영향) |
4.8 사례 코드 — 가상 nested CC 시뮬레이션
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
np.random.seed(42)
n_cohort = 10000
# 가상 노출 (혈중 바이오마커, 측정 안 됨)
biomarker = np.random.normal(0, 1, n_cohort)
# 결과: 바이오마커가 높을수록 위험 증가
prob_case = 1 / (1 + np.exp(-(-3 + 1.0 * biomarker)))
case = np.random.binomial(1, prob_case, n_cohort)
# 코호트 전체 측정은 비용 큼 — case + matched control 만 측정
case_idx = np.where(case == 1)[0]
n_cases = len(case_idx)
# Control: case 1 명당 4 명 매칭 (단순 random)
control_pool = np.where(case == 0)[0]
control_idx = np.random.choice(control_pool, size=n_cases * 4, replace=False)
# Nested CC 표본
sample_idx = np.concatenate([case_idx, control_idx])
df = pd.DataFrame({
"biomarker": biomarker[sample_idx],
"case": case[sample_idx],
})
# 로지스틱 회귀로 OR 추정
X = df[["biomarker"]].values
y = df["case"].values
clf = LogisticRegression()
clf.fit(X, y)
or_per_sd = np.exp(clf.coef_[0][0])
print(f"바이오마커 1 SD 증가당 OR ≈ {or_per_sd:.2f}")
print(f"전체 코호트 측정 시 비용 = {n_cohort}, nested CC = {len(sample_idx)}")
print(f"비용 절감 = {(1 - len(sample_idx)/n_cohort)*100:.1f}%")해석: nested CC 는 전체 코호트 측정 대비 비용을 대폭 절감하면서도 진성 OR 에 가까운 추정을 산출한다. 사례 비율이 1:4 일 때 검정력이 충분히 확보되며, 1:5 이상에서는 추가 검정력 이득이 적다.
4.9 IT 대응 — 어떻게 쓸 수 있을까
| 시나리오 | 대응 |
|---|---|
| 비싼 분석 (전체 사용자 가능 안 됨) | 결과 발생자 + 매칭 비발생자만 인터뷰·심층 로그 분석 |
| 인적 검토 자원 한정 | 사기 탐지에서 의심 거래 (case) + 정상 거래 (control) 매칭 후 인적 심층 검토 |
| 사용자 인터뷰 비용 | NPS 저하자 + 매칭 만족자만 1:1 인터뷰 |
비싼 측정을 모든 사용자에게 적용하지 않는 모든 IT 분석에서 nested CC 의 발상을 차용 가능하다.
5 결론 — 코호트 시리즈 마무리
코호트 연구의 5 편 시리즈가 여기서 끝난다. 핵심 메시지를 한 표로 압축한다.
| 글 | 주제 | 핵심 메시지 |
|---|---|---|
| B5 | 개관 | 노출 → 결과 방향이 코호트의 정체성 |
| B6 | 시간 방향 + 강점 | Concurrent/Retro/Ambi + 5 강점 |
| B7 | 생존 분석 + 약점 | KM/Cox PH + 4 약점 (selection, 희귀, 비용, loss) |
| B8 | 평가 + 추적 | 4 질문 + 차별 손실 회피 |
| B9 | 보고 + 변형 | STROBE + Before-After·Nested CC |
다음 묶음(WOO Ch.5) 은 같은 cohort 주제를 통계학자의 렌즈로 다시 본다 — Woodward 가 발생률·생명표·KM·Cox PH 를 더 깊은 수식과 함께 정리한다. Schulz 가 임상 의사의 시각이라면 Woodward 는 통계학자의 시각이다.
6 관련 주제
Phase B Schulz Ch.4 시리즈 (완성)
Phase B 다음 묶음 (Woodward Ch.5 — 통계 lens)
- 1111-11-11, WOO Ch.5 overview — 통계 lens
- 1111-11-11, 코호트 설계와 분석적 고려
- 1111-11-11, 생명표와 Kaplan-Meier 추정
- 1111-11-11, 생존 비교와 경쟁 위험
- 1111-11-11, 인-년 방법과 기간-코호트 분석
다른 카테고리