图片缩略图

fitVirusCV19v3 (COVID-19 SIR模型)

version 3.4.8 (3.57 MB) by JM24
基于SIR模型的冠状病毒COVID-19疫情评估的估计,Code接收并绘制来自HDX的最新数据。
4.5
18级

55下载

更新2020年5月03

视图版本历史

查看许可协议

该代码将从HDX检索最近的数据,并尝试使用由Milan Batista (//www.tatmou.com/matlabcentral/fileexchange/74658-fitviruscovid19?s_tid=prof_contriblnk).这个模型是数据驱动的,所以它的预测和数据一样好。同时,假设该模型是对单阶段流行病的合理描述。

结果保存在结构res中(参见函数fiVirusCV19头)。可选择以下方式打印结果:

fitVirusCV19v3(“意大利”、“打印”、“上”)

绘图可以通过(默认为on)启用或禁用:
fitVirusCV19v3(“意大利”、“plt”、“关闭”)

在图中绘制增长率(def值为2)
fitVirusCV19v3(“意大利”,“nsp”,3)

画出R0作为时间的函数
fitVirusCV19v3(“意大利”、“r0analysis”、“上”)

更详细的描述可在:
https://www.researchgate.net/publication/339311383_Estimation_of_the_final_size_of_the_coronavirus_epidemic_by_the_SIR_model
例子可以在下面找到:
https://www.researchgate.net/publication/339912313_Forecasting_of_final_COVID-19_epidemic_size_200318

引用为

JM24(2020)。fitVirusCV19v3 (COVID-19 SIR模型)(//www.tatmou.com/matlabcentral/fileexchange/74676-fitviruscv19v3-covid-19-sir-model), MATLAB中央文件交换。检索

评论和评级(105

卢卡斯Verzola

是否仍在继续支持这段代码?金宝app我正在尝试运行fitVirusCV19v3('US')和R0s & R0s_plot只针对US(也不使用默认值),我得到以下所有:

无法获取参数。
ini:beta=0.242097 gamma=0.161398 N=2.161792e+07 IO=83.993
计算:β=0.0628095伽马=0.0520089 N=3.04206e+09 IO=127452
国家错误:美国(这一个是给r0的。mlx代码)

谢谢你!

穆罕默德·阿劳伊

本·罗伯斯

您是否能够更新示例以包含最新的数据?

莎拉·达维多夫

当我们尝试运行代码时,我们得到一个津巴布韦和赞比亚的错误。
这就是错误:使用参数时出错(第18行)
当ode45的第一个参数是函数句柄时,必须提供tspan和y0参数。

ode45中的错误(第115行)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);

fitVirusCV19v3错误(第422行)
[t,Ca] = ode45(@(t,y) odeFun(t,y,b), tspan, I0);
使用参数时出错(第18行)
你知道为什么会发生这个错误吗?谢谢你的帮助!

灵 白

秋天的李

我认为是预先设定的1.5增长率,如果你把它改为1,大多数与没有足够的数据集相关的错误将会消失,但仍会计算出更高的R0

ANKIT PANDEY

请任何人帮助我理解下面的代码在做什么:
对于i=1:长度(C_原点)
=oric(如果i)
打破
结束
如果max(C_orig) < 10000
如果C_orig(i+1) > 1 *C_orig(i) && C_orig(i) > 10 .如果C_orig(i
startidx(i)=i;
结束
其他的
if C_orig(i+1) > 1 *C_orig(i) && C_orig(i) > 50
startidx(i)=i;
结束
结束
结束

秋天的李

秋天的李

这些是米兰巴蒂斯塔SIR模型对新加坡最新数据的原始输出,我认为你目前的项目无法对新加坡产生结果,请重新审视你所有的编码和假设,我测试了几个国家,注意到你的最终结果似乎与我测试过的大多数国家的原始米兰巴斯蒂斯塔计算结果不同。

fitVirusCV19(@getDataSingapore,'plt','on','prn','on','data','on');

利用易感-感染-恢复(SIR)模型进行流行病建模
新加坡国家
第118天
估计SIR模型参数
接触频率(beta) 0.244(1/天)
移除频率(gamma) 0.123(1/天)
人口规模(北)42561
初始病例数(I0) 0
基本代表编号(R0)1.989
复制数(R) 0.59
结束复制编号0.41
接触间隔时间(Tc) 4.1(天)
感染期(Tr) 8.1(天)
最终状态
最终病例数33779例
敏感品的最终数量8781
2020年5月25日每日预报
南总
提高南
估计logistic模型参数
疫情规模(K)28265(病例)
流行率(r) 0.121429(1/天)
初始倍增时间5.7(天)
估计持续时间(天)
转折日93
加速阶段17(天)
减速阶段20(天)
总生长期37(天)
传染病总持续时间230(天)
估计论据
爆发日期:2020年1月28日
开始加速2020年4月13日
转折点30-2020年4月
2020年5月21日开始稳步增长
2020年6月9日结束阶段的开始
疫情结束(5例)2020年8月23日
2020年9月14日-2020年9月14日
统计数字(个案总数)
观测次数118
自由度114
均方根误差484.562
0.998平方
8.990平方R
F-统计与零模型15782.6
p值4.2134e-149
统计数字(每日新个案)
观测次数117
自由度113
均方根误差180.421
0.758平方
调整0.75平方
F-统计与零模型119.252
p值7.22686e-35
方法
总箱重0.5
感染率重量0.5
目标函数值3545.37
退出条件(1 =好吧)

秋天的李

@Yafia Radouane我认为R_0从未减少的原因可能是,该模型使用运行的总累计4个参数物流曲线近似模型计算R,而不考虑回收人员的实际总数,我不确定这是不是米兰巴蒂斯塔的默认SIR模型,SIR =S+I+R,其中R恢复,RN = beta/gamma -基本复制数(比率),只有Joshua可以清楚,因为没有交叉验证,对每个国家报告的实际恢复数据。在我的实证研究中,5个参数logistics Curve似乎更适合大多数实际的SARS-CoV-2病例,例如L5P from//www.tatmou.com/matlabcentral/fileexchange/38043

亚菲亚·拉杜瓦内

嗨,约书亚和这个博客上的每个人;
我认为这是计算R_0的一个问题,因为即使感染病例的数量减少,R_0的值仍然大于1,这是不正常的。有人能解释一下这种情况吗?
亲爱的约书亚,请给我一个答案??
非常感谢

ANKIT PANDEY

我得到以下错误:

使用fitVirusCV19v3时出错(第174行)
表变量名必须是字符向量。

请任何人帮忙!!

Yahyeh Souleiman

谢谢你的工作。它可以很好地运行代码。这是可怕的。

秋天的李

我只是想澄清一下gamma,它应该是恢复率,我找不到任何实际的恢复数据用于交叉验证计算的gamma?您能分享关于这个的信息吗?特别是在您的计算中,gamma被称为移除率而不是恢复率?

秋天的李

在美国、台湾、新加坡测试y屈服误差,这是否会由于刚性4参数物流曲线带来使用?是否可以添加5个参数的Richard物流曲线以获得更好的模型拟合?

秋天的李

只是为了分享,结果和死亡结果。也可以从https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_time_series,.在CSV中,确认全局是结果,死亡是死亡全局,只需将两个CSV重命名为各自的.txt就可以了,稍加修改,模型可以更高效地离线运行。

Lissette莫拉莱斯

Mr Joshua,我是一名数学老师,我想用他的模型在我的城市圣玛尔塔,哥伦比亚建模Covid的案例。你能告诉我该怎么做吗?谢谢

嗨,Joshua,请检查一下印度、印度尼西亚、日本、新加坡和台湾的错误例子。

khaoula briki

嗨,Joshu,我有个错误
fitVirusCV19v3(“意大利”、“打印”、“上”)
使用webread时出错(第122行)
无法建立到“data.humdata.org”的安全连接。原因是“错误:14090086:SSL”
例程:ssl3\u获取\u服务器\u证书:证书验证失败”。请检查您的证书文件
(C: Program Files\MATLAB\R2017b\sys\certificates\ca\rootcerts.pem)为过期,丢失或无效
证书。

JM24

会做的事情。

圣Se

真的很感谢。另一个例子更新将是伟大的。

安东尼奥维瓦尔第

你好,Joshu,请定期更新示例选项卡上的数据。

本·罗伯斯

太好了,谢谢!我一直很欣赏你的模型!

JM24

这一定是由于HDX数据库中的输入错误。我会调查的,本。

本·罗伯斯

我相信你们4月21日每天在美国的案例是错误的。从维基百科,这个数字是25,304 (https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States).图表上的数字接近4万。

JM24

这篇文章正在更新中。

平硐Negi

有人能告诉我getData函数是如何工作的吗?它从哪里获取数据?当我改变本地csv文件中的数据,以实现它的印度邦,但结果是相同的,即结果来自旧的国家数据本身。

李之

你好,约书亚先生,这个代码太棒了!但是当我运行它时,我经常在表索引上出错。我搜索了帮助中心,它说,“从R2019b开始,您可以指定表变量名,这是无效的MATLAB®标识符。这样的变量名可以包括空格、非ascii字符,并且可以有任何字符作为前导字符。,所以只有R2019b及以上版本才能与此程序兼容。你能修复这个兼容性吗?

阿卜杜Alqahtani

非常感谢约书亚先生。你成功地修改了米兰的爵士模式。然而,我无法明确地看到S、I和R的方程。我在fitVirusCV19&analyseCV19中搜索了它,但没有找到它。你能告诉我你把这些方程式放在哪一部分吗。

大卫·弗兰科

完美的约书亚!谢谢你!

JM24

你好大卫,

要修复这个更改' keeplimits '为' keepticks '。这应该就行了。

乔希

JM24

请记住,在获得更多数据之前,这些模型很可能无法提供准确的长期预测!

杰西·法根

我现在收到秘鲁的类似错误消息(见下文):

fitVirusCV19v3(秘鲁)
无法获取参数。
ini:beta=0.769831 gamma=0.513221 N=27777.4 I0=6.9504
计算:beta = 0.0292718 gamma = -0.169065 N = 602872 I0 = 112.561

杰西·法根

约书亚,太棒了。非常感谢。在秘鲁,我们从3月15日开始就处于非常严格的隔离状态(预计要到4月26日才结束)。非常感谢您的快速回复。

JM24

嗨,参数β和gamma是根据正确的实际确诊病例数估计的。请记住变量R0是随时间变化的。它将根据确诊病例的数量每天变化。虽然2.4-2.5这个数字平均来说可能是正确的,但它没有考虑到不同国家正在实施的不同控制策略。该模型假设人口之间的接触是均等的。
乔希

杰西·法根

Joshua,还有一件事(我在这里可能不太适合!)。根据秘鲁的输出,gamma=.7986和beta=1.286,R0=1.6103。该模型是否估计beta和gamma以使SIR模型与实际确诊病例(感染人数)相吻合?似乎我看到秘鲁的gamma比率要低得多(平均为.117)此外,对于冠状病毒,一般来说,他们报告的平均R0值要高得多(2.0-2.5)。最后,模型对种群混合做出了哪些假设?再次感谢。

大卫·弗兰科

杰西·法根

多谢,约书亚!

JM24

嗨,杰西,
请参见标题为“R0s”的示例。这可以通过从命令窗口将输出存储在数组中来实现。例如,将输出放在与代码类型output=fitVirusCV19v3(“US”,“plt”,“off”)相同的目录中,然后使用output.R0查看R0值,使用output.beta查看beta值。
乔希

杰西·法根

抱歉,如果这看起来是一个简单的问题。我注意到在代码中有各种参数的“可选输出”,但我似乎无法得到这些数字。这个输出的命令是什么样子的?我有兴趣知道res.RO, res.beta, res.gamma和res.N。谢谢。

佩Jovanovski

谢谢你的回答。这个模型考虑到每个国家的总人口了吗?如果有,在哪里?

JM24

不,这是一个合适的参数。这个最大值是一个默认设置,可以修改。这是作为SIR模型的一部分拟合的,因此您不需要接触这个参数。见附件:https://www.researchgate.net/publication/339311383_Estimation_of_the_final_size_of_the_coronavirus_epidemic_by_the_SIR_model

佩Jovanovski

为什么Nmax = 2e6?我需要将它设置为每个国家的总人口吗?

嗨,约书亚,请注意数据的日期报告。例如,你的意思是,1天的差异。

JM24

嗨,安东尼奥,
我刚刚调查了你们的索赔。以下是我的发现:
预计总情况下:
印度尼西亚:(我的代码):4387(米兰的代码):4446
意大利:(我的代码):155889,(米兰代码):168747
美国:(我的代码):584464,(米兰的代码):539470
西班牙:(我的代码):172017,(米兰代码):172105

基于这一点,我不认为你看到的差异有多大。这肯定是两端数据处理方式不同的结果。预计数值会有所不同,我不认为会有巨大的显著差异。谢谢你调查这件事。
乔希

澳大利亚,印度尼西亚,意大利等等。试着随机检查。

JM24

嗨,Antonn,你在看哪个国家?由于数据源不相同,因此本质上会有差异。

嗨,乔舒亚,根据截至4月5日的相同数据,巴蒂斯塔的结果仍然存在显著差异。你能再检查一下吗?

JM24

嗨,Gergely,我需要更多的细节。你收到的错误是什么?

格格利·塔卡斯

您好。我正在尝试运行您的代码,但是,我得到了“国家错误”-适用于所有国家。。。

安东尼奥维瓦尔第

谢谢约书亚,真的非常感谢…

JM24

安东,我注意到最新版本的数据处理算法有个小错误。请尝试最新的版本。你会发现现在的近似值更加相似了。

JM24

我会调查的

JM24

嗨,安东,输入模型的数据量可能不同。每个代码可以选择不同数量的缓慢增长数据,并且可以通过简单的代码修改进行更改。

安东尼奥维瓦尔第

如果使用与巴蒂斯塔先生相同的算法,为什么结果会不同(04/04数据)?

奥尔德林棒棒糖

Hi Mr. Joshua,我尝试运行代码,但似乎在第338行得到代码[t,Ca] = ode45(@(t,y) odeFun(t,y,b), tspan, I0)的错误。知道为什么吗?

塞尔吉奥·马加莱斯

它在Matlab 2010b中不工作。

燕binghai

神奇的代码!

玉川浩史

嗨,约书亚先生!我成功运行它,但失败(错误)得到一些阴谋,如阿拉伯联合酋长国,关岛,新喀里多尼亚。
另一方面,土耳其和俄罗斯的结果是好的,但土耳其的日期轴在case/day图中是不寻常的,俄罗斯的拟合结果显示了大量的C_结束。
你能解释一下这些因素吗?
我求你了。
顺致敬意,

维托66

对不起,我刚才看到3月30日提出了一个类似的问题,但没有得到答复

罗伊·陈

嗨,约书亚先生!你在这里做的工作令人印象深刻!
我是香港人(出生于台湾)。请问,我的国家香港和台湾有什么最新消息吗?
你的工作将帮助我们。
请(可能)每周更新一下示例?(如果你不能)
非常感谢你的好意!

玉川浩史

非常感谢Joshua McGee先生为我的国家日本和其他国家做的更新!
很抱歉问你一个基本问题。如何安装这个模型源代码?顺便说一句,我以前使用Python进行分析。
我试着用它去看看其他国家,比如俄罗斯、越南、土耳其。
如果你能告诉我或者帮我更新,那就太好了。
再次非常感谢!GBU

董格雷奇

请提供最新版本的链接

JM24

嗨,瑞尔,
感谢您报告这个bug。现在应该修好了。请下载最新版本。
乔希

瑞尔·阿尔贾马

约书亚说:早上好
我现在可以运行你的代码了。
但我和一些国家有矛盾,尤其是菲律宾

fitVirusCV19v3(“菲律宾”、“打印”、“上”)
无法获取参数。
ini:beta=0.682172伽马=0.454782 N=8016.47 I0=0.00515606
计算:β=0.0543995伽马=-0.219728 N=25201.8 I0=0.000941286
无法识别的函数或变量'plt'。

fitVirusCV19v3>plotData中出错(第781行)
如果plt

fitVirusCV19v3中的错误(第294行)
绘图数据(C,日期0,国家)

JM24

完成了!

玉川浩史

嗨,乔舒亚·麦基先生!
非常感谢你做的这些。
你能帮我加一个日本的例子吗,我的国家?
如果不麻烦你的话,你能加上新加坡和澳大利亚吗?
非常感谢,GBU

JM24

嗨,克拉克!谢谢你的客气话。我将致力于将人均测试纳入模型的下一次迭代。
乔希

克拉克

嗨,约书亚,非常感谢你做的这些工作。我想知道您是否认为美国的人均COVID-19检测率(与其他国家相比)会影响您对总感染人数的预测?

JM24

你好,Marco,此代码要求2019b或更高。

马可

嗨,乔舒亚,这看起来很棒。我试图运行它,但我得到一个错误。。。似乎缺少detectImportOptions,所以我有点卡住了。
我在R2016a上运行,所以它可能有点过时。
谢谢你给我小费
马可

Anders Wallenborg

> > fitVirusCV19v3(“意大利”)
“lambertw”需要符号数学工具箱。

fitVirusCV19v3>calcEndPoint中出错(第628行)
lambertw(β* (1 - c0) * exp(β/γ)/γ);

fitVirusCV19v3>calcClim中的错误(第601行)
res = calcEndPoint(β,γ,I0 / N) * N;

fitVirusCV19v3错误(第306行)
Clim=钙钙离子浓度(b);

不幸的是,我不能访问Symbolic Math Toolbox,并且它也不是运行代码所必需的。有什么想法或建议吗?

JM24

将印度尼西亚添加到示例中

JM24

我会的,安东。

安东尼奥维瓦尔第

嗨,约书亚,
你介意在印度尼西亚的例子标签上做吗?谢谢。

安德烈Mitrasca

使用fitVirusCV19v3时出错(第152行)
表变量名必须是字符向量。
我正在使用2018版的MATLAB..

JM24

-updated,再次尝试修复与旧的MATLAB版本的兼容性问题

JM24

会做的事情。今天晚些时候我会更新。

圣Se

你能不能每隔几天更新一下“例子”图表?一些国家很快就会接近临界点。谢谢

JM24

我会调查的。

乔凡尼bortolan

在R2019b上有以下错误:

在= fitVirusCV19v3(“奥地利”);
使用参数时出错(第21行)
当第一个参数必须至少处理两个元素时,第一个参数必须处理两个元素。

ode45中的错误(第115行)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);

fitVirusCV19v3错误(第327行)
[t,Ca] = ode45(@(t,y) odeFun(t,y,b), tspan, I0);

谢谢
乔凡尼B。

JM24

它可以在2019b及以上完全运行。

JM24

是的,这是一个兼容性问题。我正在想办法。

这就跟你问声好!很酷的模型。
我一直占有:

使用fitVirusCV19v3时出错(第149行)
'01_22_20'不是一个有效的变量名。

运行错误(第1行)
它=fitVirusCV19v3(“意大利”);

有什么建议吗?

JM24

嗨,托萨伯恩,我正在研究一个能适应大多数MATLAB用户的修复程序。这与2019b及更高版本兼容。

托德萨蓬·富朗罗德

嗨,约书亚,
我试了一下代码,显示错误,你能解释一下吗?
在= fitVirusCV19v3(“奥地利”);
使用fitVirusCV19v3时出错(第152行)
'01_22_20'不是一个有效的表变量名。
请参阅文档中的isvarname或
makevalidname以获取更多信息。

JM24

嗨,朱塞佩,
当时数据库的流量可能太大了。等一会儿再试一次。
乔希

莱昂汉堡

您好,这是我在R2019a上的结果;任何解决方法。希望为南非运行场景,但将Italty用作测试用例。

使用readContentFromWebService时出错(第46行)
服务器返回状态403和消息“FORBIDDEN”作为对URL请求的响应
https://proxy.hxlstandard.org/api/data-preview.csv?url=https%3A%2F%2Fraw.githubusercontent.com%2FCSSEGISandData%2FCOVID-19%2Fmaster%2Fcsse_covid_19_data%2Fcsse_covid_19_time_series%2Ftime_series_19-covid-Confirmed.csv&filename=time_series_2019-ncov-Confirmed.csv&options=table

webread中的错误(第125行)
[varargout{1:nargout}] = readContentFromWebService(连接,选项);

fitVirusCV19v3错误(第124行)
结果= webread ('https://proxy.hxlstandard.org/api/data preview.csv?url=https%3a%2f%2fraw.githubusercontent.com%2fcssegisanddata%2fcovid - 19% - 2 - fmaster%2fcsse_covid_19_data%2fcsse_covid_19_time_series%2ftime_series_19 covid confirmed.csv&filename=time_series_2019 - ncov confirmed.csv”、“选项”、“表');

JM24

嗨,瑞尔,
谢谢您的耐心。请现在重试。我已将变量名dates转换为datenum格式。
乔希

瑞尔·阿尔贾马

嗨,这是结果

使用fitVirusCV19v3时出错(第148行)
“22-Jan-2020”不是有效的变量名。

JM24

嗨,请再试一次。

瑞尔·阿尔贾马

美好的一天!
我不断得到这个错误:((使用2018a)

使用fitVirusCV19v3时出错(第148行)
“省/州”不是一个有效的变量名。

JM24

所有兼容性问题现在都应该得到修复

JM24

这是一个兼容性问题。您正在运行哪个版本?

安德烈·安吉洛

对于我为什么会得到这个错误的任何想法:

类的无法识别属性“PreserveVariableNames”
“matlab.io.text.DelimitedTextImportOptions”。

fitVirusCV19v3中的错误(第128行)
选择。PreserveVariableNames = true;

圣Se

很高兴看到图表正在更新。

圣Se

小何塞·玛丽亚。

Suksan,
我也有同样的问题。Matlab 2019.b,安装了mex。

Suksan Suwanarat

出色的工作,但当我运行代码时,它给我这个错误:
类的无法识别属性“PreserveVariableNames”
“matlab.io.text.DelimitedTextImportOptions”。
fitVirusCV19v3错误(第132行)
选择。PreserveVariableNames = true;

buldus2

非常好,但是当我运行代码时,它给出了这个错误:错误使用fitVirusCV19v3(第170行)
重复的表变量名:'NaN'。

有什么建议吗?

Ô Tô Hoàng长

MATLAB版本兼容性
使用R2019b创建
与R2019b及后续版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!