图片缩略图

fitVirusCV19v3 (COVID-19 SIR模型)

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

37下载

更新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(“意大利”,“不高兴”,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

引用作为

JM2系列(2021)。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
N = 3.04206e+09 IO = 127452
国家错误:美国(这一个是给r0的。mlx代码)

谢谢你!

穆罕默德Alaoui

本的长袍

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

莎拉·达维多夫

当我们尝试运行代码时,我们得到一个津巴布韦和赞比亚的错误。
错误:error using odearguments(第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);
使用odearguments时出错(第18行)
你知道为什么会出现这个错误吗?谢谢你的帮助!

灵 白

秋天的李

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

ANKIT PANDEY

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

秋天的李

秋天的李

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

fitVirusCV19 (@getDataSingapore plt,“对”,“打印”,“上”,“数据”,“上”);

利用易感-感染-恢复(SIR)模型进行流行病建模
新加坡的国家
一天118
估计SIR模型参数
接触频率(beta) 0.244(1/天)
移除频率(gamma) 0.123(1/天)
人口规模(N) 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(天)
估计论据
爆发28 - 1月- 2020
加速开始2020年4月13日
转折点30 - 4月- 2020
2020年5月21日开始稳步增长
结束阶段开始
2020年8月23日结束疫情(5例)
2020年9月14日-2020年9月14日
统计数据(总)
观测次数118
自由度114
均方根误差484.562
0.998平方
调整0.998平方
f统计量vs.零模型15782.6
假定值4.2134 e - 149
统计数字(每日新增病例)
观测次数117
自由度113
均方根误差180.421
0.758平方
调整0.75平方
f统计量vs.零模型119.252
假定值7.22686 e-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

Yafia Radouane

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

ANKIT PANDEY

我得到以下错误:

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

谁能帮帮我!!

Yahyeh Souleiman

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

秋天的李

只是试图澄清的伽玛应该是回收率,我不能找到任何实际的恢复数据应用交叉验证伽玛计算?你能分享一些关于这方面的信息吗特别是在你的计算中伽马被称为去除率而不是回收率?

秋天的李

在美国,台湾,新加坡测试y产量误差,这是否会因为物流曲线的刚性参数而带来使用?是否可以添加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"的安全连接。错误原因:error:14090086:SSL
例程:ssl3_get_server_certificate:证书验证失败”。检查您的证书文件
(C: Program Files\MATLAB\R2017b\sys\certificates\ca\rootcerts.pem)为过期,丢失或无效
证书。

JM2系列

会做的事情。

圣Se

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

安东尼奥维瓦尔第

嗨,Joshu,你能定期更新例子标签上的数据吗?

本的长袍

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

JM2系列

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

本的长袍

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

JM2系列

文章正在更新中。

平硐Negi

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

李之

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

阿卜杜Alqahtani

非常感谢,约书亚先生。您成功修改了Milan的SIR模型。但是我看不清楚S, I和r的方程。我在fitVirusCV19 & analyseCV19中搜索了,但是没有找到。你能告诉我你把这些方程放在哪一部分吗?

大卫·弗朗哥

完美的约书亚!谢谢你!

JM2系列

你好大卫,

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

杰克

JM2系列

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

杰西·费根

我现在收到了秘鲁类似的错误信息(per Riel):

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日才结束)。非常感谢您的快速回复。

JM2系列

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

杰西·费根

乔舒亚,还有一件事(我可能在这里有点越级了!)根据秘鲁的输出,gamma = .7986和beta = 1.286, R0 = 1.6103。模型是否估计了beta和gamma,以拟合SIR模型与实际确诊病例(感染人数)?我似乎看到秘鲁的伽玛率要低得多(平均0.117)。此外,对于冠状病毒,总的来说,他们报告的平均R0值要高得多(2.0-2.5)。最后,这个模型对人口混合做了哪些假设?再次感谢。

大卫·弗朗哥

杰西·费根

多谢,约书亚!

JM2系列

嗨,杰西,
请参阅标题为“r0”的示例。这可以通过将命令窗口的输出存储在一个数组中来实现。例如,一旦在与代码类型output = fitVirusCV19v3("US",'plt','off')相同的目录中,然后输出。查看R0值和输出。看到值。
杰克

杰西·费根

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

佩Jovanovski

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

JM2系列

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

佩Jovanovski

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

Joshua你好,请注意数据的日期报告。你的意思是,1天的差异。

JM2系列

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

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

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

JM2系列

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

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

JM2系列

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

Gergely塔卡克斯

你好。我试图运行您的代码,然而,我得到“错误与国家”-所有国家…

安东尼奥维瓦尔第

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

JM2系列

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

JM2系列

我会调查的

JM2系列

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

安东尼奥维瓦尔第

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

奥尔德林瞧

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

塞吉奥Magalhaes

它在Matlab 2010b中不工作。

燕binghai

神奇的代码!

Hiroshi汤川

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

vitto66

很抱歉,我在3月30日看到一个类似的问题没有回复

罗伊·陈

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

Hiroshi汤川

非常感谢Joshua McGee先生为我的国家日本和其他国家做的更新!
不好意思问你个基本问题。如何安装这个模型源代码我曾经使用Python进行分析。
我试图用它来看看其他国家,比如俄罗斯、越南、土耳其。
如果你能告诉我或者帮我更新,那就太好了。
再次非常感谢!GBU

董gretch

请提供最新版本的链接

JM2系列

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

里尔Aljama

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

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

在fitVirusCV19v3>plotData错误(第781行)
如果plt

fitVirusCV19v3错误(第294行)
plotData (C date0国家)

JM2系列

完成了!

Hiroshi汤川

嗨,Joshua McGee先生!
非常感谢你做的这些。
你能帮我添加一个我的国家日本的例子吗?
如果不麻烦你的话,你能把新加坡和澳大利亚也加进去吗?
非常感谢。GBU

JM2系列

你好,克拉克!谢谢你的赞扬。我将在模型的下一个迭代中加入人均测试。
杰克

克拉克

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

JM2系列

你好,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行)
这一= calcClim (b);

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

JM2系列

例如印度尼西亚

JM2系列

安东。

安东尼奥维瓦尔第

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

安德烈Mitrasca

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

JM2系列

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

JM2系列

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

圣Se

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

JM2系列

我会调查的。

乔凡尼bortolan

在R2019b上有以下错误:

在= fitVirusCV19v3(“奥地利”);
使用odearguments时出错(第21行)
当ode45的第一个参数是函数句柄时,tspan参数必须至少有两个元素。

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。

JM2系列

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

JM2系列

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

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

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

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

有什么建议吗?

JM2系列

嗨,Tosaporn,我正在修复,将容纳大多数MATLAB用户。这是兼容2019b及以上。

Todsaporn Fuangrod

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

JM2系列

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

莱昂汉堡

嗨,这是我在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”、“选项”、“表');

JM2系列

嗨,里尔,
谢谢您的耐心等待。请再试一次。我将变量名称date转换为datenum格式。
杰克

里尔Aljama

嗨,这些是结果

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

JM2系列

嗨,请再试一次。

里尔Aljama

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

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

JM2系列

所有的兼容性问题现在应该被修复了

JM2系列

这是一个兼容性问题。你运行的是什么版本?

安德烈·安吉洛

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

类的不可识别属性'PreserveVariableNames'
“matlab.io.text.DelimitedTextImportOptions”。

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

圣Se

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

圣Se

何塞玛丽亚Jr。

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中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!