图片缩略图

fitVirusCV19v3 (COVID-19 SIR模型)

版本3.4.8(3.57 MB)通过 约书亚麦吉
根据SIR模型估计COVID-19冠状病毒流行情况,Code接收并绘制来自HDX的最新数据。
4.5
18评级

45下载

更新2020年05月03日

查看许可证

此代码将从HDX检索最新的数据并尝试将其适合米兰巴蒂斯塔创造了SIR模型中使用结构(//www.tatmou.com/matlabcentral/fileexchange/74658-fitviruscovid19?s_tid=prof_contriblnk)。这个模型是数据驱动的,所以它的预测和数据一样好。此外,还假设该模型是对这一一阶段流行病的合理描述。

结果保存在结构RES(见函数fiVirusCV19头)。可选地,所述结果可以由被打印:

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

plot可以通过(默认为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

引用作为

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

意见及评分(104

穆罕默德Alaoui

本的长袍

您可以更新您的例子,包括最近的数据?

莎拉·达维多夫

当我们尝试运行代码时,我们得到津巴布韦和赞比亚的错误。
下面是错误:使用odearguments的错误(第18行)
当第一个参数ODE45是一个函数句柄,TSPAN和Y0参数必须被提供。

ode45中的错误(第115行)
odearguments(FcnHandlesUsed,solver_name,赋,TSPAN,Y0,选项varargin);

误差在fitVirusCV19v3(线422)
[T,CA] = ODE45(@(T,Y)odeFun(T,Y,b)中,TSPAN,I0);
使用odearguments时出错(第18行)
你知道为什么会出现这个错误吗?谢谢你的帮助!

灵白

秋利

我认为是在1.5预先设定的速度增长,如果您更改为1,最错误的涉及到没有足够的数据集将消失,但较高的R0将计算

ANKIT潘迪

请任何人可以帮助我了解一下下面的代码是做:
对于i = 1:length(C_orig)
如果i == length(C_orig)
打破
结束
如果MAX(C_orig)<10000
如果C_orig(i+1) > 1。5*C_orig(i)和C_orig(i) > 10
startidx (i) =我;
结束
其他的
如果C_orig第(i + 1)> 1.5 * C_orig(ⅰ)&& C_orig(ⅰ)> 50
startidx (i) =我;
结束
结束
结束

秋利

秋利

这些都是从米兰巴蒂斯塔SIR模型新加坡最新数据输出原始的,我不认为你目前的方案是能够产生结果为新加坡,请重新审视所有的编码,并假设再次,我已经测试了几个,发现你的最终结果似乎从原来的米兰Bastista计算对于大多数我所测试的国家有所不同。

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

传染病模型的易感-感染-恢复(SIR)模型
新加坡的国家
一天118
估计了SIR模型参数
接触频率(测试版)0.244(1 /天)
去除频率(伽马)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日的每日预测
南总
提高南
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日开始稳步增长
结束阶段开始时间:09- 2020年6月
2020年8月23日疫情结束(5例)
2020年9月14日疫情结束(1例)
统计数据(总)
观察118号
自由度114
均方根误差484.562
0.998平方
调整0.998平方
F-statistics vs. 0型15782.6
假定值4.2134 e - 149
统计数字(每日新增个案)
观察117号
自由度113
均方根误差180.421
0.758平方
调节的R平方0.75
f统计与零型号119.252
假定值7.22686 e-35
方法
总箱重0.5
感染率0.5重量
目标函数值3545.37
退出条件(1 =好吧)

秋利

@Yafia Radouane我认为之所以R_0从未减少是可能是因为在正在运行的总累计4个参数曲线物流近似模型没有贴现恢复人的总实际数量模型计算R,我不知道这其实是在默认米兰巴蒂斯塔SIR = S + I + R,其中R被恢复,RN =β/γ的SIR模型 - 基本再生数(比率),仅约书亚罐清晰度没有针对实际恢复数据报由每个无交叉验证国家。在我的经验研究,5个参数物流曲线似乎更适合于大多数人的实际SARS冠状病毒-2情况下,如从L5P//www.tatmou.com/matlabcentral/fileexchange/38043

Yafia Radouane

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

ANKIT潘迪

我收到以下错误:

使用fitVirusCV19v3误差(线174)
表变量名必须是文字的载体。

谁能帮忙啊!!

Yahyeh Souleiman

感谢您对这项工作。它的工作原理代码的良好。这很棒。

秋利

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

秋利

在美国,台湾,新加坡测试y收益率误差,这是由于刚性的4参数物流曲线带来使用吗?可以添加5个参数的理查德物流曲线,以更好的模型拟合?

秋利

只是为了共享,SND的Result.txt deathresult.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莫拉莱斯

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

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

khaoula briki

你好Joshu,我有一个错误
fitVirusCV19v3(“意大利”、“打印”、“上”)
使用webread时出错(第122行)
无法建立到"data.humdata.org"的安全连接。原因是“错误:14090086:SSL。
例程:ssl3_get_server_certificate:证书验证失败”。检查您的证书文件
(C:\程序文件\MATLAB\R2017b\sys\证书\ca\rootcert .pem)过期、丢失或无效
证书。

约书亚麦吉

会做的事情。

圣Se

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

安东尼奥维瓦尔第

Joshu你好,你可以定期更新example tab上的数据吗?

本的长袍

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

约书亚麦吉

这一定是由于在HDX数据库中出现了错误。我会调查这个本的。

本的长袍

我认为你们4/21/20每天的美国案例是不正确的。从维基百科来看,这个数字是25304 (https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_the_United_States)。你的图具有数量接近40,000。

约书亚麦吉

这篇文章正在更新中。

Parminder辛格

平硐那迦

谁能告诉我的getData funtion是如何工作的?其中它把数据?正如我在本地的CSV文件更改的数据来实现它为印度各邦然而,结果都是一样的即结果是从古老的国家数据本身。

李智

你好Mr.Joshua,这个代码是如此之大!但是,当我运行它,我就表索引频繁出错。我搜索帮助中心,它说,“与R2019b开始,你可以指定表中的变量名是无效的MATLAB®身份标识。这样的变量名可以包含空格,非ASCII字符,可以有任意字符作为主角。”因此,只有R2019b及以上的可与该程序不兼容,你能解决这个问题的兼容性?

阿卜杜拉赫曼Alqahtani

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

大卫·弗朗哥

完美的约书亚!谢谢你!

约书亚麦吉

你好大卫,

为了解决这个问题变“keeplimits”到“keepticks”。这应该做的伎俩。

杰克

约书亚麦吉

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

杰西·费根

现在我正在秘鲁类似的错误消息(每瑞尔下图):

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

约书亚麦吉

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

杰西·费根

乔舒亚,还有一件事(我在这里可能有点力不胜任了!)秘鲁的每个输出,gamma = .7986和beta = 1.286, R0 = 1.6103。模型是否对贝塔和伽玛进行估计,使SIR模型与实际确诊病例(感染人数)相吻合?看来我在秘鲁看到的伽马率要低得多(平均0.117)。此外,对于冠状病毒,一般来说,他们报告的平均R0值要高得多(2.0-2.5)。最后,这个模型对人口混合做了什么假设?再次感谢。

大卫·弗朗哥

杰西·费根

非常感谢,约书亚!

约书亚麦吉

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

杰西·费根

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

佩Jovanovski

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

约书亚麦吉

不,这是一个装有参数。马克斯是包括了默认设置,可以更改。这是安装的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天的区别。

约书亚麦吉

你好,安东尼奥,
我只是调查您的要求。以下是我发现:
预计总案例:
印度尼西亚(我的代码):4387,(米兰代码):4446
意大利:(我的代码):155889(米兰代码):168747
美国:(我的代码):584464,(米兰的代码):539470
西班牙:(我的代码):172017,(米兰代码):172105

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

澳大利亚,印度尼西亚,意大利和其他国家。试着随机检查。

约书亚麦吉

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

嗨约书亚,基于相同的数据,4月5日,但仍与巴蒂斯塔先生的结果显著差异。你可以再次检查呢?

约书亚麦吉

你好,Gergely,我需要更详细的资料。你收到的错误是什么?

Gergely塔卡克斯

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

安东尼奥维瓦尔第

感谢Joshua,真的很感激......

约书亚麦吉

Anton,我注意到我最新版本的数据处理算法有一个小错误。请试用最新版本。现在你应该发现近似值更接近了。

约书亚麦吉

我会看看这个

约书亚麦吉

您好安东,送入模型可以不同的数据量。每个代码可以选择生长缓慢的数据的不同的量,并且可以通过代码的简单的修改而改变。

安东尼奥维瓦尔第

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

奥尔德林瞧

嗨约书亚先生,我试图运行代码,但似乎在一个错误的代码(t, Ca) =数值(@ (t, y) odeFun (t, y, b), tspan, I0)在第338行。知道为什么吗?

塞吉奥Magalhaes

它在Matlab 2010b中不起作用。

燕binghai

神奇的代码!

Hiroshi汤川

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

vitto66

很抱歉,我刚刚看到3月30日有人提出类似的问题,但没有回复

罗伊·陈

嗨,约书亚先生!这是非常观赏壮丽的工作,你在这里做了!
我是来自香港(出生于台湾)。如果我会问,你可以做更新为我的国家和港台,好吗?
你的工作将帮助我们。
请(可能)每星期更新一次样品?(如果你不能)
非常感谢你的好意!

Hiroshi汤川

非常感谢你,约书亚麦基先生更新我的祖国日本和其他人!
很抱歉问你一个基本的问题。我如何安装这个模型的源代码我以前用Python来做分析。
我试着用它去看其他国家,比如俄罗斯,越南,土耳其。
如果你能告诉我或者帮我更新一下,那就太好了。
再次感谢大家!GBU

董gretch

请提供最新版本的链接

约书亚麦吉

嗨,里尔,
感谢您报告这个错误。它现在应该固定。请下载最新的版本。
杰克

里尔Aljama

早上好约书亚
我现在可以运行你的代码了。
但我有问题,一些国家,特别是菲律宾

fitVirusCV19v3( '菲律宾', 'PRN', '上')
获取参数失败。
ini: beta = 0.682172 gamma = 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行)
plotData (C date0国家)

约书亚麦吉

完成!

Hiroshi汤川

你好,Joshua McGee先生!
非常感谢您对所有的这些。
你能帮我加上我的国家日本的例子吗?
另外,如果不麻烦的话,你能把新加坡和澳大利亚也加进去吗?
非常感谢。GBU

约书亚麦吉

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

克拉克

嗨约书亚,非常感谢你对所有这些工作。我想知道,如果你认为人均在美国这里(相对于其他国家)会影响您的总受感染的预测增加COVID-19检测率?

约书亚麦吉

Marco你好,这个代码需要2019b以上。

马可

你好,约书亚,这看起来不错。我试图运行它,但我得到一个错误…似乎detectImportOptions丢失了,所以我有点卡住了。
我使用的是R2016a,所以可能有点过时了。
谢谢你的建议
马可

Anders Wallenborg

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

fitVirusCV19v3>calcEndPoint错误(第628行)
lambertw(-beta *(1 - C 0)* EXP(-beta /伽马)/伽马);

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

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

不幸的是,我没有访问符号数学工具箱,并根据需要来运行代码未列出。任何想法或建议?

约书亚麦吉

将印度尼西亚加入到例子中

约书亚麦吉

安东。

安东尼奥维瓦尔第

嗨,约书亚,
你介意让印尼例子选项卡上?谢谢。

安德烈Mitrasca

使用fitVirusCV19v3时出错(第152行)
表变量名必须是文字的载体。
我使用的是2018版MATLAB的..

约书亚麦吉

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

约书亚麦吉

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

圣Se

也许你可以更新“示例”图表每隔几天?一些国家很快就接近临界点。谢谢

约书亚麦吉

我会调查此事的。

乔瓦尼bortolan

在R2019b有以下错误:

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

ode45中的错误(第115行)
odearguments(FcnHandlesUsed,solver_name,赋,TSPAN,Y0,选项varargin);

fitVirusCV19v3中的错误(第327行)
[T,CA] = ODE45(@(T,Y)odeFun(T,Y,b)中,TSPAN,I0);

谢谢
乔瓦尼B.

约书亚麦吉

它是全功能的2019b以上。

约书亚麦吉

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

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

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

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

有什么建议么?

约书亚麦吉

你好Tosaporn,我正在做一个可以适应大多数MATLAB用户的修复。这是兼容2019b及以上。

Todsaporn Fuangrod

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

约书亚麦吉

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

莱昂汉堡

嗨,这是我在R2019a上的结果;任何工作。希望为南非运行场景,但使用斜体作为测试用例。

使用readContentFromWebService时出错(第46行)
服务器响应返回的状态403消息“禁”的请求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”、“选项”、“表”);

约书亚麦吉

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

里尔Aljama

嗨,这是结果

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

约书亚麦吉

你好现在请再试一次。

里尔Aljama

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

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

约书亚麦吉

所有的兼容性问题现在都得到了解决

约书亚麦吉

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

安德烈·安杰洛

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

类的未识别属性“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'。

任何建议吗?

o要晃龙

更新

3.4.8

更新5/2

3.4.7

更新5/1/20

3.4.6

更新4/30

3.4.5

更新4/22

3.4.4

更新4/22

3.4.3

更新信息

3.4.2

更新4/18

3.4.1

更新4/17

3.4

-更新4/15的注释和数据

3.3.9

更新与链接的深入描述的模型

3.3.8

更新4/15

3.3.7

更新4/13

3.3.6

-更新

3.3.5

-轻微的bug修正(绘制数据无法匹配模型的错误)
-通过改变数据选择算法调整精度

3.3.4

4/12更新,引入了使用“r0analysis”命令绘制R0随时间变化的能力

3.3.3

更新4/11

3.3.2

更新4/10

3.3.1

更新4/9

3.3

更新4/8

3.2.9

更新(4/6)

3.2.8

-更新

3.2.7

-修复

3.2.6

图像

3.2.5

-微小的更新和修正

3.2.4

- 改进初始参数近似值(米兰巴蒂斯塔提供)

3.2.3

更新的例子

3.2.2

-更新的数据从4月2日

3.2.1之上

图像

3.2

更新4/1

3.1.9

-bug修复

3.1.8

-更新美国东部时间3月31日下午8:40

3.1.7

实例 - 更新美学

3.1.6

更新的例子

3.1.5

今天 - 更新图(3/30)

3.1.4

错误修复

3.1.3

更新的例子

3.1.2

图像

3.1.1

-compatibility笔记

3.1

更新的例子

3.0

-更新的情节和固定小错误

2.9

-增加了死亡率

2.8

更新的例子

2.7

- 新增能力禁用情节,创造了一个活脚本制表每个国家的R0值

2.6

员工印尼

2.5

-bug修复和兼容性

2.3

兼容性

2.2

试图修复额外的变量名兼容性问题

2.1

兼容性

2.0.9

修复了所有的兼容性问题

2.0.8

-bug修复

2.0.7

图像

2.0.6

-描述

2.0.5

- 更新日期蜱

2.0.4

-new数据源(更新数据库)

2.0.3

-描述

2.0.2

- 更新兼容性

2.0.1

更新描述

2.0

-由米兰巴蒂斯塔提供的应用更新(RMSE校正,自动参数选择)

1.0.4

-名称变更

1.0.3

员工的标签

1.0.2

固定住脚本

1.0.1

-添加实时脚本生成情节