در این مثال، نحوه استفاده از NumPy برای شبیه سازی انتشار ویروس در یک جمعیت را بررسی می کنیم.
فرض:
- ویروس با نرخ ثابتی بین افراد سرایت می کند.
- افراد آلوده برای مدت مشخصی مسری هستند و سپس بهبود می یابند.
- نرخ بهبودی ثابت است.
هدف:
- شبیه سازی تعداد افراد آلوده، بهبود یافته و در معرض خطر در طول زمان
- نمایش منحنی اپیدمی (تعداد افراد آلوده در هر زمان)
مراحل:
۱. تعریف پارامترها:
population_size
: اندازه جمعیتinfection_rate
: نرخ سرایت ویروس (احتمال ابتلا به ویروس در تماس با فرد آلوده)recovery_rate
: نرخ بهبودی (احتمال بهبودی در هر روز)simulation_days
: تعداد روزهای شبیه سازی
Python
import numpy as np
population_size = ۱۰۰۰۰
infection_rate = ۰.۰۵
recovery_rate = ۰.۰۲
simulation_days = ۳۶۵
۲. ایجاد آرایه ها:
infected
: تعداد افراد آلوده در هر روزrecovered
: تعداد افراد بهبود یافته در هر روزsusceptible
: تعداد افراد در معرض خطر ابتلا در هر روز
Python
infected = np.zeros(simulation_days)
recovered = np.zeros(simulation_days)
susceptible = np.ones(simulation_days) * population_size
۳. شبیه سازی:
- یک فرد در روز اول به طور تصادفی آلوده می شود.
- در هر روز، برای هر فرد:
- اگر فرد آلوده است:
- با احتمال
recovery_rate
بهبود می یابد. - با احتمال
۱ - recovery_rate
مسری باقی می ماند.
- با احتمال
- اگر فرد در معرض خطر است:
- با احتمال
infection_rate * susceptible[t] / population_size
آلوده می شود.
- با احتمال
- اگر فرد آلوده است:
Python
# آلوده کردن یک فرد به طور تصادفی در روز اول
infected[۰] = ۱
for t in range(۱, simulation_days):
# به روز رسانی وضعیت افراد آلوده
for i in range(int(infected[t])):
if np.random.rand() < recovery_rate:
recovered[t] += ۱
infected[t] -= ۱
else:
infected[t] += ۱
# به روز رسانی وضعیت افراد در معرض خطر
new_infections = np.random.binomial(population_size, infection_rate * susceptible[t] / population_size)
infected[t] += new_infections
susceptible[t] -= new_infections
۴. محاسبه شاخص های اپیدمی:
active_cases
: تعداد افراد آلوده یا مسری در هر روز
Python
active_cases = infected + susceptible - recovered
۵. نمایش منحنی اپیدمی:
- از
matplotlib
برای رسم نمودار تعداد افراد آلوده، بهبود یافته و در معرض خطر در طول زمان استفاده کنید.
Python
import matplotlib.pyplot as plt
plt.figure(figsize=(۱۲, ۶))
plt.plot(infected, label='Infected')
plt.plot(recovered, label='Recovered')
plt.plot(active_cases, label='Active Cases')
plt.plot(susceptible, label='Susceptible')
plt.xlabel('Days')
plt.ylabel('Population')
plt.title('Epidemic Simulation')
plt.legend()
plt.grid(True)
plt.show()
این مثال نشان می دهد که چگونه می توان از NumPy برای شبیه سازی مدل های اپیدمیولوژیک ساده و تجزیه و تحلیل داده های مربوط به انتشار بیماری ها استفاده کرد.
نکات:
- می توانید مدل را با اضافه کردن پارامترهای بیشتر مانند نرخ مرگ و میر، اقدامات پیشگیرانه و مداخلات درمانی پیچیده تر کنید.
- می توانید از NumPy و سایر کتابخانه های پایتون مانند
pandas
وseaborn
برای تجزیه و تحلیل و نمایش داده های شبیه سازی شده به رو