如何验证此卡尔曼模型以估计未记录的 covid 病例?

数据挖掘 Python 张量流 预测
2022-03-03 08:11:43

Tensorflow 最近做了一个名为Estimation of undocumented SARS-CoV2 cases. 它复制了 Li 等人在 2020 年 3 月 6 日发表的题为Substantial Undocumented Infection Facilitates the Rapid Dissemination of Novel Coronavirus (SARS-CoV2). 它是一个基于隔间的 SEIR 模型,其中人口由具有隔间SusceptibleExposedUndocumented Infectious的状态表示Documented Infectious

我试图通过用 30 天的数据训练这个模型来测试它的有效性,并预测接下来 15 天的状态。我确实找到了模型和当前状态的最佳参数,但我不确定如何使用它来预测未来状态。我已经尝试了将近一个星期。笔记本中的编程风格对我来说非常陌生,因此,我正在努力弄清楚如何去做。

我请有更多经验的人浏览一下笔记本,并就如何预测状态给我一些建议。

谢谢!

1个回答

总而言之,笔记本描述了三个关键组件:

  • 状态,在任何给定时间完整地描述系统。根据定义,SEIR 模型在状态中有四个变量:易感、暴露、感染和报告。
  • 动力学描述状态如何随时间演变。
  • 动态方程测量参数:β,μ,θ,Z,α, 和D. 请注意,这些参数(出于我们的目的)是常量

本教程将引导您完成参数测量。逻辑是:

  • 您连续 30 天了解您所在的州
  • 你知道一天通过动力学方程进展到下一天
  • 因此,您可以求解最大化模型准确性的参数

现在您有了参数,您的目标是对未来进行预测。这“只是”将参数插入动力学方程并进行数学运算的问题。

现在求解六个耦合微分方程并不容易,但它们已经为您完成了大部分繁重的工作。特别是,该函数transition_fn几乎正是您想要的:它获取当前状态、当前时间和一些“ extra”信息(在教程中定义)并生成下一个状态的预测。

所以我认为你需要做的是:

  1. 弄清楚如何调用transition_fn您必须以正确的格式定义state_params和定义。extra您在教程中计算的参数将成为extra
  2. 首先使用教程使用的相同时间段。这有点“作弊”,因为您使用数据来导出参数,而现在您正在使用参数来预测数据。但这是一个很好的“健全性检查”:您的预测在这里绝对应该是准确的,因此您将能够识别任何问题。
  3. 然后,使用不同的时间段来评估模型是否有用。