网易首页 > 网易号 > 正文 申请入驻

监测预警基础57-八小篇搞懂DLNM之6:来吧,直接R实操!

0
分享至


系列简介

这是我们一系列原创技术贴,从易到难,每天学习一点。所有内容均为疾控数据分析、科研论文相关,或者说很多和现在的热门监测预警相关,所以我们这个系列就叫“监测预警基础”。

之前很多老师反馈这种小专题的形式特别好,可以一口气彻底学透一种方法,好的,我们又来了!

这次是分布滞后非线性模型,我们初步计划用8小节左右的内容讲通它的前世今生,以及如何使用。所以我们这个小专题的名字就叫做《八小篇搞懂DLNM》

今天是第6小篇——开始R语言实操!

前面5篇我们把 DLNM 的原理、前置知识、应用场景全部讲透了。很多同行最期待的就是实操环节:道理都懂了,到底怎么用 R 把模型跑起来?

今天我们就从零开始,用模拟的疾控标准时间序列数据,带你走完从数据准备、预处理到模型拟合的完整流程。所有代码都附带逐行注释,复制粘贴就能直接运行,零基础也能跟着跑通第一个 DLNM 模型。

我们以日平均气温对传染病日发病数的影响为案例,这是疾控最经典的应用场景。全程基于泊松分布框架,和我们之前讲的 GLM/GAM 逻辑完全一致,学习门槛很低。


DLNM 的核心分析依赖dlnm包,它由 DLNM 方法的提出者 Gasparrini 团队开发,是目前最权威、最通用的实现工具。再搭配几个数据处理、样条分析的基础包即可。

运行以下代码完成安装与加载:

library(lubridate)


DLNM 分析的是时间序列数据每一行代表一天,每一列是一个变量。疾控场景下最基础的数据结构,必须包含以下 4 类信息:


为了让大家不用找数据就能直接练习,我们先生成一份模拟的 3 年日数据,特征完全贴合真实疾控数据:温度有季节波动,发病数与温度呈 U 型关系,同时存在季节趋势与星期效应。

)

下面让气温的影响分布在滞后 0~14 天,并假设滞后 5 天左右影响最强。

temp_lag <- as.numeric(temp_lag_mat %*% lag_weight)

再生成每日发病数。这里假设气温与发病风险呈 U 型关系,20℃左右风险最低。

head(dat)

运行完成后,用head(dat)查看前 6 行,就能得到一份标准的分析数据集。

和 GLM、GAM 一样,DLNM 也必须控制时间序列中的混杂因素,最核心的是长期趋势与季节波动星期效应。我们需要先生成对应的变量。

  )

变量作用解释:time:配合自然样条函数ns(),用来控制长期趋势和季节波动,这是时间序列研究的标准操作。我们通常设置每年 6~8 个自由度,3 年数据总自由度取 21 左右。dow:控制一周内的报告差异,比如周一报告数往往偏高,周末偏低。必须转为分类变量放入模型。


交叉基函数是 DLNM 的灵魂,对应我们第四篇讲的核心原理:同时在暴露维度和滞后维度构造样条基,再交叉组合。

dlnm包中用crossbasis()函数实现,这是整个分析最核心的一行代码。

)

参数逐一说清
  1. x = dat$temp:我们要研究的核心暴露因素,这里是日平均气温。

  2. lag = 14:设定最大滞后天数为 14 天,也就是我们认为温度的影响最多持续 14 天。这个值要根据疾病特征设定,传染病通常 7~14 天,死亡 / 慢病通常 14~21 天。

  3. argvar(暴露维度):
  4. fun = "ns":使用自然样条拟合暴露 - 反应关系,捕捉非线性;
  • df = 4:暴露维度设置 4 个自由度,既能拟合 U 型 / J 型曲线,又不会过度波动,是疾控研究的常用设置。
  1. arglag(滞后维度):
  • fun = "ns":同样用自然样条对滞后效应进行平滑约束,解决相邻滞后天数的共线性问题;
  • df = 3:滞后维度通常自由度更低,保证滞后曲线平滑,3~4 个自由度是常规选择。

运行完这行代码,cb就是我们构造好的交叉基变量,接下来直接放进模型即可。


DLNM 本质上还是 GLM 框架,所以我们直接用基础的glm()函数拟合,和我们第二篇讲的泊松 GLM 语法几乎完全一样 ——唯一的区别,就是把普通的温度线性项,换成了我们刚构造好的交叉基cb

summary(model)

我们把公式拆解开,和第二篇的 GLM 公式一一对应,你会发现逻辑完全一致:
  • cases ~:结局变量是日发病数,对应公式里的病例数。
  • cb:交叉基项,是模型的核心,替代了原来的单一温度变量,对应公式里的cb第二项
  • ns(time, df = 7*3):时间的自然样条,每年 7 个自由度,3 年共 21 个,用来控制长期趋势和季节波动
  • factor(dow):星期效应分类变量,控制每周内的报告波动
  • family = poisson(link = "log"):指定泊松分布、对数联系函数,和标准泊松 GLM 完全一致

运行summary(model)后,你会看到一长串系数 —— 这些就是交叉基各个基变量对应的系数。但不用慌,我们不需要手动解读这些系数,后续用专门的函数就能提取出我们关心的相对危险度、置信区间。


模型跑通了,我们先提取一个最直观的结果:整个 14 天滞后期内的累积效应。比如我们以 20℃为参照,看看 28℃的累积发病风险是多少。

用crosspred()函数进行预测:

)

例如,提取 28℃相对于 20℃的 14 天累积 RR:

)

如果输出结果为:

28.0   1.25   1.10    1.42

可以解释为:与 20℃相比,28℃暴露后 14 天内的累积发病风险升高 25%,且差异有统计学意义。如果 95%CI 跨过 1,例如 0.95~1.30,则不能认为差异有统计学意义。


1. 三维图:看“气温—滞后—发病风险”的整体形状

)

三维图中,横轴是气温,纵轴是滞后天数,竖轴是 RR。曲面越高,说明该气温在对应滞后天的发病风险越高。

2. 等高线图:定位高风险组合

)

3. 累积效应图:看 14 天总风险

abline(v = 20, lty = 3, col = "grey60")

实际分析时,只需要把模拟数据替换成自己的监测数据,保证至少包含以下 4 列:

日期   发病数  日平均气温  日降水量

到这里,你就完成了一个完整的 DLNM 实操流程:数据准备、交叉基构建、模型拟合、RR 提取,以及三维图、等高线图和累积效应图绘制。



编辑:普通疾控人 | 审核:诗酒趁年华

文章来源 | 原创

说明 | 转载只为分享,如有侵权联系删除

©版权声明 | 部分信息和图片来自公开网络

转载请注明

再次转载请注明出处


科普健康 | 宣传疾控

本号为多位疾控机构从业者运营

重点关注国内外健康事件

致力于疾控科普

在做好科普服务大众的同时

做好疾控机构的宣传

让更多的人了解疾控,拥抱健康

欢迎加「小编」微信(cdcjkr126com)

本文具体说明

本文为原创内容,文章为个人理解所学,不涉及疫情信息及内部保密数据,发表的目的为自我总结及给有需求的人士学习使用。如有不妥之处,欢迎联系小编修改、删除。

更多精彩视频,尽在“CDC疾控人”视频号


特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“看穿着,你们家就凑不出一个本科学历!”农民父亲炫耀却被揭穿

“看穿着,你们家就凑不出一个本科学历!”农民父亲炫耀却被揭穿

熙熙说教
2026-10-06 10:53:12
俄鼠疫实验室出事,美方发出警告,病原体一旦外泄或将快速扩散

俄鼠疫实验室出事,美方发出警告,病原体一旦外泄或将快速扩散

泪之魂y
2026-10-06 14:42:34
全红婵留长发,近170cm颜值惊人,网友:颜值变化惊人...

全红婵留长发,近170cm颜值惊人,网友:颜值变化惊人...

黎兜兜
2026-10-04 14:08:45
尴尬了!原定26桌婚宴突来36桌:山东新娘学生家长全家赴宴

尴尬了!原定26桌婚宴突来36桌:山东新娘学生家长全家赴宴

普陀动物世界
2026-10-06 10:23:52
陈雪军从福建赴任重庆!涂山全已任重庆市潼南区委副书记、区政府党组书记!

陈雪军从福建赴任重庆!涂山全已任重庆市潼南区委副书记、区政府党组书记!

天气观察站
2026-10-07 20:15:35
欠钱不还的人最怕这一招:微信上申请支付令,15天不还直接划扣!

欠钱不还的人最怕这一招:微信上申请支付令,15天不还直接划扣!

另子维爱读史
2026-09-26 20:53:15
苹果正式官宣历代iPhone全球销量排行榜

苹果正式官宣历代iPhone全球销量排行榜

叮当当科技
2026-10-05 01:13:11
国庆高速发现怪事:油车呼呼跑120,绿牌车大多只跑90

国庆高速发现怪事:油车呼呼跑120,绿牌车大多只跑90

小怪吃美食
2026-10-05 15:34:31
《余红旧事》第19集郝洁这场自慰戏,有无必要?导演太会拍了

《余红旧事》第19集郝洁这场自慰戏,有无必要?导演太会拍了

露珠聊影视
2026-10-07 21:20:16
普通孩子唯一能改命的机会就是:死磕三年高中,熬过去便是一生坦途;若是偷懒,往后几十年都得用来弥补这三年留下的遗憾

普通孩子唯一能改命的机会就是:死磕三年高中,熬过去便是一生坦途;若是偷懒,往后几十年都得用来弥补这三年留下的遗憾

好爸育儿
2026-09-27 08:29:37
丰田章男的孤独:新发动机一箱油跑1200公里,但世界不跟他玩了

丰田章男的孤独:新发动机一箱油跑1200公里,但世界不跟他玩了

兴趣知识
2026-10-07 01:04:13
他是许世友将军之子,曾任安徽、江苏军区司令员,今年已经74岁了

他是许世友将军之子,曾任安徽、江苏军区司令员,今年已经74岁了

云霄纪史观
2026-10-06 18:05:34
陈志算什么?湖南80后佘智江被引渡回国,涉案2.7万亿,全网哗然

陈志算什么?湖南80后佘智江被引渡回国,涉案2.7万亿,全网哗然

热点菌本君
2025-11-13 15:18:05
4.8亿首发打不过雷霆替补!烂了这么多年,仍不打算重建,太奇葩

4.8亿首发打不过雷霆替补!烂了这么多年,仍不打算重建,太奇葩

你的篮球频道
2026-10-07 11:12:59
C罗请求足协重罚自己!葡媒:他或被禁赛6个月 解禁后42岁恐难回归

C罗请求足协重罚自己!葡媒:他或被禁赛6个月 解禁后42岁恐难回归

风过乡
2026-10-07 07:06:59
赛中多次显露不适!孙颖莎亲承亚运消耗过大+在发烧 刘国正:好好休息

赛中多次显露不适!孙颖莎亲承亚运消耗过大+在发烧 刘国正:好好休息

颜小白的篮球梦
2026-10-07 21:17:30
日本亚运再陷尴尬!中国选手的金牌已磨花了:裹保鲜膜防护 非个例

日本亚运再陷尴尬!中国选手的金牌已磨花了:裹保鲜膜防护 非个例

风过乡
2026-10-07 09:00:03
南信大一本科新生选择退学复读,高考超常发挥608分,大气科学类专业,本人透露原因,让人不理解!

南信大一本科新生选择退学复读,高考超常发挥608分,大气科学类专业,本人透露原因,让人不理解!

凯旋学长
2026-10-07 12:10:47
特朗普:对伊朗的军事行动 “必须收尾了”,唯一要考虑的问题是以哪种方式收尾,是以柔和的方式或是强硬的方式

特朗普:对伊朗的军事行动 “必须收尾了”,唯一要考虑的问题是以哪种方式收尾,是以柔和的方式或是强硬的方式

极目新闻
2026-10-07 16:43:06
中国不接招,美国自己耗死!全世界等中美开战,中国连看都懒得看

中国不接招,美国自己耗死!全世界等中美开战,中国连看都懒得看

无心小姐姐
2026-10-05 16:18:07
2026-10-07 22:16:49
CDC疾控人 incentive-icons
CDC疾控人
关注疾控,科普健康
250文章数 8关注度
往期回顾 全部

科技要闻

诺贝尔化学奖揭晓,两位科学家摘得大奖

头条要闻

迟到25年95岁科学家终于获诺奖 他的研究拯救无数家庭

头条要闻

迟到25年95岁科学家终于获诺奖 他的研究拯救无数家庭

体育要闻

从骑马舞到开口全中文 德约在北京不止七冠

娱乐要闻

蔡康永风波再升级!这次谁也救不了他

财经要闻

谷歌签下科技史上最大核能协议

汽车要闻

智能化再提升 2027款东风标致、东风雪铁龙新车更人性化了

态度原创

游戏
健康
手机
数码
军事航空

德玛西亚杯:SR直落两局横扫GAM!TES是怎么输给GAM的?

刷酸祛痘,为什么有人翻车?

手机要闻

首销破27万台!华为Mate 90系列销量出炉:麒麟9050 Pro版占四成

数码要闻

准系统6689元:铭凡MS-03迷你主机酷睿Ultra 9 386H版本开售

军事要闻

外舰跟监遵义舰 结果自己先"趴窝"了

无障碍浏览 进入关怀版