Yasal Uyarı : Bu makale, sağlanan kodun matematiksel modellemenin tüm yönleri için evrensel bir çözüm olmadığını açıklığa kavuşturmayı amaçlamaktadır. Bunun yerine, matematiksel modelleme sürecindeki belirli bir adımı vurgulayan ve bu alandaki farkındalığı artırma temel hedefiyle Python'u açıklama amacıyla kullanan bir eğitim aracı olarak hizmet eder.
Biyomatematik alanıyla ilgili bir matematiksel model projesi sunarken/önerirken almanız gereken belirli önlemlerin olduğunu unutmamak da önemlidir.
Bu adımlar aşağıdakileri içerir, ancak bunlarla sınırlı değildir: konunun tanımlanması, bir model yaklaşımının seçilmesi (bu makalede iki model tartışılacaktır), denklemlerin formüle edilmesi, parametre tahmini (genellikle geçmiş verilere dayalı olarak), diferansiyel denklemleri analitik olarak çözerek sayısal simülasyonların uygulanması veya Python ve MATLAB gibi hesaplama araçlarının kullanılması, doğrulamalar ve duyarlılık analizi, senaryo testi, sonuç yorumlama vb.
Daha önce de söylediğim gibi, bu yalnızca matematiksel modelleme sürecindeki belirli bir adımı ve Python'un açıklama amacıyla kullanılmasını vurgulamaktadır.
Bulaşıcı hastalıkların nasıl yayıldığını anlamak halk sağlığının korunması açısından önemlidir çünkü bu hastalıklar insanlık tarihi boyunca yüzyıllardır mevcuttur. Hastalık yayılımının dinamiklerini simüle etmek ve anlamak için güçlü bir araç matematiksel modellerdir. Bu makalede SIR (Susceptible-Infectious-Recovered) ve SEIR (Susceptible-Exposed-Infectious-Recovered) modelleri ve bunların Python kullanılarak nasıl simüle edileceği tartışılacaktır.
Halk sağlığı profesyonelleri ve epidemiyologlar için simülasyon kristal bir küre gibidir. Çeşitli koşullar altında hastalıkların yayılma potansiyelini ve tedavi seçeneklerini öngörmemizi sağlar. Bu modeller karar vermeye, etkili kaynak tahsisine ve çeşitli tekniklerin potansiyel etkilerinin anlaşılmasına yardımcı olur. İki temel modeli inceleyelim; SIR Modeli ve SEIR Modeli.
Duyarlı, Bulaşıcı ve Kurtarılan (SIR) modeli, bir popülasyonu bu üç kategoriye ayırır. İletim hızı ( β ) ve iyileşme hızı ( γ ) gibi değişkenlere dayanarak, bu bölmelerin zamanla nasıl değiştiğini simüle eder.
Python kullanarak bir simülasyonu örneklendirmeden önce, matematiksel modeller üzerinde çalışırken “model varsayımları” yapmak gerekir.
Varsayımımızda LaTeX formülünü veya kodunu kullanarak model oluşturacağız:
\begin{align*} \frac{dS}{dt} &= -\beta \cdot S \cdot I \\ \frac{dI}{dt} &= \beta \cdot S \cdot I - \gamma \cdot I \\ \frac{dR}{dt} &= \gamma \cdot I \end{align*}
Not: Bu formülü Python kullanarak lateksleştirebilirsiniz. Bir örneği https://github.com/google/latexify_py/blob/main/examples/examples.ipynb adresinde bulabilirsiniz.
Bu makale, LaTeX'i uygun bir matematiksel gösterime/denkleme dönüştürmek için Python kodunu yazma zahmetine girmeyecektir, ancak aşağıdaki formül/denklem varsayımlarını göz kamaştırıcı bir şekilde görebilmeniz için https://latexeditor.lagrida.com/ gibi çevrimiçi düzenleyiciyi kullandım. :
nerede :
β ve γ parametreleri sırasıyla iletim ve iyileşme oranlarını yönetir. Negatif işaret (yani −β), duyarlı bireylerin (S) sayısının zamanla azaldığını gösterir. Nokta gösterimi “çarpmayı” gösterir.
Özetle, bu denklemler, hastalığa yakalandıkça duyarlı kişilerin sayısının azaldığı (yani dS/dt), yeni enfeksiyonlar sonucunda bulaşıcı kişilerin sayısının arttığı ve iyileştikçe bulaşıcı kişilerin sayısının azaldığı SIR modelinin dinamiklerini tanımlamaktadır ( yani dI/dt) ve hastalık tedavi edildikçe iyileşenlerin sayısı da artar (yani dR/dt). Her bölmedeki değişiklik ilgili bileşenlerin çarpımına bağlı olduğundan, çarpmayı belirtmek için noktalar (.) kullanılır.
Tüm varsayımlar belirlendiğinden, SIR Modeli için Python'u kullanarak bir simülasyon çalıştırabilir ve ardından dinamikleri görselleştirebiliriz:
import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt # SIR model equations def SIR_model(y, t, beta, gamma): S, I, R = y dSdt = -beta * S * I dIdt = beta * S * I - gamma * I dRdt = gamma * I return [dSdt, dIdt, dRdt] """ Initial conditions (such as S0, I0, and R0) are not to be random but I hardcoded them with specific values. These choices are typically made based on the characteristics of the disease being modeled and the context of the simulation. Initial condition are set such that S0 = 99%, which indicates the proportion of susceptible individuals when the simulation starts. I0 is set to 1%, which indicates proportion of infected individuals to be 1% when the simulation starts. R0 is set to 0% which is expected that there are are no recovered individuals when the simulations start. """ S0 = 0.99 I0 = 0.01 R0 = 0.00 y0 = [S0, I0, R0] # Parameters # β (beta) is transmission rate and I chose 30%. γ (gamma) is set to 1% beta = 0.3 gamma = 0.1 # Time vector t = np.linspace(0, 200, 200) # Simulate for 200 days # Solve the SIR model equations using odeint() solution = odeint(SIR_model, y0, t, args=(beta, gamma)) # Extract results S, I, R = solution.T # Plot the results plt.figure(figsize=(10, 6)) plt.plot(t, S, label='Susceptible') plt.plot(t, I, label='Infected') plt.plot(t, R, label='Recovered') plt.xlabel('Time (days)') plt.ylabel('Proportion of Population') plt.title('SIR Model Simulation') plt.legend() plt.grid(True) plt.show()
scipy.integrate.ode
ve scipy.integrate.odeint
arasındaki farklar için, daha iyi anlamanız için sizi odeint ve ode'ye yönlendirmek isterim.
SIR modelini Python'da çalıştırmak şunları yapmanızı sağlar:
Hastalık Yayılımını Anlayın : Salgın eğrisini gözlemleyin ve bir hastalığın bir toplulukta nasıl yayıldığını gözünüzde canlandırın. Yukarıdaki Python SIR Modelini çalıştırdığınızda sonucu/sonucu aşağıdaki grafikte görebilirsiniz:
Müdahaleleri Değerlendirin: Parametreleri değiştirerek, aşağıdaki gibi müdahalelerin sonuçlarını simüle edebilirsiniz:
sosyal izolasyon veya aşılama.
Bir "Açık" bölmenin eklenmesiyle SEIR modeli, SIR modelini genişletir. İnsanların maruz kaldığı ancak henüz bulaşıcı olmadığı kuluçka dönemini hesaba katıyor. Python'da nasıl taklit edileceği burada gösterilmektedir.
import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt # SEIR model equations def SEIR_model(y, t, beta, sigma, gamma): S, E, I, R = y dSdt = -beta * S * I dEdt = beta * S * I - sigma * E dIdt = sigma * E - gamma * I dRdt = gamma * I return [dSdt, dEdt, dIdt, dRdt] # Initial conditions S0 = 0.99 E0 = 0.01 I0 = 0.00 R0 = 0.00 y0 = [S0, E0, I0, R0] # Parameters beta = 0.3 sigma = 0.1 gamma = 0.05 # Time vector t = np.linspace(0, 200, 200) # Solve the SEIR model equations solution = odeint(SEIR_model, y0, t, args=(beta, sigma, gamma)) # Extract results S, E, I, R = solution.T # Plot the results plt.figure(figsize=(10, 6)) plt.plot(t, S, label='Susceptible') plt.plot(t, E, label='Exposed') plt.plot(t, I, label='Infected') plt.plot(t, R, label='Recovered') plt.xlabel('Time (days)') plt.ylabel('Proportion of Population') plt.title('SEIR Model Simulation') plt.legend() plt.grid(True) plt.show()
Bu durumdaki tek fark, farklı senaryoları araştırmak ve bulaşıcı hastalıkların dinamiklerini "maruz kalma" dönemiyle anlamak için latent period rate (σ)
getirilmesidir. Bireylerin bulaşıcı hale gelmesinden önceki kuluçka dönemini nasıl açıkladığını gösteriyor.
SEIR modelini çalıştırmak için Python'u kullandığınızda şunları yapabilirsiniz:
Model Gizli Dönemler
Ani bulaşıcı hastalıklar ile kuluçka dönemleri olan hastalıkların davranışları arasındaki farkları tanır.
Erken Müdahaleleri Değerlendirin
İzolasyonun ve erken tespit stratejilerinin etkilerini analiz edin.
Karmaşık Salgınları İnceleyin
Maruz kalan kişilerin bulaşmada önemli bir faktör olduğu COVID-19 gibi hastalıklar için SEIR kullanın.
Python'un SciPy gibi basitliği ve sağlam kütüphaneleri onu hastalıkları modellemek için mükemmel bir dil haline getiriyor. Ve bu simülasyonları onunla gerçekleştirerek bulaşıcı hastalıkların dinamikleri hakkında daha fazla şey öğreniyorsunuz. Bu sizi, iyi bilgiye dayalı kararlar vermenize ve gerçek dünyadaki salgınları değerlendirme yeteneğinizi geliştirmenize yardımcı olabilecek kararlar ve yeteneklerle donatabilir.
SIR ve SEIR modellerinden sonra gelecek çok daha fazlası var. SEIRS (Susceptible-Exposed-Infectious-Removed-Susceptible) Modeli, Uzamsal Modeller, Ağ Modelleri vb. gibi başka karmaşık modeller de vardır. Karmaşık modellerin yanı sıra jeouzaysal veriler, epidemiyolojik veriler, davranışsal veriler gibi gerçek dünya verilerinin araştırılması vb. aşı stratejileri, tedavinin kullanılabilirliği, sosyal mesafe önlemleri gibi müdahalelerin etkilerini dikkatlice inceleyerek modelleme becerilerinizi daha da geliştireceksiniz.
Bu modelleme araçlarına ilişkin bilgileriniz, bulaşıcı hastalıkların bulaşmasını anlamanın hayati önem taşıdığı bir gelecekte halk sağlığının korunmasını önemli ölçüde etkileyebilir.
Bu zaten çok uzun, ama umarım size Python kullanarak SIR ve SEIR Modellerini matematiksel modelde nasıl simüle edeceğinizi gösterebilmişimdir.