【新冠肺炎】SIR模型预测之代码篇
关键词:新冠肺炎,SIR模型预测,数据分析
本篇使用R语言
之前我们介绍过了SIR模型的基本理论以及其微分方程,不熟悉的朋友可以看这篇:
SIR SIRE 传染病预测模型与代码应用之概念篇
根据SIR模型的微分方程我们了解到病毒传染的各种特征,比如何时结束,最大规模,疫情的控制手段,以及疫苗和群体免疫问题,不熟悉的朋友可以回顾一下这一篇:
【cov-19】新冠肺炎的SIR模型补充与应用
在掌握这些基础知识后,我们可以根据微分方程在R中搭建一个SIR模型,并通过模型预测病毒的整体走向。其实我们知道,对于预测问题来说,建立模型是非常简单的,提升准确度的关键主要是调参,以及概念上的修改。这里我们简单介绍一下如何搭建模型以及对比预测。
首先强调,模型预测并不可靠,只能表现出一些数据上的趋势,真实情况还是需要根据事实自我判断。
1.建立模型
思路:先编辑好SIR模型,后用ode完成模拟:
注:这里使用的是fraction的方程,也就是百分比数量。
sir_model <- function(beta, gamma, S0, I0, R0, times) {
require(deSolve)
#----------SIR微分模型
sir_equations <- function(time, variables, parameters) {
with(as.list(c(variables, parameters)), {
#使用百分比的fraction方程
dS <- -beta * I * S
dI <- beta * I * S - gamma * I
dR <- gamma * I
return(list(c(dS, dI, dR)))
})
}
#----------定义变量
parameters_values <- c(beta = beta, gamma = gamma)
initial_values <- c(S = S0, I = I0, R = R0)