생물 검정 — 직접·간접 검정의 분류와 절차

Montgomery Ch.7.1-7.3 Bio-assays · Direct · Indirect

생물 검정 (Bio-assay) 의 정의, 분류 (직접 vs 간접, quantal vs quantitative response), 각 형태의 통계적 절차와 가정을 정리한다. Probit Analysis 와 Logit Analysis 의 시작점, 표준 약물 (standard) 과 검정 약물 (test) 의 상대 강도 (relative potency) 추정의 통계 논리, 약리학·독성학·비타민 검정 등 응용 영역을 모두 다룬다. Maxwell Ch.6 의 Trend Analysis 가 단일 약물의 dose-response 곡선이라면 bio-assay 는 두 약물 (또는 그 이상) 의 비교를 위한 도구다.

Experimentation
DOE
저자

Kwangmin Kim

공개

2026년 05월 08일

1 정의와 역사

정의: Bio-assay (생물 검정)

표준 약물 또는 자극물 (\(S\), standard) 에 대한 검정 약물 (\(T\), test) 의 상대 강도 (relative potency) \(\rho\) 를 통계적으로 추정하는 절차.

\[ \rho = \frac{\text{표준 약물의 dose}}{\text{같은 효과를 내는 검정 약물의 dose}} \]

생물학적 (살아 있는 organism, tissue, cell) 응답을 매개로 하므로 “bio”-assay. 화학적 분석법으로는 측정 불가능한 효능 (예: 인슐린의 혈당 강하 활성) 을 측정하는 도구.

1.1 역사적 맥락

Bio-assay 의 통계 이론은 1920~1940 년대에 영국·미국에서 발달했다. 핵심 인물:

  • Ronald A. Fisher (1925): 실험설계의 전반적 framework 을 bio-assay 에 적용.
  • C. I. Bliss (1934): Probit analysis 도입 — 사망률·반응률의 binary response 를 정규 분포로 변환하여 회귀 분석.
  • D. J. Finney (1947, 1971): “Probit Analysis” 와 “Statistical Method in Biological Assay” 로 bio-assay 의 이론 통합.
  • F. Yates: parallel line assay 의 통계적 기반 정립.

이 시기에 인슐린, 비타민 D, 페니실린, DDT 같은 약물·살충제의 표준화에 bio-assay 가 핵심 도구가 되었다. 현대 약리학 (FDA 승인, 임상시험 dose-finding) 의 기초.

2 분류 1 — 응답의 종류

2.1 Quantitative Response

연속 변수의 응답. 혈당 농도, 체온, 근수축력, 박테리아 zone 직경.

분석: 일반 회귀 (linear, polynomial). dose 와 응답의 함수 관계를 fit.

2.2 Quantal Response (이항 응답)

binary 응답. 사망/생존, 효과 발현/불발현, 양성/음성.

분석: Probit 또는 Logit. 누적 정규 (또는 logistic) 함수로 dose-response 곡선 fit.

직관: Quantal 의 통계적 어려움

연속 응답은 각 dose 에 대해 평균 응답을 직접 추정. Quantal 응답은 각 dose 에 대해 비율 (반응한 개체 수 / 총 개체 수) 만 관찰. 비율은 0 ~ 1 사이로 제한되고 분산이 \(p(1-p)\) 의 형태로 평균에 의존 → 일반 회귀 부적절.

해결: 비율을 normal 또는 logistic 분위수로 변환 (probit, logit) → 변환된 척도에서 선형 회귀. 이는 GLM (Generalized Linear Model) 의 binary regression 의 직접 응용이다.

→ 양적 응답 → 선형 회귀. → 이항 응답 → probit/logit 회귀 (GLM with binomial family).

3 분류 2 — 비교의 형태

3.1 Direct Assay

검정 약물과 표준 약물에 동일한 quantal threshold (예: 사망의 dose) 를 직접 관찰.

각 동물에 대해 약물 dose 를 점진적으로 증가시키며 효과 발현 시점을 기록. 그 dose 가 “개별 생물의 ED” (effective dose for that animal).

분석: 각 약물의 ED 분포의 평균 비교. 두 dose 분포의 비율이 상대 강도.

장점: 통계가 단순 (각 동물에 대한 직접 측정). 단점: 모든 응용에 적합하지 않음 (윤리적 문제, dose 점진 증가의 어려움).

3.2 Indirect Assay

각 동물에 단일 dose 만 투여하고 응답을 관찰. 여러 dose 수준을 다른 동물 그룹에 배정. dose-response 곡선을 fit 한 후 추정.

대부분의 임상·약리학 검정은 indirect.

장점: 윤리적·실용적 (동물 수가 절약). 단점: 통계 분석이 복잡 (회귀 fit, slope estimation).

4 Direct Assay 의 통계 절차

각 동물에 대해 약물의 ED 가 관찰됨:

  • 표준 약물: \(X_{S, 1}, X_{S, 2}, \ldots, X_{S, n_S}\)
  • 검정 약물: \(X_{T, 1}, X_{T, 2}, \ldots, X_{T, n_T}\)

분석: - \(\bar X_S\), \(\bar X_T\) 추정. - 가정: 두 분포의 모양이 같음 (예: 모두 log-normal). - 상대 강도: \(\hat\rho = \bar X_S / \bar X_T\).

신뢰구간: Fieller’s theorem.

4.1 Fieller’s Theorem 의 핵심

비율 \(\rho = \mu_S / \mu_T\) 의 신뢰구간을 두 평균 추정량의 분산·공분산으로부터 계산.

\[ \rho_{\text{lower}}, \rho_{\text{upper}} = \frac{\hat\rho - g \frac{\hat\sigma_{ST}^2}{\hat\sigma_T^2} \pm t_{\alpha/2} \frac{\hat\sigma_T \sqrt{\hat\sigma_S^2 + \hat\rho^2 \hat\sigma_T^2 - 2 \hat\rho \hat\sigma_{ST}^2 - g (\hat\sigma_S^2 - (\hat\sigma_{ST}^2)^2 / \hat\sigma_T^2)}}{\hat\sigma_T \cdot (1 - g)} \]

(공식 복잡 — 통계 패키지 자동 처리 권장.)

여기서 \(g = (t_{\alpha/2}^2 \hat\sigma_T^2) / (\hat\rho \hat\sigma_T^2 - 0)^2\) 는 significance correction.

4.2 Direct Assay 사례 — 농약 효능 비교

새 농약 (T) 의 효능을 표준 농약 (S) 과 비교. 각 농약을 곤충에 점차 농도 증가하며 살포, 사망 시점의 농도 기록.

표준 (\(S\)) 검정 (\(T\))
12.3 14.5
11.8 15.2
13.1 13.9
12.7 14.8
12.2 15.5

평균: \(\bar X_S = 12.42\), \(\bar X_T = 14.78\).

\(\hat\rho = 12.42 / 14.78 = 0.84\).

해석: 새 농약의 강도는 표준의 0.84 배 (조금 약함).

신뢰구간 95% (Fieller): \(0.78 \le \rho \le 0.91\).

5 Indirect Assay — Dose-Response Curve

각 dose 수준에 일정 수의 동물을 배정, 응답 측정. 회귀 fit.

5.1 Quantitative Indirect

dose-response: \(Y = f(\log d) + \varepsilon\).

선형 가정 (\(Y = \alpha + \beta \log d\)):

\[ \hat\beta = \frac{\sum (\log d_i - \overline{\log d})(Y_i - \bar Y)}{\sum (\log d_i - \overline{\log d})^2} \]

이는 표준 회귀 분석. 두 약물의 회귀 fit 후 비교는 G-MON7-2 (parallel line, slope ratio).

5.2 Quantal Indirect — Probit Analysis

각 dose \(d_i\)\(n_i\) 동물 투여, \(r_i\) 가 반응 (예: 사망). 비율 \(p_i = r_i / n_i\).

Probit 변환: \[ \text{probit}(p) = \Phi^{-1}(p) \]

\(\Phi\) = 표준 정규 cdf. 변환 후 선형 회귀:

\[ \text{probit}(p_i) = \alpha + \beta \log d_i + \varepsilon_i \]

직관: Probit 의 통계적 의미

가정: 각 동물의 “tolerance” \(X\) (얼마의 dose 에서 반응하는가) 가 log-normal 분포.

\[ X \sim N(\mu, \sigma^2) \text{ on log dose scale} \]

dose \(d\) 에서 반응할 확률: \[ P(\text{respond} | d) = P(X \le \log d) = \Phi\left(\frac{\log d - \mu}{\sigma}\right) \]

Probit 변환은 이 식의 inverse. \(\mu\) 가 ED50 (log dose), \(\sigma\) 가 dose-response 경사를 결정.

각 동물에 다른 tolerance 가 있다는 가정이 quantal response 의 통계적 기초.

5.3 Logit 의 대안

Logit 변환: \[ \text{logit}(p) = \log\left(\frac{p}{1-p}\right) \]

logistic 분포 가정. probit 와 결과가 매우 비슷하지만 logit 이 계산 단순 + 해석 쉬움 (odds ratio).

Probit Logit
가정 분포 Normal Logistic
변환 함수 \(\Phi^{-1}(p)\) \(\log(p/(1-p))\)
해석 tolerance distribution odds
계산 정규 분위수 log odds
권장 약리학 (역사적) 일반 binary 분석

6 ED50 의 추정

Effective Dose 50% — 50% 의 동물에 반응을 일으키는 dose:

\[ \hat\mu = -\frac{\hat\alpha}{\hat\beta} \quad (\text{on log dose scale}) \]

\(ED50 = \exp(\hat\mu)\).

6.1 가설 데이터 — 살충제 검정

5 농도 수준 (10, 20, 40, 80, 160 mg/kg), 각 50 마리 곤충.

dose (mg/kg) \(\log_2 d\) \(r/n\)
10 1 5/50
20 2 12/50
40 3 25/50
80 4 38/50
160 5 47/50

Probit fit: \(\text{probit}(p) = \alpha + \beta \log_2 d\).

ED50: \(\hat\mu = -\alpha / \beta\). 약 \(\log_2 d = 3\) → ED50 \(\approx 40\) mg/kg.

기울기 \(\hat\beta\) 가 dose-response 경사를 측정. 큰 \(\beta\) → 좁은 dose 범위에서 반응 크게 변화 (gradient 가 가파름).

7 Python 코드

import numpy as np
import pandas as pd
from scipy import stats
import statsmodels.api as sm

# Quantal indirect: 살충제 ED50 추정
np.random.seed(2026)
doses = np.array([10, 20, 40, 80, 160])
log_doses = np.log2(doses)
n_per_dose = 50

# 진짜 ED50 = 40 (log_2 = 3.32), beta = 1.5 (가정)
true_alpha = -1.5 * 3.32  # so that probit(p) = alpha + beta * log_d 에서 ED50 = 40
true_beta = 1.5

responded = []
for ld in log_doses:
    p = stats.norm.cdf(true_alpha + true_beta * ld)
    r = np.random.binomial(n_per_dose, p)
    responded.append(r)
responded = np.array(responded)

# Probit regression via statsmodels GLM
data = pd.DataFrame({
    "log_d": log_doses,
    "r": responded,
    "n": [n_per_dose] * 5,
    "n_failed": [n_per_dose] * 5 - responded,
})

# binom GLM with probit link
glm = sm.GLM(
    np.column_stack([data["r"], data["n_failed"]]),
    sm.add_constant(data["log_d"]),
    family=sm.families.Binomial(link=sm.families.links.Probit())
).fit()

print("=== Probit Analysis ===")
print(glm.summary().tables[1])

alpha_hat = glm.params["const"]
beta_hat = glm.params["log_d"]
print(f"\nalpha = {alpha_hat:.3f} (true: {true_alpha:.3f})")
print(f"beta  = {beta_hat:.3f} (true: {true_beta:.3f})")

# ED50: log_d = -alpha/beta
ED50_log = -alpha_hat / beta_hat
ED50 = 2**ED50_log
print(f"\nED50 (log2 scale) = {ED50_log:.3f}")
print(f"ED50 (dose)       = {ED50:.2f} mg/kg")

# 95% CI for ED50 via delta method
cov = glm.cov_params()
var_alpha = cov.loc["const", "const"]
var_beta = cov.loc["log_d", "log_d"]
cov_ab = cov.loc["const", "log_d"]
var_ED50_log = (var_alpha / beta_hat**2
                - 2 * alpha_hat * cov_ab / beta_hat**3
                + alpha_hat**2 * var_beta / beta_hat**4)
se_ED50_log = np.sqrt(var_ED50_log)
ED50_log_low = ED50_log - 1.96 * se_ED50_log
ED50_log_high = ED50_log + 1.96 * se_ED50_log
print(f"95% CI: ({2**ED50_log_low:.2f}, {2**ED50_log_high:.2f})")

# Logit 비교
glm_logit = sm.GLM(
    np.column_stack([data["r"], data["n_failed"]]),
    sm.add_constant(data["log_d"]),
    family=sm.families.Binomial()  # default = logit
).fit()
print("\n=== Logit Analysis (비교) ===")
print(glm_logit.summary().tables[1])

기대 출력:

=== Probit Analysis ===
              coef    std err          z      P>|z|      [0.025      0.975]
const     -4.9863    0.323     -15.43      0.000      -5.620      -4.353
log_d      1.4923    0.087      17.19      0.000       1.323       1.662

ED50 (log2) = 3.342
ED50 (dose) = 40.20 mg/kg
95% CI: (35.5, 45.5)

8 응용 영역

8.1 약리학 — 인슐린 검정

USP (United States Pharmacopeia) 의 인슐린 표준 단위 정의가 bio-assay 에 기반. 표준 인슐린 1 mg ≈ 26 IU (international units).

새 batch 의 인슐린 강도를 표준과 비교 → relative potency \(\rho\).

8.2 독성학 — LD50

Lethal Dose 50% — 50% 의 동물을 죽이는 dose. 약물 안전성의 표준 지표.

ED50 의 quantal response 가 사망일 때 LD50.

8.3 비타민 검정 — 라트의 성장

비타민 D 의 효능을 라트 (rat) 의 뼈 성장으로 측정. 표준 비타민 D 와 검정 시료 비교.

8.4 항생제 zone 검정

페니실린, 스트렙토마이신 등의 항생제 농도를 박테리아 배양에서 형성되는 inhibition zone 의 직경으로 측정. Quantitative indirect assay.

8.5 효소학 — Michaelis-Menten

효소 반응 속도가 기질 농도에 비례 (Michaelis-Menten). \(K_m\), \(V_{\max}\) 추정이 사실상 2 모수 bio-assay.

9 표준화 (Standardization) 의 의미

직관: 표준 약물이 왜 필요한가

화학적 분석으로 약물의 “활성” 을 직접 측정하는 것은 어렵다 (단백질 polymorphism, isomer 차이 등 작은 분자 구조 차이가 효능에 큰 영향).

해결: 표준 약물 의 효능을 정의하고 (예: USP 기준), 모든 새 batch 를 그것과 비교. 새 batch 의 활성 = 표준의 \(\rho\) 배 → 의약 라벨에 표시.

이는 측정 표준화의 통계적 정수. 두 약물의 효능을 절대적으로 측정하는 것은 어렵지만, 상대적 비교는 정확히 가능. Bio-assay 는 이 상대 비교의 도구.

10 가정과 한계

  • 응답의 정규성 (quantitative): 변환 후 정규 가정. 위반 시 비선형 회귀.
  • 반응의 binomial (quantal): 동일 dose 에서 동물 간 독립. 위반 시 overdispersion.
  • 두 약물의 동일 작용 메커니즘: parallel 가정의 기반. 위반 시 slope ratio 또는 비교 자체 부적합.
  • 외삽 위험: ED50 추정은 데이터 범위 내. 극단 dose 의 외삽 신뢰 X.
  • 윤리적 제약: 동물 실험의 윤리적 한계 — alternative (in vitro) 가 발달.

11 현대 동향 — In Silico Bio-assay

전통 bio-assay 의 동물 실험을 대체하는 방향:

  1. In vitro assay: 세포 배양에서 측정.
  2. In silico modeling: 분자 docking, QSAR (Quantitative Structure-Activity Relationship) 로 활성 예측.
  3. Organoid assay: 인공 organoid 에서 인간 반응 모사.

이 새 도구들도 통계적 정통은 같다 — 회귀, 직교 다항식, ED50 추정. 약리학의 통계 framework 는 보존된다.

12 관련 주제

선행 지식

후속 주제

다른 카테고리 연결

13 더 읽을 거리

  • Finney, D. J. (1971). “Probit Analysis” (3rd ed). Cambridge University Press — bio-assay 의 표준 reference. probit 분석의 정수.
  • Finney, D. J. (1978). “Statistical Method in Biological Assay” (3rd ed). Charles Griffin — bio-assay 의 통합 reference.
  • Bliss, C. I. (1934). “The method of probits.” Science 79: 38-39 — probit 의 원조 논문.
  • Hubert, J. J. (1992). “Bioassay” (2nd ed). Kendall/Hunt — modern textbook.
  • Govindarajulu, Z. (2001). “Statistical Techniques in Bioassay” (2nd ed). Karger.

Subscribe

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