图像缩略图

FitViruscv19v3(Covid-19 SIR模型)

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

38下载

更新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值为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(“美国”)和R0s&R0s_plot美国只(也未与默认的工作),我得到了所有的情况如下:

无法获取参数。
ini:beta=0.242097 gamma=0.161398 N=2.161792e+07 IO=83.993
N = 3.04206e+09 IO = 127452
与国家/地区错误:我们(这个是r0s.mlx代码)

谢谢!

穆罕默德·阿劳伊

本·罗伯斯

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

莎拉达谷夫

当我们尝试运行代码时,我们会为Zimbabwe和赞比亚出错。
错误: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潘迪

请任何人可以帮助我了解一下下面的代码是做:
对于i=1:长度(C_原点)
如果i==长度(C_orig)
休息
结尾
如果MAX(C_orig)<10000
如果c_orig(i + 1)> 1.5 * c_orig(i)&& c_orig(i)> 10
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模型参数
接触频率(测试版)0.244(1 /天)
去除频率(伽马)0.123(1 /天)
人口规模(N) 42561
初始案例(I0)0
基本代表数(R0) 1.989
复制数(R) 0.59
结束复制编号0.41
触点之间的时间(TC),4.1(天)
传染期(TR)8.1(日)
最终状态
最终案例33779
最终易感物质数量为8781
每日预测25 - 5月2020年
总纳米
增加纳米
估计的逻辑模型参数
疫情规模(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年8月23日结束疫情(5例)
流行病结束(1例)14-2020
统计数字(个案总数)
观测次数118
自由度114
根均方误差484.562
R-Squared 0.998
调整0.998平方
F-统计与零模型15782.6
p值4.2134e-149
统计数字(每日新增病例)
观测次数117
自由度113
均方根误差180.421
R-Squared 0.758
调整0.75平方
F-统计与零模型119.252
p值7.22686e-35
方法
总案例重量0.5
感染率重量0.5
目标函数值3545.37
退出条件(1 = OK)

秋天的李

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

Yafia Radouane

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

ANKIT潘迪

我得到以下错误:

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

谁能帮帮我!!

Yahyeh Souleiman

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

秋天的李

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

秋天的李

在美国,台湾,新加坡测试y产量误差,这是否会因为物流曲线的刚性参数而带来使用?是否可以添加5个参数的Richard物流曲线,以更好的模型拟合?

秋天的李

只是为了分享,结果和死亡结果。也可以从https://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data/csse_covid_19_time_series。CSV在其中确认全局是结果和死亡是死亡全局,只要重命名两个CSV到相应的.txt会这样做,通过略微修改,模型可以更有效地运行。

Lissette Morales.

约书亚先生,我是一位数学老师,我想用他的模特建模哥伦比亚的哥伦比亚圣玛尔塔的科迪德案例。你能告诉我我怎么能做的?谢谢

Antonio Vivaldi.

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

Khaoula Briki.

嗨,Joshu,我有个错误
FitViruscv19v3(“意大利”,'Prn','On')
使用webread时出错(第122行)
无法建立到“data.humdata.org”的安全连接。原因是“错误:14090086:SSL”
例程:ssl3\u获取\u服务器\u证书:证书验证失败”。请检查您的证书文件
(c:\ program files \ matlab \ r2017b \ sys \证书\ ca \ rootcerts.pem)用于过期,丢失或无效
证书。

JM2

会做。

ST SE.

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

Antonio Vivaldi.

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

本·罗伯斯

万分感谢!我一直在欣赏你的模型很长一段时间!

JM2

这必须是由于HDX数据库中的拼写错误。我会看看这个本恩。

本·罗伯斯

我相信4/21/20每天的美国案件是不正确的。从维基百科,这个数字是25,304(https://en.wikipedia.org/wiki/2020_coronavirus_pandement_in_the_united_states.).图表上的数字接近4万。

JM2

文章正在更新中。

平硐那迦

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

李智

你好Mr.Joshua,这个代码是如此之大!但是,当我运行它,我就表索引频繁出错。我搜索帮助中心,它说,“与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
钙:β= 0.0292718伽马= -0.169065 n = 602872 i0 = 112.561

杰西·法根

约书亚,这很棒。非常感谢。从3月15日起,秘鲁我们受到严格严格的检疫(未定于4月26日之前结束)。我非常感谢您的快速反应。

JM2

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

杰西·法根

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

大卫·弗兰科

杰西·法根

非常感谢,约书亚!

JM2

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

杰西·法根

对不起,如果这似乎是s简单的问题。我注意到了各种参数有“可选输出”的代码中,但我似乎无法获取这些数字。命令为此输出看起来像什么?我有兴趣了解res.ro,res.beta,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

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

Antonio Vivaldi.

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

JM2

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

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

Antonio Vivaldi.

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

JM2

Antonn嗨,你是哪国人在看什么?本质上会有差别,因为数据来源是不一样的。

Antonio Vivaldi.

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

JM2

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

Gergely塔卡克斯

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

Antonio Vivaldi.

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

JM2

安顿,我注意到我的数据处理算法的最新版本存在一个小错误。请尝试最新版本。您应该发现近似值更像。

JM2

我会看看这个

JM2

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

Antonio Vivaldi.

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

奥尔德林棒棒糖

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

它不适用于Matlab 2010B。

闫炳海

神奇的代码!

Hiroshi汤川

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

维托66

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

罗伊陈

嗨,约书亚先生!你在这里做的工作令人印象深刻!
我是来自香港(出生于台湾)。如果我会问,你可以做更新为我的国家和港台,好吗?
你的工作将帮助我们。
请每周提供Exmaples(也许)的更新?(如果你不能)
非常感谢你的好意!

Hiroshi汤川

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

董格雷奇

请提供最新版本的链接

JM2

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

里尔Aljama

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

fitVirusCV19v3( '菲律宾', 'PRN', '上')
无法获取参数。
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行)
绘图数据(C,日期0,国家)

JM2

完毕!

Hiroshi汤川

嗨,乔舒亚·麦基先生!
非常感谢您对所有的这些。
你能帮我添加一个我的国家日本的例子吗?
如果不麻烦你的话,你能把新加坡和澳大利亚也加进去吗?
非常感谢。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行)
Clim=钙钙离子浓度(b);

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

JM2

例如印度尼西亚

JM2

安东。

Antonio Vivaldi.

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

安德烈Mitrasca

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

JM2

-Updated,再次尝试解决旧Matlab版本的兼容性问题

JM2

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

ST 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的文档或
matlab.lang.makeValidName以获取更多信息。

JM2

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

莱昂汉堡

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

使用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&选项=表

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

误差在fitVirusCV19v3(线124)
结果= webread ('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-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;

ST SE.

很高兴看到正在更新的图形。

ST SE.

何塞玛丽亚Jr。

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

Suksan Suwanarat.

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

Buldus2.

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

有什么建议吗?

o要晃龙

Matlab释放兼容性
使用R2019b创建
兼容R2019B及更高版本
平台兼容性
视窗 苹果系统 Linux.

社区宝藏狩猎

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

开始狩猎!