- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的 SIR 模型,我正在尝试实现一种疫苗接种方法 (V),首先检查感染者是否高于阈值 (100),如果仍有足够的易感者 (50),它将接种疫苗每个时间步长一定数量(50)。
然而我想要做的是,一旦条件满足,它应该接种 7 天(无论在这 7 天内感染者是否仍然高于阈值,例如如果在第 4 天之后, I = 70 应该还是继续,只有在S < 50 时才停止。7 天结束后,应该再次检查条件,然后再开始7 天或不重新开始。
到目前为止,我所拥有的
如果有人帮助我实现该循环,我将不胜感激
sirV=function(time, y, params){
S = y[1]
I = y[2]
R = y[3]
V = y[4]
with(as.list(params),{
vac_helper = if (I > 100 & S > 50) {50}
else {0}
N = S+I+R+V
dS = -S*beta*I/N - vac_helper
dI = S*beta*I/N - gamma*I
dR = +gamma*I
dV = vac_helper
return(list(c(dS, dI, dR, dV)))
})
}
myparameters = c(gamma=1/10,beta=0.2)
times <- seq(0, 300)
my_ode <- as.data.frame(ode( y=c(100000, 10, 0,0), times, sirV, myparameters))
最佳答案
这是一个建议,但我不完全确定它的行为是否符合您想要的方式,因此请先检查它,如果没有,请返回给我。
请注意 end
必须在全局环境中。
library(deSolve)
sirV = function(time, y, params){
S = y[1]
I = y[2]
R = y[3]
V = y[4]
with(as.list(params),{
# Has the previous vaccination ended, and do we still need to vaccinate?
if(time > end & I > 100) {
end <<- time + 7
}
# Can we vaccinate?
vaccinate = ifelse(end > time & S > 50, 50, 0)
N = S+I+R+V
dS = -S*beta*I/N - vaccinate
dI = S*beta*I/N - gamma*I
dR = gamma*I
dV = vaccinate
# Store some results in a global list so we can check what is happening under the hood
temp = data.frame(time, end, S, I, R, V, dS, dI, dR, dV, vaccinate)
catch_results[[length(catch_results)+1]] <<- temp
return(list(c(dS, dI, dR, dV)))
})
}
myparameters = c(gamma = 1/10, beta = 0.2)
times <- seq(from = 0, to = 300, by = 1)
end <- 0 # Reset end time
catch_results = list() # Catch results from inside the function
my_ode <- ode( y=c(100000, 10, 0, 0), times, sirV, myparameters)
plot(my_ode)
# Check this to see if we get the expected behavior, especially at around time = 189
results = dplyr::bind_rows(catch_results)
创建于 2021-08-22 由
reprex package (v0.3.0)
关于r - 在 R 中用循环和 if else 解析 SIR 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68878257/
我正在尝试通过比较真实的流行病曲线与随机 SIR 模型的模拟来建立一种估计传染病参数的方法。为了构建随机 SIR 模型,我使用 deSolve 包而不是使用固定参数值,我想从以原始参数值为中心的泊松分
我尝试从 eon 包中修改 SIR 模型并对其进行了一些更改。它附加了一个新的疫苗接种参数,其中包含新参数 beta、omega 和 VI,我的代码是- def test_transmission(u
我有一个家庭作业,我必须编写一个 C++ 程序来使用 SIR 模型(易感、传染、恢复)模拟疾病爆发。要求是使用 7x7 大小的二维数组,用户将在其中选择 X 和 Y 坐标来初始化感染者。如果附近有感染
我制作了一个程序,旨在运行文本文档(莎士比亚的《李尔王》),并将字母 s 的所有实例替换为 z,将“sir”替换为“dawg”。我可以使用第一种方法,但是我无法弄清楚我的其他方法(旨在替换“先生”)的
我有一个使用 AngularJS 编写的应用程序(我对此非常陌生),并且在我的应用程序中我使用 Sir Trevor 内容编辑器。我需要扩展 Sir Trevor 内容编辑器以包含我编写的一些自定义
#include #include using namespace std; class sir{ int lung; //sir lenght char* sirul; //point
我已经为上述模型创建了一些非常基本的实现。然而,尽管图表看起来是正确的,但数字加起来并不是一个常数。那是因为每个隔间中的易感者/感染者/康复者的总和应该加起来为 N(这是总人数),但事实并非如此,由于
我有一个简单的 SIR 模型,我正在尝试实现一种疫苗接种方法 (V),首先检查感染者是否高于阈值 (100),如果仍有足够的易感者 (50),它将接种疫苗每个时间步长一定数量(50)。 然而我想要做的
我正在尝试实现一个允许人们创建和撰写博客的在线文本编辑器。我看到 SirTrevor 有一个非常漂亮的用户界面,我真的很想使用它。 我已经设法让它在技术上运行 on these instruction
这里的很多人可能都熟悉其中一个 Joel Spolsky最受欢迎的博客文章,Please Sir, May I Have a Linker ,他呼吁找到一种方法来消除对 .NET 框架的依赖,以便可以
这里的很多人可能都熟悉其中一个 Joel Spolsky最受欢迎的博客文章,Please Sir, May I Have a Linker ,他呼吁找到一种方法来消除对 .NET 框架的依赖,以便可以
我是一名优秀的程序员,十分优秀!