코호트 보고 표준(STROBE)과 변형 설계 — Before-After·Nested Case-Control

Schulz & Grimes Ch.4.6~4.7 — Reporting & Variations

코호트 보고 표준 STROBE 22 항목의 구조와 의미를 풀어 정리하고, 코호트의 두 가지 변형(Before-After 시계열·Nested Case-Control)의 설계·강약·함정을 반사실 시나리오와 코드 예시로 풍부하게 보강한다. 각 함정의 IT 대응을 함께 다룬다.

Experimentation
Epidemiology
저자

Kwangmin Kim

공개

2026년 05월 08일

1 보고가 왜 설계만큼 중요한가

같은 자료·같은 통계 분석을 한 두 보고서가 있더라도, 무엇을 어떻게 보고했는가에 따라 독자의 해석이 갈린다. 보고 누락은 두 가지 비용을 만든다.

  1. 재현 불가 — 후속 연구가 같은 표본·같은 정의를 재구성할 수 없음.
  2. 메타분석 불가 — 다른 연구와 통합되지 못해 전체 문헌의 가치가 떨어짐.

이 두 비용이 누적된 결과가 1990 년대까지 만성화된 관찰 연구 보고의 부실이었다. 무작위 임상시험이 CONSORT 표준으로 보고를 정비한 직후, 같은 발상으로 관찰 연구의 보고 표준이 만들어졌다 — STROBE (Strengthening the Reporting of Observational Studies in Epidemiology).

정의: STROBE Statement

관찰 연구(코호트·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) 이 모호하면 같은 코호트를 다시 짤 수 없다. 매칭 코호트라면 매칭 기준과 노출자/비노출자 수도 보고.

직관: STROBE 항목 6 의 정밀도

같은 “암 환자 코호트” 라도

  • 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 (시계열)

정의: Before-After Study

같은 참여자를 개입 전후로 측정하여 비교하는 설계. 시계열(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.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

정의: Nested Case-Control

대규모 코호트 안에서 결과 발생자(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 이 표준이다.

정의: 조건부 로지스틱 회귀 (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)

다른 카테고리

Subscribe

Enjoy this blog? Get notified of new posts by email: