图片缩略图

FitViruscv19v3(Covid-19 SIR模型)

版本3.4.8 (3.57 MB) JM2系列
SIR模型估算Coronavirus Covid-19流行病评估,代码接收和绘制来自HDX的最新数据。
4.5
18评级

47下载

更新2020年5月03

视图版本历史

查看许可协议

此代码将从HDX中检索最近的数据,并尝试将其匹配到SIR模型,使用由米兰·巴蒂斯塔(//www.tatmou.com/matlabcentral/fileexchange/74658-fitviruscovid19?s_tid=prof_contriblnk).该模型是数据驱动的,因此其预测与数据一样好。此外,假设该模型是单阶段流行病的合理描述。

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

FitViruscv19v3(“意大利”,'Prn','On')

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

要在图上画出增长率,请使用(def value = 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

Lukas Verzola.

是否仍有对此代码的持续支持?金宝app我试图运行两个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, varmargin);

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
if C_orig(i+1) > 1 *C_orig(i) && C_orig(i) > 10
startidx (i) =我;
结束
其他的
if C_orig(i+1) > 1.5*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
基本rep. number (R0) 1.989
复制数(R) 0.59
终端复制数0.41
接触间隔时间(Tc) 4.1(天)
传染期(TR)8.1(日)
最终状态
最终案例33779
最终易感人数为8781
2020年5月25日的每日预测
南总
增加纳米
估计的逻辑模型参数
疫情规模(K) 28265(病例)
流行率(r) 0.121429(1/天)
初始翻倍时间5.7(天)
估计持续时间(天)
把一天93
加速阶段17(天)
减速阶段20(天)
总增长阶段持续时间37(天)
总流行持续时间230(天)
估计论据
爆发28 - 1月- 2020
2020年4月13日开始加速
转折点30 - 4月- 2020
开始稳定增长21 - 5月20日
2020年6月9日结束阶段的开始
2020年8月23日结束疫情(5例)
流行病结束(1例)14-2020
统计数据(总)
观察次数118
自由度114
均方根误差484.562
R-Squared 0.998
调整0.998平方
f统计量与零模型15782.6
假定值4.2134 e - 149
统计数字(每日新增个案)
观察次数117
自由度113
均方根误差180.421
R-Squared 0.758
调整0.75平方
f统计量vs.零模型119.252
假定值7.22686 e-35
方法
总箱重0.5
感染率体重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病例,如来自L5Phttps://www.mathwands.com/matlabcentral/fileexchange/38043.

Yafia Radouane

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

ANKIT PANDEY

我得到以下错误:

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

谁能帮帮我!!

Yahyeh Souleiman

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

秋天的李

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

秋天的李

对美国、台湾、新加坡等地的产量误差进行测试,是否会因为物流曲线的刚性参数带来应用?为了更好的模型拟合,可以添加一个5参数的理查德物流曲线吗?

秋天的李

只是为了分享,结果。txt和死亡结果。txt。还能从哪里获得https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_time_series,.CSV中confirm global是result, death是death global,只需将两个CSV重命名为各自的.txt即可,稍加修改,模型就可以离线运行得更有效率。

Lissette Morales.

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

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

Khaoula Briki.

你好Joshu,我有这个错误
FitViruscv19v3(“意大利”,'Prn','On')
使用webread出错(第122行)
无法建立到“data.humdata.org”的安全连接。原因为“error:14090086:SSL。
例程:ssl3_get_server_certificate:证书验证失败”。检查您的证书文件
(C:\Program Files\MATLAB\R2017b\sys\certificates\ca\rootcert .pem
证书。

JM2系列

会做的事情。

圣Se

真的很感谢。再更新一个例子就好了。

安东尼奥维瓦尔第

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

本的长袍

太好了,谢谢!我欣赏你的模型已经有一段时间了!

JM2系列

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

本的长袍

我相信你在美国4月21日/20日的订单是不正确的。从维基百科来看,这个数字是25304 (https://en.wikipedia.org/wiki/2020_coronavirus_pandement_in_the_united_states.).你的图表上的数字接近40000。

JM2系列

这篇文章正在更新中。

平硐Negi

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

李之

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

阿卜杜Alqahtani

非常感谢,约书亚先生。你已经成功修改了米兰的SIR模型。然而,我不能明确地看到S, I和r的方程。我搜索了fitVirusCV19和analyseCV19,但没有找到它。你能告诉我你把这些方程放在哪个部分吗?

大卫·弗朗哥

完美的约书亚!谢谢你!

JM2系列

你好大卫,

要修复这个改变' keepticks ' ' keelimits '。这个应该可以。

杰克

JM2系列

请记住,直到有更多数据可用,型号可能会因提供准确的长期预测而失败!

杰西·费根

我现在在秘鲁也收到了类似的错误消息(Riel在下面):

fitVirusCV19v3(秘鲁)
获取参数失败。
i: beta = 0.769831 gamma = 0.513221 N = 27777.4 I0 = 6.9504
钙:β= 0.0292718伽马= -0.169065 n = 602872 i0 = 112.561

杰西·费根

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

JM2系列

嗨,参数Beta和伽玛估计是正确的确认情况正确的实际数量。请记住,变量R0相对于时间更改。它将根据确认的案件数量而改变。虽然这一数字2.4-2.5平均可能是正确的,但它没有考虑不同国家正在进行的不同控制策略。该模型假设人群之间的相同联系。
杰克

杰西·费根

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

大卫·弗朗哥

杰西·费根

多谢,约书亚!

JM2系列

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

杰西·费根

对不起,如果这似乎是一个简单的问题。我注意到代码中有各种参数的“可选输出”,但我似乎无法获得这些数字。对于这个输出,命令会是什么样的?我有兴趣知道res。ro, res。β, res。gamma和res。n。谢谢。

Petar Jovanovski.

感谢您的回答。该模型是否考虑到每个国家的总人口?如果是的话,在哪里?

JM2系列

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

Petar Jovanovski.

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

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

JM2系列

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

基于此,我不认为您看到的差异很大。这绝对是差异的结果,如何在两端处理数据。预计值将不同,我不相信存在巨大的显着差异。感谢您查看这个。
杰克

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

JM2系列

你好,安东,你在看哪个国家?由于数据源不相同,因此本质上会存在差异。

你好,约书亚,根据4月5日的相同数据,与巴蒂斯塔先生的结果仍然存在显著差异。你能再检查一次帐单吗?

JM2系列

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

Gergely塔卡克斯

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

安东尼奥维瓦尔第

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

JM2系列

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

JM2系列

我会调查的

JM2系列

嗨,Anton,输入到模型中的数据量可能有所不同。每个代码可能选择不同数量的缓慢增长的数据,可以通过简单地修改代码进行更改。

安东尼奥维瓦尔第

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

奥尔德林瞧

嗨Joshua先生,我试图运行代码,但似乎是在线获取代码[t,ca] = ode45(@(t,y)odefun(t,y,b),tspan,i0)的错误338.任何想法为什么?

塞吉奥Magalhaes

它不适用于Matlab 2010b。

闫炳海

神奇的代码!

Hiroshi汤川

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

vitto66

对不起,我刚刚在3月30日看到一个类似的问题没有回复

罗伊陈

嗨,约书亚先生!你在这里做的工作让人印象深刻!
我是香港人(出生在台湾)。请问,能否为我的祖国香港和台湾做一下更新?
你的工作对我们有帮助。
请每周提供Exmaples(也许)的更新?(如果你不能)
非常感谢你的好意!

Hiroshi汤川

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

董gretch

请提供最新版本的链接

JM2系列

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

里尔Aljama

约书亚说:早上好
我现在能够运行你的代码。
但我和一些国家有问题,尤其是菲律宾

fitVirusCV19v3(“菲律宾”、“打印”、“上”)
获取参数失败。
i: beta = 0.682172伽玛= 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'需要符号数学工具箱。

Error in fitVirusCV19v3> calcenpoint (line 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系列

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

JM2系列

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

圣Se

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

JM2系列

我会研究这个。

乔凡尼bortolan

在R2019b上有以下错误:

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

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

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的文档或
获取更多信息。

JM2系列

嗨,朱塞佩,
数据库当时可能会遇到太多的流量。等一下再试一次。
杰克

莱昂汉堡

你好,这些是我在R2019a上的结果;任何工作。想为南非运行场景,但使用意大利作为一个测试案例。

使用readContentFromWebService出错(第46行)
服务器返回状态403和消息“FORBIDDEN”,以响应对URL的请求
https://proxy.hxlstandard.org/api/data-preview.csv?ull=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-configned.csv&选项=表

webbread错误(第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行)
opts.prevevariablenames = true;

圣Se

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

圣Se

何塞玛丽亚Jr。

Suksan,
我也遇到过同样的问题。Matlab 2019。B安装mex。

Suksan Suwanarat

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

Buldus2.

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

任何建议吗?

Ô Tô Hoàng Long

Matlab释放兼容性
创建R2019b
兼容R2019b及后续版本
平台的兼容性
视窗 苹果系统 Linux

社区寻宝

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

开始狩猎!