阈值模型和流感流行识别

机器算法验证 r 时间序列 流行病学 临界点
2022-03-29 13:12:40

我在玩阈值时间序列模型。当我在挖掘其他人所做的事情时,我浏览了 CDC 的网站以获取流感数据。

http://www.cdc.gov/flu/weekly/

页面下方大约 1/3 处是一个标题为“肺炎和流感死亡率……”的图表。它以红色和两个黑色季节性系列显示实际值。最高的季节性系列被标记为“流行阈值”,并且似乎比“季节性基线”系列高一些恒定的百分比/数量。

我的第一个问题是:这真的是他们决定何时公开说我们处于流行病中的方式吗(高于基线的某个百分比)?在我看来,它们在噪声范围内,更不用说在该基线系列中显然没有考虑到的“其他因素”影响。对我来说,误报太多了。

我的第二个问题是:您能否指出任何真实世界的阈值模型示例/出版物(希望在 R 中)?

2个回答

美国疾病控制与预防中心使用流行病阈值

一年中那个时候比基线高出 1.645 个标准差。

该定义可能有多种检测或死亡率终点。(您所指的是肺炎和流感死亡率。下方的黑色曲线并不是真正的系列,而是模拟的季节性平均值,上方的黑色曲线比该平均值高 1.645 sd)。 http://www.cdc.gov/mmwr/PDF/ss/ss5107.pdf
http://www.cdc.gov/flu/weekly/pdf/overview.pdf

> pnorm(1.645)
[1] 0.950015

所以这是一个95%的门槛。(而且看起来 20 周中大约有 1 周超过了阈值。您选择阈值,不是为了完美,而是为了具有您认为必要的灵敏度。)季节性调整模型似乎是正弦曲线。有一个R "flubase" 包应该参考。

快速了解这些事情的进展情况。您所看到的称为“Serfling 回归”。它是一种线性回归,至少有一个时间趋势的线性项,以及它的几个谐波。

发生的情况是,您有一个具有泊松(或负二项式)分布的线性模型,大致如下形式:

log(计数) = b0 + b1 t + b2 cos(2pi w t) + b3 sin(2pi w*t)

其中 t 是时间,w 是 1/365(对于像流感这样的年度疾病。通常是 1/n,其中 n 是周期的长度)。这就是你得到平滑黑色曲线的地方,这是标准误差。这是该时间 t 的预期计数 - 它随着时间的推移而上升和下降。然后,随着流感季节的到来,疾病预防控制中心会观察它何时超过该阈值,并将其归类为“流行病”。这些可能会变得更复杂 - 多个谐波函数解释不同的峰值,例如 B 型流感病例中通常稍晚的峰值,各种将导致病例上升的事物的解释变量等。但仅此而已最基本的形式。

但“流行病”一词是一个棘手的问题。这种技术适用于具有大量数据的季节性、反复发作的疾病,如流感。相反,任何高于 0 的天花计数都将被视为爆发。

对于使用这种技术的论文,我可以向您推荐几篇。下面的两篇论文都使用了与上面类似的模型,虽然不是为了宣布流行病,而是为了描述“流感季节”的样子:

这可以使用 glm 函数在 R 中轻松实现。