图片缩略图

fitVirusCV19v3 (COVID-19 SIR型号)

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

42下载

更新5月3日

查看版本历史

查看许可协议

这段代码将从HDX检索最近的数据,并试图将其适合于SIR模型,使用Milan Batista创建的结构(//www.tianjin-qmedu.com/matlabcentral/fileexchange/74658-fitviruscovid19?s_tid=prof_contriblnk).这个模型是数据驱动的,所以它的预测和数据一样好。此外,还假定该模型是对单阶段流行病的合理描述。

结果保存在结构res中(请参阅函数fiVirusCV19报头)。可选的结果可由下列工具列印:

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

绘图可以通过以下方式启用或禁用(默认为开启):
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.tianjin-qmedu.com/matlabcentral/fileexchange/74676-fitviruscv19v3-covid-19-sir-model), MATLAB中央文件交换。检索

意见及评分(105

卢卡斯Verzola

该代码是否仍有持续支持?万博1manbetx我正在尝试运行fitVirusCV19v3(“US”)和R0s & R0s_plot仅用于美国(也不使用默认值),我得到了以下所有:

获取参数失败。
ini: beta = 0.242097 gamma = 0.161398 N = 2.161792e+07 IO = 83.993
calc: beta = 0.0628095 gamma = 0.0520089 N = 3.04206e+09 IO = 127452
错误国家:美国(这是为R0s。mlx代码)

谢谢你!

穆罕默德Alaoui

本的长袍

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

当我们试图运行代码时,我们得到一个关于津巴布韦和赞比亚的错误。
错误如下:使用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错误(line18)
您知道为什么会出现这个错误吗?谢谢你的帮助!

灵 白

秋天的李

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

ANKIT PANDEY

请谁能帮助我理解下面的代码是做什么:
for i = 1:length(C_orig)
if i == length(C_orig)
打破
结束
如果max(c_trans) < 10000
如果C_orig(i+1) > 1.5*C_orig(i) && C_orig(i) > 10
Startidx (i) = i;
结束
其他的
如果C_orig(i+1) > 1.5*C_orig(i) && C_orig(i) > 50
Startidx (i) = i;
结束
结束
结束

秋天的李

秋天的李

这些是Milan Batista SIR模型对新加坡最新数据的原始输出,我认为您当前的程序无法为新加坡生成结果,请再次检查您的所有编码和假设,我已经测试了一些,并注意到您的最终结果似乎与我测试过的大多数国家的Milan Bastista原始计算不同。

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

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

秋天的李

@Yafia Radouane我认为R_0从未下降的原因可能是因为模型计算R时使用了运行总累积4个参数的物流曲线近似模型,没有考虑实际恢复的总人数,我不确定这是否实际上是米兰巴迪斯塔的默认SIR模型,SIR =S+I+R,其中R被恢复,RN = beta/gamma——基本的复制数(比率),只有Joshua才能明确,因为没有与每个国家报告的实际采收率数据进行交叉验证。在我的实证研究中,5参数物流曲线似乎更适合大多数实际的SARS-CoV-2病例,如L5P来自//www.tianjin-qmedu.com/matlabcentral/fileexchange/38043

Yafia Radouane

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

ANKIT PANDEY

我得到以下错误:

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

有人能帮帮我吗!!

Yahyeh Souleiman

谢谢你的工作。它工作的代码很好。这是可怕的。

秋天的李

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

秋天的李

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

秋天的李

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

Lissette莫拉莱斯

约书亚先生,我是一名数学老师,我想用他的模型来模拟我所在城市哥伦比亚圣玛尔塔的新冠肺炎病例。你能告诉我该怎么做吗?谢谢

安东尼奥维瓦尔第

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

khaoula briki

嗨,Joshu,我有这个错误
fitVirusCV19v3(“意大利”、“打印”、“上”)
使用webread错误(第122行)
无法建立到“data.humdata.org”的安全连接。原因是“错误:14090086:SSL
例程:ssl3_get_server_certificate:certificate verify failed”。检查证书文件
(C:\Program Files\MATLAB\R2017b\sys\certificates\ca\rootcerts.pem)用于过期、丢失或无效
证书。

JM2系列

会做的事情。

圣Se

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

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

本的长袍

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

JM2系列

这一定是由于HDX数据库中的一个打字错误。我会查的,本。

本的长袍

我相信你4月21日20日每天的美国案件是不正确的。根据维基百科,这个数字是25304 (https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States).你的图表上的数字接近40000。

JM2系列

这篇文章正在更新。

平硐Negi

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

李之

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

阿卜杜Alqahtani

非常感谢,约书亚先生。你成功修改了米兰的SIR型号。但是,我不能明确地看到S, I和r的方程。我在fitVirusCV19和analyseCV19中搜索了一下,但没有找到。你能告诉我你把这些方程放在哪一节了吗?

大卫·弗朗哥

完美的约书亚!谢谢你!

JM2系列

你好大卫,

要修复' keepplimits '到' keepticks '的更改。这应该能奏效。

杰克

JM2系列

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

杰西·费根

我现在在秘鲁得到了类似的错误信息(下面是Riel):

fitVirusCV19v3(秘鲁)
获取参数失败。
ini: beta = 0.769831 gamma = 0.513221 N = 27777.4 I0 = 6.9504
calc: beta = 0.0292718 gamma = -0.169065 N = 602872 I0 = 112.561

杰西·费根

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

JM2系列

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

杰西·费根

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

大卫·弗朗哥

杰西·费根

非常感谢,约书亚!

JM2系列

嗨,杰西,
请参阅题为“R0s”的示例。这可以通过将输出存储在命令窗口的数组中来实现。例如,一旦在同一目录下的代码类型输出= 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系列

嗨,安东,你在看哪个国家?由于数据源不相同,因此必然存在差异。

安东尼奥维瓦尔第

Joshua你好,根据截至4月5日的相同数据,与Batista先生的结果仍有显著差异。你能再检查一下吗?

JM2系列

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

Gergely塔卡克斯

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

安东尼奥维瓦尔第

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

JM2系列

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

JM2系列

我会查清楚的

JM2系列

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

安东尼奥维瓦尔第

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

奥尔德林瞧

嗨,约书亚先生,我试着运行代码,但似乎在第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系列

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

里尔Aljama

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

fitVirusCV19v3(“菲律宾”、“打印”、“上”)
获取参数失败。
ini: beta = 0.682172 gamma = 0.454782 N = 8016.47 I0 = 0.00515606
calc: 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 (-beta*(1 - c0)*exp(-beta/gamma)/gamma);

fitVirusCV19v3>calcClim错误(第601行)
res = calcEndPoint(beta,gamma,I0/N)*N;

fitVirusCV19v3中的错误(第306行)
Clim = calcClim(b);

不幸的是,我没有访问符号数学工具箱,并且它没有被列为运行代码所必需的。有什么想法或建议吗?

JM2系列

印尼也加入其中

JM2系列

安东。

安东尼奥维瓦尔第

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

安德烈Mitrasca

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

JM2系列

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

JM2系列

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

圣Se

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

JM2系列

我会查清楚的。

乔凡尼bortolan

在R2019b上有以下错误:

at = 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行)
it = fitVirusCV19v3(“意大利”);

有什么建议吗?

JM2系列

你好,Tosaporn,我正在进行一个修复,将适应大多数MATLAB用户。这与2019b及更高版本兼容。

Todsaporn Fuangrod

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

JM2系列

嗨,朱塞佩,
数据库当时可能经历了太多的流量。稍等片刻再试一次。
杰克

莱昂汉堡

嗨,这是我关于R2019a的结果;任何工作。想要运行南非的场景,但用意大利作为测试案例。

使用readContentFromWebService错误(第46行)
作为对URL请求的响应,服务器返回状态403和消息“FORBIDDEN”
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(connection, options);

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系列

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

里尔Aljama

嗨,这就是结果

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

JM2系列

你好,请再试一次。

里尔Aljama

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

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

JM2系列

所有兼容性问题现在都应该得到解决

JM2系列

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

安德烈·安吉洛

你知道为什么我会得到这个错误吗:

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

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

圣Se

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

圣Se

JOSé小玛利亚。

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

Suksan Suwanarat

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

buldus2

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

任何建议吗?

Ô Tô Hoàng长

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

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!