图片缩略图

广义西珥流行病模型(拟合和计算)

版本4.8.8 (13.7 MB) 大肠Cheynet
西珥扩展模型的数值实现死亡时间和回收率

69下载

更新2021年2月15日

从GitHub

视图版本历史

查看许可GitHub

广义西珥模型与七个州[2]是数值实现。实现完成从头除了配件,依赖于函数“lsqcurvfit”。因此,目前的实现可能不同于一个用于ref。[2]。

这个Matlab实现对裁判也包括一些重大差异。[2]。其中之一是死亡的表达率和恢复率,分析和经验是时间的函数。这个时间依赖性背后的想法是死亡和回收率应一个恒定值随着时间的增加。如果死亡率保持不变,死亡的人数可能高估了。出生和自然死亡不是模仿。这意味着人口总数,包括死亡病例的数目,是保持不变的。注意ref。[2]是一个预印本,不够同行评议,我没有资格来评判文章的质量。

目前提交包含:

——一个SEIQRDP函数。米,用于模拟的时间历史传染性,恢复和死亡病例(等)
——一个fit_SEIQRDP函数。用于SEIQRDP m估计的八个参数。在最小二乘意义上。
-一个例子文件文档。mlx,介绍了数值实现。
Example_province_region——一个例子文件。mlx使用收集的数据的约翰霍普金斯大学COVID-19列病为湖北省(中国)[3]。
Example_Country——一个例子文件。mlx使用收集的数据的约翰霍普金斯大学COVID-19列病[3]的一个国家。
——一个文件“ItalianRegions。mlx“Matteo Secli写的(https://github.com/matteosecli),我修改了一个稍微健壮的拟合。
ChineseProvinces——一个例子文件。fit_SEIQRDP mlx,这说明了函数。米安装在for循环中使用的数据来自中国不同省份[3]。
——一个例子“uncertaintiesIssues。mlx”,说明了拟合有限的数据集的危险。
——一个例子“Example_US_cities。mlx”时,说明了拟合“恢复”数据不可用。
——一个例子simulateMultipleWaves mlx,说明了适合多个流行波。
-一个函数getDataCOVID读[3]约翰霍普金斯大学收集的数据。
——一个函数getDataCOVID_ITA Matteo Secli写的(https://github.com/matteosecli),收集更新的数据COVID-19流行在意大利的意大利政府[4]
——一个函数getDataCOVID_US收集更新的数据在美国从[3]
checkRates——一个函数。米图拟合和计算死亡和回收率(质量检查)
getMultipleWaves——一个函数。m模拟和适应SEIRQDP模型的情况下检测到多个流行波。

如果你需要导入的数据不包括在目前的提交,您可以在Matlab交互式地将它们导入工作区(https://se.mathworks.com/videos/importing -数据-从文本文件交互- 71076. - html)

任何问题,评论,或建议都是受欢迎的。

引用

[1]https://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology Bio-mathematical_deterministic_treatment_of_the_SIR_model

[2],L。杨,W。张,D。诸葛,C。&香港,l (2020)。流行在中国COVID-19动力学建模分析。arXiv预印本arXiv: 2002.06563。

[3]https://github.com/CSSEGISandData/COVID-19

[4]https://github.com/pcm-dpc/COVID-19

引用作为

Cheynet,大肠广义西珥流行病模型(拟合和计算)。2020年Zenodo, doi: 10.5281 / ZENODO.3911854。

查看更多的风格

评论和评级(117年)

Felin Wilta

嗨Cheynet,

理解。谢谢!

大肠Cheynet

嗨Felin,

如果隔离的最初报道数量为零,E的初始值,我和Q为零,所以仿真将“0”在任何时候的步骤。2020年1月,在许多国家活动案例的数量是零。我建议不使用数据在2020年3月之前,除了中国或者其他国家。

Felin Wilta

嗨Cheynet,
当我运行example_county模拟列病爆发的基础上拟合参数,当我使用较长时间(我初始的和最终的。从2020年1月22日e to1st 2021年2月)我得到的值e, I, Q, R, D都是零。但是当我适应较小的时间段(我。从2021年1月至2021年2月)我得到非零值。这导致比较example_country安装和真实的数据部分的图没有恢复(安装),活跃(安装),已故(安装)图,只有恢复(报道),活跃(报道),已故(报道)图当值都是0 E, I, Q, R D(长时间情况下)。我可以知道是什么导致了这和如何使值E、D I, Q, R,在长时间(我非零。从2021年2月22日2020年1月to1st)吗?
期待你的澄清,谢谢!

阿廖沙庄

嗨Cheynet,
感谢你你的答案! !你肯定是一个很大的帮助对我对这个模型的理解!再一次感谢您! !

大肠Cheynet

嗨,阿廖沙,

抱歉迟到的回复。我试着回答下面逐点:

1文件Example_Country。mlx包括国家的数据,定期更新。这些数据都可以在Github:https://github.com/CSSEGISandData/COVID-19。参数作为“猜”是一个初始猜测必要进行最小二乘拟合。这些用户给出的初始条件,并可以影响参数的拟合值。单位依赖于参数你看。他们的单位需要确保维方程的同质性。单位时间是“天”。在文件文档。mlx,λ和kappa解释更多的细节。

2这是初始条件。所以他们是“猜”的价值观

3是的,我用1小时的时间步长。由于单位时间是“天”,我需要1/24天时间步。它主要用于实际的目的。我用一个稍微的修改版本龙格-库塔算法依赖于假设参数k和λ两个时间步之间无显著变化。如果您使用一个时间步长太大,模拟的准确性将会下降,你甚至可以有收敛问题。然而,代码应该仍然工作相当好如果你增加时间步长到12小时,即dt = 1/2甚至dt = 1,即一天因为卡帕和λ的变化顺利,时间在目前的代码

4你可以自由地做任何改变你想要的。有几种方法来适应模型数据。拟合过程我以前不是最简单的方法,因为我适合第一λ,卡帕来限制他们可能值的范围,然后应用总体符合严格的上下极限参数。一个更直接的(但不一定是更好的)方法是适合λ和kappa第一,并且不允许他们的价值观改变了。第二个适合可以起诉检索其余的参数。

阿廖沙庄

你好再次,Cheynet,
我设法解决这个问题在此之前!我有几个问题,将非常感激如果你能帮助我明确我的疑虑。

1。Example_Country下文件。mlx和部分广义西珥的拟合模型的真实数据,有一个地方我必须输入alpha_guess, beta_guess,等等。这些数据来自国家的数据,我想分析或只是一个受过教育的猜测吗?此外,这些参数使用的单位是什么?如每天/每周/每1000人口,等等。
2。在相同的部分,有一个“lambda_guess = (0.01, 0.001, 10);%回收率”和“kappa_guess = (0.001, 0.001, 10);%死亡率”。我可以知道这些值是什么意思和如何获得他们吗?
3所示。下部分的模拟基于拟合参数的列病爆发,你使用一个时间步的1/24。
dt = 1/24;%时间步我可以知道你选择这个价值和它如何影响输出?
4所示。我需要做任何修改在函数中的值fit_SEIQRDP, SEIQRDP checkRates ?我用全球时间序列数据证实,死亡和恢复情况下从github链接您共享。我下载的csv文件和进口他们直接从源而不是获取。这是唯一的区别。我需要做任何修改的参数为每个国家我分析?

我有一些不能理解的代码我还是一个初学者,会非常感激你的帮助! !

阿廖沙庄

好的,非常感谢你的帮助Cheynet !

大肠Cheynet

嗨,阿廖沙,

您看到的消息来自这样一个事实:indR是空的。说不同,它意味着你修改的函数getDataCOVID未能正确读取excel文件。我不知道你如何修改了文件,所以我不能帮助更多。另一种是你手动导入工作区中的excel文件,让Matlab创建一个函数来读取excel文件和重用这个函数(少量修改后)。

阿廖沙庄

嗨Cheynet,
我试图改变代码在函数的getDataCOVID.m。而不是使用Github的数据存储库,我下载的数据和分离成excel文件。我进口数据和改变了代码如下。然后我跑Example_Country文件中的这个函数。那么错误的索引超出了数组元素的数量出现了下面的线

indR = indR (1);

我怎样才能解决这个?

% %导入数据
Ndays =地板(现在)-datenum (2020、01 22) 1;% - 1天,因为数据更新延迟24小时
选择= delimitedTextImportOptions (“NumVariables”, Ndays + 5);
选择。VariableNames = [“ProvinceState”、“CountryRegion”,“纬度”、“长”,repmat(“数据”,1 Ndays + 1)];
选择。VariableTypes =[“字符串”,“弦”,repmat(“替身”,1 Ndays + 3)];
%指定文件级别的属性
选择。ExtraColumnsRule =“忽略”;
选择。EmptyLineRule =“读”;
状态={“证实”,“死亡”,“恢复”};
2 = 1:元素个数(状态)


{二}如果strcmpi(地位,“确认”)
tableConfirmed = readtable (data_confirmed。xlsx’,选择);

{2}elseif strcmpi(地位,“死亡”)
tableDeaths = readtable (data_deaths。xlsx’,选择);

{二}elseif strcmpi(地位,“恢复”)
tableRecovered = readtable (data_recovered。xlsx’,选择);
其他的
错误(“不明身份”)
结束
结束

时间= datetime(2020、01 22):天(1):datetime (datestr(地板(现在),“语言环境”,en_US) -datenum (1);

Md Nasseef

嗨Cheynet,
谢谢你!我已经安装了最新版本的MATLAB R2020b和代码工作正常。

大肠Cheynet

嗨,Md Nasseef,

我认为错误来自这样一个事实:你至少需要Matlab R2018使用可选参数“选择= delimitedTextImportOptions”。在评论中你可以看到由用户可能的解决方案来克服这个问题(见注释在2020年4月18日)

Md Nasseef

你好Cheynet,
我得到一个错误运行getDataCOVID (getDataCOVID误差(14)行选择= delimitedTextImportOptions (“NumVariables”, Ndays + 5));我用MATLAB R2017b。你能指导我解决这个问题。谢谢你!

大肠Cheynet

代码更新,但是有几个小错误被纠正后,数据库更改。通常的例子现在应该正常工作。

大肠Cheynet

嗨Fayeza,
谢谢你的反馈!我打算更新代码,以方便用户选择合适的开始和结束时间。这应该是一个星期内完成

Fayeza Fayeza

嗨Cheynetl,
我知道报告的数据从1月22日开始,但代码工作从6月开始我们能做一些改变代码来从说8月?

徐汇杨

大肠Cheynet

嗨,布鲁诺,

向量(a, b, c,……)为每个参数组不同的猜测。这是一个紧凑的方式来组织不同的猜测值。低和上界fit_SEIQRDP内设置功能,用户不需要指定它们。

总共有10个参数,所以所做的配件不是试图找到十佳值同时(至少没有直接)。第一次安装完成的死亡(3参数)和恢复率(3参数)。参数估计使用个人率来衡量。这个拟合给出了狭窄的上、下边界的参数k和λ。所以第一步后,六个十参数几乎是固定的。

布鲁诺•席尔瓦

嗨Cheynet,

谢谢你的回答。你澄清我怀疑的一部分。对不起如果我不清楚我的λ和卡巴的问题:当我定义向量(a, b, c),这意味着什么?例如:“a”是一个下限,“c”是上限,速度是“b”?或者是定义的时间序列(低限制,中点,上限)?

大肠Cheynet

嗨,布鲁诺,

谢谢很多的反馈!

我不确定我理解你的问题。所以我试着回答:
lambda_guess kappa_guess值被用来促进配件。让说希望得到最低的一个函数。如果第一个猜测的值由用户提供接近绝对最小值,该算法将适当的收敛。如果猜值是不够的,一个可能的局部最小值。最小二乘拟合的算法,是一种常见的问题。

如果你的问题是关于“物理”kappa值λ,文件文档。mlx描述它们,但我认为这是一个视觉的缺陷在网上显示文件的文档。mlx因为这些方程不出现。

报告数据的分散在checkRates(测量值)。所以色散取决于数据源。如果你认为数据来自意大利,例如色散很小。色散将更大的法国或比利时如果你举个例子。

我适当地回答你的问题吗?

布鲁诺•席尔瓦

你好,Cheynet。
首先,祝贺你的有趣的工作。我有几个小问题要问:什么是选择向量lambda_guess和kappa_guess的意思吗?
checkRates测试,测量值必须始终呈现出色散的色散example_Country相似?这些测量值是什么?

大肠Cheynet

嗨拉吉,
问活动案例的数量。在目前的Matlab提交,它被称为“隔离”,因为它假定每种情况下,阳性是孤立的。这个新的“状态”,表示问会有两种结果:康复的或是已经死去的。注意,在美国州和城市的情况下,活动情况下的数量是/不可用,所以我使用的数量总数确诊病例-死亡病例的数目,而不是。这是不理想,但总比没有好。

Raj基肖尔

嗨Cheynet,一个非常小的怀疑。问(隔离)总活跃情况下是一样吗?或等于总确诊病例吗? ?

大肠Cheynet

嗨,维,
哦,我明白了!谢谢你,我没有注意到错误的点(2)。我将正确的下一个版本。

维卡斯•沙玛

你好Cheynet,高兴看到你考虑我的想法。(2)而言,正如我前面指出的,拼写错误存在
Documentation.mlxillustration where you explain the Numerical solution part.
这个错误不是在任何m文件或实现的部分。所以结果是不受这个拼写错误的影响。然而,一个
不应混淆矩阵,当他看到documentation.mlx插图对位。
问候

大肠Cheynet

嗨,维,

谢谢很多的反馈!
1)你是对的。我还指出,kappa_0 lambda_0应该的维数的倒数。我更新了文件文档。mlx适当定义的常数。
2)真奇怪,我仍然看到矩阵是7 x7。函数SEIQRDP或fit_SEIQRDP吗?
3)你提出了一个很重要的问题!我花了几个小时看E0和钱数。他们的确会影响健康。理想情况下,他们也应该自由参数,但让很多未知……我更新了例子稍微修改版本的建议,与中国的数据似乎工作得很好。

维卡斯•沙玛

你好大肠Cheynet。许多祝贺奇妙的工作。一些拼写错误/建议等需要注意的:
1。k1和lamda1都应该有维度的T ^(1)或其他根据不同公式复苏和死亡率。它绝对没有任何影响的结果,但数学指数项应该零维度作为一个整体。
2。矩阵应该7任务,但它显示出7 by8目前。
3所示。当前E0和I0使模型对扰乱高度敏感数据专门为印度的最终评估。所以设定初始猜测孵化时间5天(在大多数文献报道)应符合以下假设
I0 = 0.1 * (1);%初始感染病例报告病例的10%
E0 = 5 *钱数;%初始暴露病例数是5倍初始感染。
问候

大肠Cheynet

嗨,哈维尔,
这是一个好问题。艾凡,我都不知道。所以E0和钱数也不知道。如果确诊病例的数量不为零,那么它是极不可能的E0或I0是零。是错误的将它们设置为等于零,因为它会妨碍模拟。E0和钱数是任意的选择。我选择使用E0 I0等于Q0值,但其他的选择是可能的。

哈维尔Montoliu

你好大肠Cheynet !很有趣的项目!我有点初学者和有一个问题,你选择值时遵循什么crietria最初的暴露和感染人口(E0和钱数)?我看到Q0最初的活跃情况下(Q0 =确认(1)恢复(1)死亡(1)),但为什么你设置值E0和I0首次确诊病例(确认(1)、总repoerted例在初始时间)?
谢谢你!

大肠Cheynet

为了避免任何误解:不涉及机器学习在这个模型中,所以这里问题“模型训练”是一个貌似没有任何意义的。

大肠Cheynet

嗨Tsardoz,

如果你看一下fit_SEIQRDP函数,您将看到合适的算法并不适合所有的参数在同一时间。例如,死亡率,第一次估计是获得和约束来限制风险,以达到局部最小值。的回收率,如果可用,使用类似的方法。这大大减少过度拟合的问题。会得到改善吗?毫无疑问。然而,用户仍然是负责评估是否配件是有意义的。这部分的目的函数“checkRate.m”。

此外,拟合的算法依赖于一个受限范围的参数。这就是为什么lsqcurvfit nlinfit代替。最后,评估是什么“现实的参数值”仅仅是有意义的,因为有限的信息参数是现实的,他们真正的意思是,什么是数据的来源。例子:有一个在这个线程的讨论,指出所使用的参数δ彭等人被错误地定义为“逆检疫时间”。参数的物理解释的问题,而不是它的价值。

Tsardoz

“会有过度拟合,如果死亡或恢复速率是恒定的时间。”
相反,我害怕。你试着估计的多个参数有限的数据模型overfit越多,产生不良的结果。
目标应该是产生实际的参数值不伦敦训练集的预测模型。

大肠Cheynet

嗨Tsardoz,
我不管你如何计算R0值,这意味着我不能告诉如果你施加一个适当的方法。请注意,我没有(到目前为止)包括任何计算的基本繁殖数量。这是一个学习的。会有过度拟合如果死亡或回收率随时间是恒定的。是显式声明的模式处理时间复苏和死亡率。适当的使用合适的算法是用户的责任。总之:垃圾,垃圾。

大肠Cheynet

嗨,Md Humayun Kabir,
检查函数“getDataCOVID”在您的工作空间。Matlab版本不会影响这个问题。

Md Humayun Kabir

你好e . Cheynet
我的MATLAB是2018 b版本。当我运行.mlx文件,我面临以下问题:
未定义的函数或变量“getDataCOVID”。
你能请让我知道我做错了什么吗?
提前谢谢你。

大肠Cheynet

嗨,路克鲁尔,
λ0、λ1κ0,κ1经验系数最小二乘拟合获得的。如果可能的话,我先计算估计使用已故的计算速度和恢复情况。最后的估计是获得使用的总组方程。
变量“猜”表示,这是一个猜测。它是任意选择的开始。
我没有试图计算出基本的繁殖数量。我这里不会有多大帮助。
“τ”变量是一个时间延迟,提高荷载分配的造型的回收率。λ0,λ1无因次系数调整。λ0回收率随着时间变得很大。
κ0和κ1也经验系数。κ0是最初的死亡率。κ1包括隐式信息死亡率的时间延迟。我可能会改变他的更明确的公式进一步版本。

路克鲁尔

这就跟你问声好!
我是一个初学者,我非常感兴趣您的项目,帮助了我很多。为了更好地理解你的工作,我有几个问题要问。
你怎么λ0,λ1、κ0κ1吗?
你估计初始猜测参数如何?
基本的公式复制号码是什么?是公式β*δ*(1-α)^ T正确吗?
lamda_guess的三个变量是什么意思?kappa_guess的两个变量是什么意思?
我会很感激如果你能给我一个回复< 3

Fryese39

大肠Cheynet

嗨,比尔,
这是一个好问题。如果恢复的数量是未知的,我认为这是一个好主意来设置初始条件的恢复E0不同于零。我没有试图了解一个不同的值的E0会影响隔离和已故的计算曲线。你建议数量可能是现实的。我不知道足够的主题来判断。我猜E0的选择将影响参数“λ”。然而,系统的常微分方程是耦合的,所以所涉及的参数“λ”不止一个方程。这意味着E0只有部分(但也许重要?)在拟合过程中的作用。

比尔·巴德

嗨艾蒂安,感谢您英勇的努力处理的数量恢复的情况是未知的。你的例子说明了我们但我主要获得远期预测英国感兴趣,我住的地方(英国也不发布数据恢复)。

我很好奇,因为恢复的情况是未知的,你试过播种的解算器的恢复等于一个简单的死亡的人数多吗?

我试着这对英国使用恢复=死亡* 1.5;没有其他调整输入数组,返回的代码非常相似的结果意大利时滞版本,具有良好的报告数据和非常合理的曲线相吻合。

我吃惊地看到,恢复/死亡的比率为拟合曲线为我英国的例子,播种一个标量为1.5,是时候变体和意大利很相似。所以你的解算器似乎几乎神奇的属性。

不需要回复,但你可能感兴趣的任何评价。

比尔陈

大肠Cheynet

嗨征服者,没有. csv文件下载。一个函数从GitHub库读取表的内容并将其存储为csv。然后在本地工作区导入csv,读取和删除。有替代方法,可以使用。

Yerlan Amanbek

ZAINULABADIN征服者

需要下载. csv文件

戴尔Groutage

嗨Cheynet,对不起发布的脚本。我只是认为你可以运行脚本“我们”和“韩国”,看到它的工作原理。你可能感兴趣的情节“活跃”的情况下是如何接近顶峰……在4月30日。有趣的是,很多科学家正在使用的数据和预测证实每天变化预测的高峰,这是一个对称形曲线,而“活跃”的预测曲线与长尾追逐是不对称的,我相信这是更现实的。谢谢你的评论!

大肠Cheynet

你好戴尔,
我不建议发布整个Matlab脚本在评论部分。众所周知,美国没有“恢复数据”城市。我没有错误与该国“日本”。数据加载正确的拟合成功完成我上传最新的版本。您可能使用一个旧版本更容易错误。

戴尔Groutage

E。Cheynet运行代码我张贴位置‘我们’,‘韩’,‘日本’,你会发现这个问题。“我们”和“韩国”工作,但并不“日本”。当你看csv数据文件,似乎有数据证实,死亡和恢复,但是当你使用位置‘日本’你的代码不接tableConfired, tableDeaths或tableRecovered。

大肠Cheynet

你好戴尔,
我不确定我理解你的意思。如果你谈论Github页面,您不能修改主分支,这是我使用的一个。

戴尔Groutage

E。Cheynet,注意,如果您运行您的代码和我的增加,数据需要的文件夹设置。也就是说,如果你跑美国数据,必须有一个文件的子文件夹标记在无花果文件夹…无花果/我们……或者如果你的位置是韩国,那么必须有一个文件设置为…无花果/韩国。

大肠Cheynet

你好赛米亚,
我不能重现这个错误(R2019)。检查如果您使用最新版本的提交。如果你仍然有问题,你可以通过Matlab使用手动调试工具

赛米亚Sarothi

你好e . Cheynet
我的MATLAB是2019版本。我面临以下问题:

错误使用lsqcurvefit(第262行)
函数值和YDATA大小不相等。

错误fit_SEIQRDP(第90行)
[多项式系数,~,残余,~,~,~,雅可比矩阵)= lsqcurvefit(@(对位,t) modelFun1 (para t),…

大肠Cheynet

另一种替代方法是使用功能:websave (dummy.csv, yourFileName);将想要访问读取文件并将其存储在互联网上作为一个csv文件。然后你可以使用传统的方法读Matlab的csv文件。

大肠Cheynet

嗨米Farooq,
检查您的Matlab版本是否足够。我认为你至少需要使用Matlab R2018b函数“delimitedTextImportOptions”。
或者,您可以手动导入表,问Matlab为你自动生成一个函数,您将使用的数据。

M Farooq

M Farooq

你好e . Cheynet

我想跑
[tableConfirmed, tableDeaths tableRecovered,时间]= getDataCOVID ()
和跟踪误差

未定义的函数或变量“delimitedTextImportOptions”。

错误getDataCOVID(14)行
选择= delimitedTextImportOptions (“NumVariables”, Ndays + 5);

你能请让我知道我做错了什么吗?
问候

Hamdullah Livaoglu

大肠Cheynet

据我所知,“三角洲”的维数的倒数时间所以不应该用百分比表示但在天^ (1)。

大肠Cheynet

谢谢迪翁。我已经重新定义了变量δ的传染性病例进入检疫在更新后的代码。

迪翁的话

由于大肠Cheynet快速响应和你所有的努力在创造这个神奇的代码实现。治疗三角洲作为一个更有道理。要明确δv△^(1)论文和代码:在代码中,δ= 1/8意味着人们进入检疫率为12.5%,而δ= 1/10意味着进入10%的速度。因此,增加分母逻辑上降低检疫的实际数量,增加感染。

戴尔Groutage

E.Cheynet……感谢包括华盛顿州。

大肠Cheynet

嗨迪翁,
我同意你的看法,三角洲的定义是奇怪。也许有更好的定义如果你看论文ref。[2]。在他们的论文中,他们不将它定义为检疫的倒数时间,但人们的速度输入隔离。这个更有意义....

[2]Munz, P。Hudea,我。穆,J。史密斯& r . j . (2009)。当僵尸攻击!:数学建模僵尸爆发的感染。传染病模型的研究进展,133 - 150。

迪翁的话

三角洲被定义为“平均检疫时间逆”,因此我认为在天逆时间受感染的个人花费在隔离。但是,增加分母δ(即。在检疫,增加的天数)会导致更多的感染。将三角洲作为时间在提高检疫检疫结果产生更少的感染,但整体曲线是不现实的。我不能告诉从代码如果我误解的意思δ(也许是检疫,尽管引用彭等纸将它定义为检疫时间)或者如果有一个错误。别人玩三角洲参数吗?

戴尔Groutage

E.Cdheynet……这是我试过……我修改你的代码为Example_US_cities新地点语句。mlx如下:

流([最近更新:,datestr(时间(结束),' \ n '])
位置=”,华盛顿”;
试一试
indC =找到(包含(tableConfirmed.Combined_Key、位置)= = 1);
indD =找到(包含(tableDeaths.Combined_Key、位置)= = 1);
捕获异常
searchLoc = strfind (tableConfirmed.Combined_Key、位置);
(searchLoc indC =找到({}):= = 1);

searchLoc = strfind (tableConfirmed.Combined_Key、位置);
(searchLoc indD =找到({}):= = 1);
结束

这是我的输出:
最近更新:04 - 4月- 2020
Combined_Key
______________________________

“亚当斯,华盛顿,我们”
“Asotin,华盛顿,美国
”本顿,华盛顿,美国“



“惠特曼,华盛顿,我们”
“雅吉瓦人、华盛顿、我们”
“佤邦,华盛顿,我们”
“未赋值的,华盛顿,美国

错误消息:

矩阵指数的范围来删除。

datetime误差/ parenAssign(58)行
条(rowIndices) = [];

错误DaleExample_Washington(38)行
确认时间(< = minNum) = [];

大肠Cheynet

“Example_US_cities。mlx”包含整个国家的一个例子。状态在这里定义为每个城市的和收集的数据库与同一个州的名字。显然似乎足够好,如果我们看看总人口。

大肠Cheynet

你好戴尔,
这对各州应该是可能的。但是,需要一个数据库存在,例如Github上最新的。我没有试着找一个。

大肠Cheynet

你好戴尔,
感谢很多的来信!
我不确定我理解你的要求,但目前的Matlab提交包含在美国已经与城市的一个例子:“Example_US_cities.mlx”

大肠Cheynet

嗨Jacobo,

主要原因是该脚本删除确诊病例很少数据,拟合是没有意义的。根据确诊病例的数量,有可能是变量“证实”成为空的。也可以触发错误如果运行(手动)两次相同的线路,因为向量的大小“证实”的变化。在这两种情况下,用户有责任检查向量的大小“证实”。

Jacobo白菜

你好,

我不能运行加拿大青年们的文件。它在40行说:“矩阵指数范围删除”。

戴尔Groutage

嗨,E。代码Cheynet,我一直玩……这是太棒了!现在我试图分析各个州,华盛顿州。我没有运气。你有任何代码的例子你发布多个城市?

大肠Cheynet

坏适合美国的一些城市似乎是由于这样的事实,我修改了回收率常数。这不是一个好主意。所以我决定回到一个依赖时间的回收率。

尤金·加拉格尔

新代码示例从美国跑得好与我20 Matlab优化工具箱。美国新城市生活剧本很好(有几个可怜的适合一些城市),但这是一个耻辱,美国没有准确的数据,但是,现在恢复那些被感染。知道中国将会是很有趣的,意大利和法国正在做这些恢复的数据,美国是不做。

尼克N

你好,Thaks为你漂亮的代码,
我有getDatacovid误差。m:选择= delimitedTextImportOptions

再次感谢。

Rejikumar K

你好,
我是Reji Kumar。
我的MATLAB是2012岁以上的版本。我如何使用代码吗?任何人请帮助。

Ranajoy公司古哈

嗨艾蒂安,
非常感谢你的解释。现在我怀疑是明确的。所以在mlx图文件的确认(报道)=确认(JHU数据)恢复(JHU数据)死掉了(JHU数据);从JHU数据然后匹配Quarntined Q (t)。我是困惑的确认(报道)在你的代码作为“证实”数字JHU数据。再次感谢你。

Ranajoy公司古哈

Ranajoy公司古哈

嗨艾蒂安,
非常感谢你的解释。我在我的理解仍有差距。请忽略我的上一个帖子。这是我的查询。在mlx图生成的文件是如何确认(报道),恢复(报道),死亡(报道)实际JHU相关数据?特别是如何确认(报道)数据图中有关“证实”JHU中的数据。以后,确认(报道)数据点减少在图后但在JHU从不“证实”数据。

大肠Cheynet

嗨Ranajoy,
你举起一个公平一点。Github托管的约翰•霍普金斯大学只有三个类别:恢复,确认和已经死去的。他们定义的“证实”的意思是“阳性”。这就是为什么确认的数量不能减少这个数据库。我猜“确认(感染性)”并不是最好的选择传染性病例不永远传染性。的确,在我上传的例子,我也使用术语证实。确诊病例,事实上,隔离的情况下,因为我认为在一个真实的情况下,一旦有人“证实”,他们是放在隔离,可能最接近“活跃情况下= confirmed-recovered-deaths”的定义。

Ranajoy公司古哈

你好,
如果我理解正确的话,约翰霍普金斯的数据被提取的地方有四个类别证实,死亡,恢复,活跃于约翰霍普金斯github(确认=死亡+恢复+活跃;在任何时间点的数据)。因此“证实”的约翰霍普金斯定义永远坠入死亡的总和,恢复,活跃。但在这种广义西珥模型确认的图继续下跌一段时间后的模型,所以我们不应该“积极的”数据,而不是‘确认’当我们匹配模型?

大肠Cheynet

嗨,尤金,
似乎约翰霍普金斯大学已经开始上传新的数据集与特定的关注美国在Github页面。我将等待他们完成上传在查看数据之前的一切。

尤金·加拉格尔

所有的* mlx文件现在运行的美丽。的情节Exampl4实际数据。mlx仍显示出一些负但注意,这些被忽略。最惊人的图形是Lombardi ItalianRegions.mlx区域图。flateening感染的曲线明显但会错过如果恢复和死的状态都被忽略了。
这是一个遗憾,你无法适应我们的数据与你的西珥模型由于缺乏数据恢复。刚才(4/1下午1点)约翰霍普金斯报告190740年美国证实感染,4127人死亡,7141年恢复。

大肠Cheynet

更新:意大利地区的数据已经更新在数据库格式发生了变化。如果你试图运行旧版本的代码,它不会工作得很好。

大肠Cheynet

黑尤金,
我也注意到这个警告。显然,恢复+报道死亡人数成为高于“证实”的数量的一些情况。这是奇怪的,但可以将报告错误。因为这个问题来自于数据库,我实现了一个应急的解决方案。在更新的函数fit_SEIQRD,我简单地禁止“实际情况”的数量变得消极,将其设置为零

比尔·巴德

嗨艾蒂安,我固定解样的问题我昨天提到的精细采样拟合曲线之前“差异”。现在我得到一个很好的情节每日报告的安装与价值观,至少在意大利。谢谢你的耐心和希望你得到你的无线网络工作。

大肠Cheynet

你好,
抱歉延迟的回复。我有瞬时的wifi(只有移动网络)失去了访问。我试着回答在不久的将来

比尔·巴德

嗨艾蒂安,我在这里,试图不让自己变得懒惰但我昨天才开始使用Matlab (IDL)我有经验。我希望你能给我一些指针来解决一个问题有关你的西珥造型。

我把你的青年们,包括英国在内的几个国家工作,我住的地方。然后我“diff”操作符应用于累积数组(安装和报道)来模拟日常情况。

我得到好的协议diff-ing累计报道数组在你的代码和报道日常其他来源的情况下,所以我的“差异”是好工作。然而当应用“diff”拟合曲线,他们低估了每日例报道了很长一段路。

我跟踪这个事实,拟合曲线比报告更精细采样值(如471个元素相比37在意大利的情况下)。

请您能给我一些建议在一般条款,如何使阵列整合与报道阵列安装“diff”返回可比的结果,如使D阵列整合青年们的死亡。

欣赏你能提供任何建议,再次感谢一些很棒的工作

Jacobo白菜

你好,

我得到一个问题同时为加拿大青年们文件建模。它在40行说:“矩阵指数范围删除”。

尤金·加拉格尔

嗨,我只是跑Example4后下载最新的代码和数据。在今天之前,西珥模型运行所有省份,但是今天9中国各省的建模-确诊病例。程序输出一个警告。

比尔·巴德

你好,通知你我只是下载ECheynet-SEIR-aefecf6跑所有例子在Matlab R2020a执行好。

许多感谢和尊重你先生对一些优秀的代码!

大肠Cheynet

嗨,乔丹,
您可以检查时间(1)的价值。如果时间(1)> = datetime (2020、04 01), N = 0。我还提到,数据库由约翰霍普金斯大学改变了昨天,所以例子不会工作得很好。我需要更新例子1到4。

乔丹

东西是不正确的,因为它返回N = 0,这是dt正确吗?谢谢你的帮助! ! !
dt = 0.1;%时间步
time1 = datetime(时间(1)):dt: datetime (2020、04 01);
N =元素个数(time1);
t = 0: n - 1。* dt;

尤金·加拉格尔

谢谢。这是一个耻辱,约翰霍普金斯大学网站并不是将csv文件中恢复数据。让我们希望他们开始恢复数据,以便您的代码可以运行与未来的日期。第一次,美国约翰霍普金斯大学网站清单恢复JH的网站。交互式网页,今天是第一天,他们为美国提供恢复数据(827人死亡,354年恢复意大利:20499人死亡和112982恢复):
https://coronavirus.jhu.edu/map.html

约书亚阿萨莫阿

非常感谢,Cheynet。

大肠Cheynet

嗨,约书亚和尤金,
你是对的,有一个错字所使用的url地址。它现在应该纠正。Github帐户来自约翰霍普金斯大学使用一个更新数据集没有“恢复案例”的数量。这是一个遗憾,因为这是一个有价值的信息拟合过程。所以我决定使用数据更新到23-03-2020只。主要原因是提交的目的是简单地展示了如何广义西珥的拟合模型可以通过Matlab。

约书亚阿萨莫阿

请我下载新的更新但我有这个错误消息。请,我怎样才能解决这个问题

错误使用urlreadwrite(第92行)
服务器没有找到一个资源匹配这个请求。

错误urlwrite(52行)
(f、状态)= urlreadwrite (mfilename catchErrors, url,文件名,变长度输入宗量{:});

错误getDataCOVID(36行)
urlwrite(文件名,“dummy.csv”);

尤金·加拉格尔

艾蒂安。我下载新的文件。例二,但Example2,青年们和Example4停止以下错误。非常感谢您在这段代码工作。

错误使用urlreadwrite(第92行)
服务器没有找到一个资源匹配这个请求。
错误urlwrite(52行)
(f、状态)= urlreadwrite (mfilename catchErrors, url,文件名,变长度输入宗量{:});
错误getDataCOVID(36行)
urlwrite(文件名,“dummy.csv”);

大肠Cheynet

示例文件现在应该正常。

大肠Cheynet

嗨,尤金,
谢谢的信息!我看到约翰霍普金斯大学创造了一个新的数据库。然而,他们不再包括“恢复”的数量作为时间的函数。这是奇怪的……今天晚上我将尝试更新的例子。

尤金·加拉格尔

艾蒂安,所有4例子和昨晚意大利分析工作,但当约翰霍普金斯更新他们的数据,Example2,青年们,Example4产生错误的时间变量3-24-2020无效时间向量(NaT)。意大利的例子仍然有效,但是它下载数据来自意大利。这是错误信息,和最后一个元素的向量是NaT,不是一个有效的日期。
错误使用dateformverify(第18行)
DATESTR失败转换日期数量到目前为止向量。日期数量范围。
错误datestr(第200行)
S = datef。ormverify (dtnumber dateformstr islocal);
datetime误差/ datestr(第801行)
s = datestr (datenum(这),变长度输入宗量{:});

天使苏亚雷斯

嗨。

我怎么能解决以下:

> > fit_SEIQRDP (Q, R, D, Npop E0,钱数,时间,猜,变长度输入宗量)
试图执行脚本变长度输入宗量作为一个功能:

谢谢

大肠Cheynet

嗨,尤金,
谢谢的消息!我没有注意到金融工具箱函数所需的“今天”。更新版本的代码我写了:“地板(datenum(现在)”而不是“datenum(今天)”

约书亚阿萨莫阿

这些代码是真正伟大的。大肠Cheynet博士,谢谢您帮助我们与这些。
请,你能帮我们如何画出残差?

尤金·加拉格尔

这个程序是突出。我将使用它在我的概率论与数理统计课程演示用数据拟合模型的参数。我需要一个编辑的程序运行,“今天”,检索今天的日期只有Mathworks金融工具箱,所以我只是以适当的格式输入今天的日期。

大肠Cheynet

你好何塞,
谢谢你的建议。不幸的是,我没有资格也没有时间来实现或导致这项工作。

大肠Cheynet

他Jacobo,

我不认为它会工作得很好对世界由于不同的列病之间的“时间延迟”的位置。同样重要的是要记住,我们不应该尝试做长期预测函数SEIQRDP.m。这是由于存在很大的不确定性,特别是当数据集是有限的。

Jacobo白菜

你好,
嗨Jacobo,
我有更新的示例文件有教师描述变量“猜”,所使用的数字是什么。
回应:
似乎你有固定它,更直观!神奇的谢谢。很好的代码。
___
进一步的问题:
我想做一个西珥的模型世界。我用你的代码,但也许创建一个叫做“世界”区域添加所有情况下,死亡,等等……会有帮助吗?
我走在问题通过添加4 .mat文件我进口一个. csv,我添加了该地区“世界”。
就像一个建议,这将是一个不错的主意对世界有一个地区。

到目前为止,我无法得到适当的预测,曲线不够陡峭。我还在和几个值。

穆里斯

这就跟你问声好!我同意....如果你不介意的话,虽然速度慢,但是我们可以使用这个平台.....合作我已经有一些很好的人,所以如果有什么你想实现,愿与他人并行化,让我知道。

这就是我现在的想法:
- >创造“包装器”在“健康”,允许运行所有行数据(国家和地区)
- >输出. csv或xls的输入和输出
- >添加其他指标的模拟结果,等
- - - >天直到峰值
推荐- - - - - - >感染总数
推荐- - - - - - >总死亡人数
- >合并数据(也许一个API)与其他人口统计信息,也许从世界经济论坛或谁
- >运行输出数据的一些数据分析,试图寻找模式和相互关系
- >运行输入和输出之间的相关矩阵,以评估拟合参数的敏感性的结果都符合和“后proccessed”变量

你怎么认为?

大肠Cheynet

你好何塞,
我已经上传一个更新版本的“包含”功能昨天“strfind”所取代,对于那些使用旧Matlab版本。我不建议你揭示你的电子邮件。否则你会得到严重骚扰。

穆里斯

你好Cheynet,

这是我所做的工作的兼容性问题

% % % % % % 2015年以来“包含”难道不工作
% id = strfind (tableRecovered.ProvinceState,“我们”);
%指数=找到(不是(cellfun (isempty, id)));

对于另一个问题,我只是使用plot命令而不是原始的,如下:

情节(time1, Q, r, time1, r,“c”, time1, D,‘g’, time1,我,“b”,“线宽”,2);
抓住
情节(时间、Confirmed-Recovered-Deaths‘罗’,时间恢复,“bo”,时间,死亡,“去”,“线宽”,1);

我带领一群朋友在巴西,在不同的工作模式,一个是其中之一。如果你能与我们取得了联系,那就太好了。我不知道如果我可以在这里发表我的电子邮件,但你可以找到我在linkdin Jose Roberto克拉克里斯。

谢谢,

费边

哦那是同时发布。非常感谢Cheynet先生,这是太棒了!我是一个科学家在电化学的申请,但现在我使用我的时间在家看一看现在到其他重要的话题:)

大肠Cheynet

嗨,费边,
我有上传新版本的数据。垫文件不再是必需的。使用函数“getDataCOVID”,数据直接从Github库读取上面提到的。

费边

嘿,社区,

我可能会有一个非常基本的问题。我最近统计数据从GitHub(这种疾病。csv文件)。我怎样才能将数据传递给数据。m文件?
我试图复制粘贴附加列到一个表格(恢复,确认、死亡、时间)直接在Matlab和保存数据的变化。m文件。
我的错误:
错误使用strfind
细胞必须是一个细胞的特征向量。

我并不真正理解因为这个函数是,据我理解,用于查找所需的国家我想评估。(我并没有改变任何代码示例3)
当我重新加载原始数据。m文件,运行良好的代码。

总的来说:谢谢你的了不起的工作!

最好的问候,

费边

大肠Cheynet

嗨Jacobo,
我有更新的示例文件有教师描述变量“猜”,所使用的数字是什么。

Jacobo白菜

* * = >我解决了这个问题我不知道,问题是我刚跑.mlx代替。m
____
问题例如4 = >你猜的数字是什么?是什么订单我想不出来。
我发现他们
α:保护率
贝塔:感染率
γ:逆的平均潜在的时间
三角洲:逆检疫的平均时间
lambda0和λ₁:荷载分配系数用于治愈率
kappa0 kappa1:荷载分配系数用于死亡率

Jacobo白菜

我在这里发表了一份请求帮助:https://la.mathworks.com/matlabcentral/answers/511876-issue-with-seir-model-for-mathlab
我期待着使用你的软件为我工作,我真的希望我可以使用它。

我得到这个错误:

错误使用SEIQRDP
太多的输入参数。

错误的青年们(34)行
(年代,E, I, Q, R, D, P] = SEIQRDP(α1,beta1γdelta1,λ₁,Kappa1, Npop, E0,钱数,Q0, R0, D0, t);

Matlab专家

大肠Cheynet

黑,
感谢反馈!
2016年Matlab函数“包含”介绍了b和如果你有一个旧版本,您将不能使用它。我认为它是另一种“strfind”

第二个错误,这也可能是一个兼容性问题,尽管它对我来说是有点模糊。Matlab的函数“datetime”介绍了2014 b,但也许有一些更新,只有使用最新版本。我写了函数与Matlab 2019 b。或者,您可以使用“datenum”和“datetick”功能。

穆里斯

你好,

我试图运行很好实现。示例1效果很好。例2,至少我遇到了两个问题。第一个是与脂肪酸的“包含”,正确的beginining代码。我绕过它,它与156年开始值对应于湖北省。它跑好。

然后,它停止当我进入:

> >图
semilogy (time1, Q, r, time1, r, b, time1, D,“k”);
错误使用semilogy
一个数字或可转换参数是预期的两倍

我用2015 a。这是一个兼容性的问题吗?

谢谢

MATLAB版本兼容性
创建R2020b
与R2018b后来版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!