SIR 모델
SIR 모델 (SIR Model)
1. 개요
SIR 모델은 전염병의 확산 과정을 수학적으로 모델링하기 위해 인구를 세 가지 상태(Susceptible, Infectious, Recovered)로 구분하여 시간에 따른 변화를 분석하는 구획 모델(Compartmental Model)의 가장 기본적인 형태이다. 이 모델은 특정 인구 집단 내에서 감염병이 어떻게 전파되는지 시뮬레이션하며, 최종적으로 얼마나 많은 사람이 감염될 것인지(감염 규모), 감염자 수가 최대치에 도달하는 시점은 언제인지(정점 시기) 등의 핵심적인 역학적 질문에 답하는 것을 목적으로 한다.
2. 모델의 기본 구조
SIR 모델은 전체 인구($N$)를 감염 상태에 따라 다음과 같이 세 가지 그룹으로 분류한다.
2.1 상태 정의 및 특징
| 상태 | 명칭 | 정의 | 특징 |
|---|---|---|---|
| S | 감염 가능군 (Susceptible) | 아직 병원체에 감염되지 않았으나, 감염될 가능성이 있는 집단 | 감염자와 접촉 시 확률적으로 $I$ 상태로 전이됨 |
| I | 감염군 (Infectious) | 병원체에 감염되어 다른 사람에게 병을 전파할 수 있는 집단 | 일정 시간이 지나면 회복되거나 사망하여 $R$ 상태로 전이됨 |
| R | 회복/제거군 (Recovered/Removed) | 회복 후 면역을 획득했거나, 사망하여 더 이상 전파 가능성이 없는 집단 | 다시 $S$ 상태로 돌아가지 않는다고 가정함 (영구 면역) |
2.2 상태 전이 흐름도
인구는 다음과 같은 단방향 흐름을 따라 상태가 변화한다.
$$S \xrightarrow{\text{감염}} I \xrightarrow{\text{회복/제거}} R$$
- $S \to I$: 감염 가능자가 감염자와 접촉하여 병원체에 노출될 때 발생한다.
- $I \to R$: 감염자가 치료를 통해 회복되거나 사망하여 전염력을 상실할 때 발생한다.
3. 전제 조건 (Assumptions)
기본 SIR 모델이 성립하기 위해서는 다음과 같은 단순화된 가정이 필요하다.
- 폐쇄 집단 (Closed Population): 분석 기간 동안 출생, 자연사, 이민 등으로 인한 인구 변동이 없다고 가정한다. 즉, $S(t) + I(t) + R(t) = N$ (상수)이다.
- 균일한 혼합 (Homogeneous Mixing): 모든 개체는 동일한 확률로 서로 접촉하며, 특정 지역이나 집단에 치우치지 않고 무작위로 섞인다고 가정한다.
- 즉각적인 전염성: 감염된 즉시 타인에게 전파할 수 있는 능력을 갖춘다고 가정한다 (잠복기 무시).
- 영구 면역: 한 번 회복된 개체는 다시 감염되지 않는 완전한 면역력을 갖는다고 가정한다.
4. 수학적 원리와 미분 방정식
SIR 모델은 시간에 따른 각 집단의 인구수 변화를 세 개의 상미분 방정식(Ordinary Differential Equations, ODE)으로 표현한다.
4.1 지배 방정식
$$\frac{dS}{dt} = -\frac{\beta S I}{N} \quad \text{(감염 가능군의 감소율)}$$ $$\frac{dI}{dt} = \frac{\beta S I}{N} - \gamma I \quad \text{(신규 감염자 유입 및 회복자 유출에 따른 감염군 변화율)}$$ $$\frac{dR}{dt} = \gamma I \quad \text{(회복/제거군의 증가율)}$$
4.2 파라미터 설명
- $\beta$ (감염률, Transmission Rate): 감염자와 감염 가능자가 접촉했을 때 질병이 전파될 확률과 접촉 빈도의 곱이다. $\frac{\beta S I}{N}$ 항은 단위 시간당 $S$에서 $I$로 이동하는 인구수를 의미한다.
- $\gamma$ (회복률, Recovery Rate): 감염자가 회복되어 $R$ 상태로 전이되는 속도이다. $\frac{1}{\gamma}$은 평균 감염 기간(Infectious Period)을 의미한다. 예를 들어, 평균 감염 기간이 10일이라면 $\gamma = 0.1$이 된다.
4.3 Python 구현 예제
<a href="/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%B6%84%EC%84%9D/scipy" class="wiki-link">scipy</a> 라이브러리를 사용하여 SIR 모델을 시뮬레이션하는 기본 코드이다.
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# SIR 모델 미분 방정식 정의
def sir_model(y, t, N, beta, gamma):
S, I, R = y
dSdt = -beta * S * I / N
dIdt = beta * S * I / N - gamma * I
dRdt = gamma * I
return [dSdt, dIdt, dRdt]
# 초기 조건 및 파라미터
N = 1000 # 전체 인구
I0 = 1 # 초기 감염자 수
R0 = 0 # 초기 회복자 수
S0 = N - I0 - R0 # 초기 감염 가능자 수
beta = 0.3 # 감염률
gamma = 0.1 # 회복률
days = 160 # 시뮬레이션 기간(일 단위)
t = np.linspace(0, days, days)
# 미분 방정식 풀이
solution = odeint(sir_model, [S0, I0, R0], t, args=(N, beta, gamma))
S, I, R = solution.T
# 결과 시각화
plt.figure(figsize=(10, 6))
plt.plot(t, S, label='Susceptible')
plt.plot(t, I, label='Infectious')
plt.plot(t, R, label='Recovered')
plt.title('SIR Model Simulation')
plt.xlabel('Days')
plt.ylabel('Population')
plt.legend()
plt.grid(True)
plt.show()
5. 핵심 지표: 기초 재생산 수 ($R_0$)
기초 재생산 수(Basic Reproduction Number, $R_0$)는 모든 인구가 감염 가능 상태($S \approx N$)일 때, 한 명의 감염자가 감염 가능 기간 동안 직접 감염시키는 평균 인원수를 의미한다.
5.1 계산식
$$R_0 = \frac{\beta}{\gamma}$$
5.2 임계점 원리와 유행 여부 판정 기준
$R_0$ 값은 전염병의 확산 여부를 결정하는 결정적인 임계값 역할을 한다.
- $R_0 > 1$: $\frac{dI}{dt} > 0$이 되어 감염자 수가 기하급수적으로 증가하며 유행(Epidemic)이 발생한다. $R_0$ 값이 클수록 감염 정점(Peak)이 빠르게 나타나고 정점의 높이가 높아진다.
- $R_0 < 1$: $\frac{dI}{dt} < 0$이 되어 새로운 감염자 발생보다 회복자 발생이 더 많으므로, 질병은 자연스럽게 소멸한다.
- $R_0 = 1$: 감염자 수가 증가하지도 감소하지도 않는 임계 상태이며, 유행이 확산되지 않는 경계점이다.
| $R_0$ 값 | 감염 곡선(I)의 형태 | 결과 |
|---|---|---|
| $R_0 \ll 1$ | 급격한 하강 곡선 | 즉각적인 소멸 |
| $R_0 \approx 1$ | 완만한 하강 또는 유지 | 낮은 수준의 확산 후 소멸 |
| $R_0 > 1$ | 종 모양의 급격한 상승 후 하강 | 대규모 유행 발생 |
6. 모델의 한계 및 확장 모델
기본 SIR 모델은 단순하여 계산이 빠르지만, 실제 복잡한 전염병 양상을 모두 반영하지 못하는 한계가 있다.
6.1 기본 모델의 한계
- 잠복기 무시: 감염 직후 바로 전파된다고 가정하지만, 실제로는 증상 발현 전 잠복기가 존재한다.
- 균일 접촉 가정: 실제 인구는 나이, 지역, 사회적 관계에 따라 접촉 빈도가 다르다.
- 면역 상실: 시간이 지나 면역력이 떨어져 다시 감염되는 경우를 반영하지 못한다.
6.2 확장 모델과의 차이점
기본 SIR 모델의 한계를 극복하기 위해 상태 변수를 추가하거나 전이 경로를 변경한 확장 모델들이 사용된다.
| 모델 | 추가/변경 사항 | 특징 |
|---|---|---|
| SEIR | E (Exposed, 노출군) 추가 | 잠복기(Latent Period)를 반영하기 위해 노출군(Exposed) 단계 추가 |
| SIS | R $\to$ S 전이 허용 | 회복 후 면역이 생기지 않아 다시 감염 가능 (예: 감기) |
| SIRS | R $\to$ S (시간 지연) | 면역이 일정 기간 유지되다가 점차 사라지는 경우 반영 |
| SEIRS | E 추가 + R $\to$ S | 잠복기와 면역 상실을 모두 고려한 복합 모델 |
7. 실제 적용 및 활용 사례
SIR 모델은 공중보건 정책을 수립하는 데 핵심적인 근거를 제공한다. 특히 감염률 $\beta$를 조절하여 전염병의 피해를 최소화하는 전략이 중요하다.
7.1 커브 플래트닝 (Curve Flattening)
커브 플래트닝이란 감염자 수의 정점을 낮추고 그 시기를 뒤로 늦추는 전략이다. 이는 의료 시스템의 수용 가능 용량(Healthcare Capacity)을 초과하여 의료 붕괴가 일어나는 것을 막기 위함이다.
- 사회적 거리두기 및 마스크 착용: 접촉 빈도와 전파 확률을 낮추어 $\beta$ 값을 감소시킨다. 결과적으로 $R_0$를 낮추어 감염 곡선의 기울기를 완만하게 만든다.
- 백신 접종: 감염 가능군($S$)의 인구를 강제로 회복/면역군($R$)으로 이동시킨다. 이는 $S$의 크기를 줄여 $\frac{\beta S I}{N}$ 값을 낮춤으로써 집단 면역(Herd Immunity) 상태에 도달하게 한다.
이러한 분석을 통해 정부는 락다운(Lockdown)의 강도나 백신 접종 목표 비율을 설정하는 등 데이터 기반의 방역 정책을 시행할 수 있다.
이 문서는 AI 모델(gemma-4-31b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.