علوم داده

مدل سازی انتشار ویروس با NumPy

در این مثال، نحوه استفاده از NumPy برای شبیه سازی انتشار ویروس در یک جمعیت را بررسی می کنیم.

فرض:

  • ویروس با نرخ ثابتی بین افراد سرایت می کند.
  • افراد آلوده برای مدت مشخصی مسری هستند و سپس بهبود می یابند.
  • نرخ بهبودی ثابت است.

هدف:

  • شبیه سازی تعداد افراد آلوده، بهبود یافته و در معرض خطر در طول زمان
  • نمایش منحنی اپیدمی (تعداد افراد آلوده در هر زمان)

مراحل:

1. تعریف پارامترها:

  • population_size: اندازه جمعیت
  • infection_rate: نرخ سرایت ویروس (احتمال ابتلا به ویروس در تماس با فرد آلوده)
  • recovery_rate: نرخ بهبودی (احتمال بهبودی در هر روز)
  • simulation_days: تعداد روزهای شبیه سازی
Python
import numpy as np

population_size = 10000
infection_rate = 0.05
recovery_rate = 0.02
simulation_days = 365

2. ایجاد آرایه ها:

  • infected: تعداد افراد آلوده در هر روز
  • recovered: تعداد افراد بهبود یافته در هر روز
  • susceptible: تعداد افراد در معرض خطر ابتلا در هر روز
Python
infected = np.zeros(simulation_days)
recovered = np.zeros(simulation_days)
susceptible = np.ones(simulation_days) * population_size

3. شبیه سازی:

  • یک فرد در روز اول به طور تصادفی آلوده می شود.
  • در هر روز، برای هر فرد:
    • اگر فرد آلوده است:
      • با احتمال recovery_rate بهبود می یابد.
      • با احتمال 1 - recovery_rate مسری باقی می ماند.
    • اگر فرد در معرض خطر است:
      • با احتمال infection_rate * susceptible[t] / population_size آلوده می شود.
Python
# آلوده کردن یک فرد به طور تصادفی در روز اول
infected[0] = 1

for t in range(1, simulation_days):
    # به روز رسانی وضعیت افراد آلوده
    for i in range(int(infected[t])):
        if np.random.rand() < recovery_rate:
            recovered[t] += 1
            infected[t] -= 1
        else:
            infected[t] += 1

    # به روز رسانی وضعیت افراد در معرض خطر
    new_infections = np.random.binomial(population_size, infection_rate * susceptible[t] / population_size)
    infected[t] += new_infections
    susceptible[t] -= new_infections

4. محاسبه شاخص های اپیدمی:

  • active_cases: تعداد افراد آلوده یا مسری در هر روز
Python
active_cases = infected + susceptible - recovered

5. نمایش منحنی اپیدمی:

  • از matplotlib برای رسم نمودار تعداد افراد آلوده، بهبود یافته و در معرض خطر در طول زمان استفاده کنید.
Python
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 6))
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 برای تجزیه و تحلیل و نمایش داده های شبیه سازی شده به رو
نمایش بیشتر

نوشته‌های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا