当前位置: 首页 > news >正文

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性...

全文链接:https://tecdat.cn/?p=40365

在环境流行病学研究中,理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论,并引入了疾病映射以及对空间风险进行平滑处理的模型。通过这些内容,读者可以深入了解如何通过借用相邻区域的信息来改进风险估计,以及如何运用经验贝叶斯或全贝叶斯方法进行平滑处理等关键问题点击文末“阅读原文”获取完整代码、数据、文档)。

不同模型下的疾病风险分析

经验贝叶斯和贝叶斯平滑在COPD死亡率分析中的应用

以2010年慢性阻塞性肺疾病(COPD)住院情况为例,对该疾病的发病风险进行分析。有Nl=324Nl=324个地方行政区,每个行政区都有观察到的病例数YlYl和预期病例数ElEl,l=1,...,324l=1,...,324。预期病例数是通过将整体的年龄 - 性别特定发病率应用到每个地区的年龄 - 性别人口结构上,采用间接标准化方法计算得出的。
为了进行经验贝叶斯平滑。以下是相应的R代码:

# 观察数据
Y\_obs <- obs\_data$Y2010
# 偏移量
E\_offset <- exp\_data$E2010
RR\_vals <- eBayes(Y\_obs, E_offset)
plot(RR\_vals$SMR, RR\_vals$RR, xlim = c(0, 2


从平滑结果可以看出,较低和较高的标准化死亡率比(SMRs)都向总体平均值μμ靠近,在这个例子中μ=exp(−0.0309)=0.9696。由于这些地区相对较大且人口众多,平滑效果相对有限。在这个例子中,αα估计值为14.6。
对于全贝叶斯分析,可以使用NIMBLE。

a ~ dgamma(1, 1)beta0 ~ dnorm(0, 10)
})
# 观察数据
y\_obs <- obs\_data$Y2010
# 偏移量
E\_offset <- exp\_data$E2010
N <- length(y_obs)
# 常数列表
constants_list <- list(N = N,E = E_offset
)

通过检查所有可用样本中的最小值来检验有效样本量,以确保该最小值是可接受的。同时,还提供了一些参数链的轨迹图。运行上述代码后,会得到有效样本量和WAIC的相关信息。接下来,对后验分布的样本进行处理,并绘制一些参数的轨迹图:

# 绘制theta的轨迹图
for (i in 1:3)plot(mvSamples\[, c(paste("theta\[", i, "\]", sep = ""))\], bty = "n")




在检查链的收敛性后,可以绘制每个参数的后验均值和95%置信区间:

for (i in 1:N)segments(y\_obs\[i\], post\_fitted$\`95%CI\_low\`\[i\], y\_obs\[i\], post\_fitted$\`95%CI\_upp\`\[i\])
abline(a = 0, b = 1)

Stan模型分析

在Stan中实现相同的模型,首先需要加载必要的包并读取数据:

接下来,定义数据相关的对象并在Stan中运行模型:

# 观察数据
y\_obs <- obs\_data$Y2010
# 偏移量
E\_offset <- exp\_data$E2010
N <- length(y_obs)
# 数据列表
data_list <- list(N = length(y_obs),Y = y_obs,E = E_offset
)

检查一些参数的轨迹图、有效样本量,并获取一些参数的后验摘要:




点击标题查阅往期内容

图片

R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化

outside_default.png

左右滑动查看更多

outside_default.png

01

图片

02

图片

03

图片

04

图片

最后,绘制θiθi和拟合值的后验摘要及其95%后验可信区间:

for (i in 1:N)segments(y\_obs\[i\], summary\_fit$\`5%\`\[i\], y\_obs\[i\], summary\_fit$\`95%\`\[i\])
abline(a = 0, b = 1)

条件空间模型分析
NIMBLE中的条件空间模型拟合

使用NIMBLE拟合具有空间随机效应的Poisson对数正态模型,空间随机效应来自ICAR模型。首先加载必要的包和数据:

# 绘制平均剥夺分数与2010年SMR的散点图ggplot(copd\_data\_df) + geom_point(aes(x = Average.Score, y = SMR2010)) +theme_classic() +【【【【【【【【【【【【【】


为了在Nimble中拟合ICAR模型,需要获取邻域矩阵WW。首先定义一个函数来计算每个区域的邻居数量:

# 定义计算邻居列表的函数
adjlist <- function(W, N) {adj <- 0for(i in 1:N) {for(j in 1:N) {if(W\[i, j\] == 1) {adj <- append(adj, j)}}}adj <- adj\[-1\]return(adj)
}

定义Nimble模型代码

接下来,通过跟踪图和部分参数的有效样本量来再次检查链的收敛性:





截距、平均剥夺指数的固定效应以及ICAR先验分布精度的后验摘要:

潜在效应后验均值的地图:

ggplot() +# 选择空间对象和用于绘图的列

Stan中的条件空间模型拟合

由于Stan没有专门用于ICAR先验的函数:

# 定义计算邻居列表的函数
adjlist = function(W, N) {adj = 0for(i in 1:N) {for(j in 1:N) {if(W\[i, j\] == 1) {adj = append(adj, j)}}}adj = adj\[-1\]return(adj)
}

该模型存储在名为stan的单独文件中

定义邻接矩阵和相邻区域的索引集:

# 创建邻域
W\_nb <- poly2nb(england\_bound, row.names = rownames(england_bound))
# 创建邻接矩阵
W\_mat <- nb2mat(W\_nb, style = "B")
# 定义用于Stan的空间结构
N <- length(unique(england_bound$ID))
neigh <- adjlist(W_mat, N)
numneigh <- apply(W_mat, 2, sum)

部分参数后验样本的跟踪图:


接下来获取截距、与剥夺分数相关的固定效应以及随机效应标准差的后验摘要。riskd表示剥夺程度增加一个单位时的相对风险:

结果表明,剥夺程度增加一个单位,相对风险增加 2.2%。需要注意的是,ICAR先验的标准差指的是条件分布的标准差。
现在绘制潜在效应的后验均值:

ggplot() +# 选择空间对象和用于绘图的列geom\_sf(data = CARan\_merge, aes(fill = summary.mean)) + 
# 更改图例标签

使用CARBayes拟合条件模型

这里考虑使用R包CARBayes对呼吸道入院数据拟合具有空间效应的Poisson对数正态模型。

使用INLA拟合条件模型

现在使用R - INLA对呼吸道入院数据拟合具有空间效应的Poisson对数正态模型。R - INLA使用集成嵌套拉普拉斯近似来近似得到的后验分布。使用R - INLA拟合模型的调用与拟合glm非常相似,潜在效应通过函数f(.)引入。

结论

通过对不同模型(经验贝叶斯、NIMBLE、Stan、CARBayes、INLA)在疾病风险分析和条件空间模型拟合中的应用研究,我们可以看到每种模型都有其独特的优势和适用场景。经验贝叶斯方法能够对风险估计进行平滑处理,减少基于小样本数据估计的不稳定性;NIMBLE和Stan在处理复杂的贝叶斯模型时表现出色,能够对模型参数进行准确估计;CARBayes和INLA则在处理空间效应方面具有优势,能够有效地捕捉疾病发病率的空间相关性。在实际研究中,研究者可以根据数据特点和研究目的选择合适的模型,以更准确地分析环境暴露与疾病发病之间的关联,为公共卫生决策提供有力的支持。

81c4333203dc05bb0b8ace2f1937bf12.jpeg

本文中分析的完整数据、代码、文档分享到会员群,扫描下面二维码即可加群! 

dcba547ba14f3469295dcc26678b783b.png


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

0b3369f95671903059309b1f2909924b.jpeg

点击文末“阅读原文”

获取完整代码、数据、文档。

本文选自《R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性》。

点击标题查阅往期内容

R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据

R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例

用SPSS估计HLM多层(层次)线性模型模型

R语言用线性混合效应(多水平/层次/嵌套)模型分析声调高低与礼貌态度的关系

R语言LME4混合效应模型研究教师的受欢迎程度

R语言nlme、nlmer、lme4用(非)线性混合模型non-linear mixed model分析藻类数据实例

R语言混合线性模型、多层次模型、回归模型分析学生平均成绩GPA和可视化

R语言线性混合效应模型(固定效应&随机效应)和交互可视化3案例

R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据

R语言 线性混合效应模型实战案例

R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据

R语言如何用潜类别混合效应模型(LCMM)分析抑郁症状

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言建立和可视化混合效应模型mixed effect model

R语言LME4混合效应模型研究教师的受欢迎程度

R语言 线性混合效应模型实战案例

R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)

R语言基于copula的贝叶斯分层混合模型的诊断准确性研究

R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题

基于R语言的lmer混合线性回归模型

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

R语言分层线性模型案例

R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型

使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM

R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型

SPSS中的多层(等级)线性模型Multilevel linear models研究整容手术数据

用SPSS估计HLM多层(层次)线性模型模型

dcdf79692e973e38357f3ceeffb00ed7.jpeg

985d1e542273840b57a09ffc033261c2.png

19a45c0ba241a38d310451bbc92c654a.png

25848adf9037066254a14aecf0495c99.jpeg

d2b06c9333fb7470f6a333eba0e26db7.png

相关文章:

R语言NIMBLE、Stan和INLA贝叶斯平滑及条件空间模型死亡率数据分析:提升疾病风险估计准确性...

全文链接&#xff1a;https://tecdat.cn/?p40365 在环境流行病学研究中&#xff0c;理解空间数据的特性以及如何通过合适的模型分析疾病的空间分布是至关重要的。本文主要介绍了不同类型的空间数据、空间格点过程的理论&#xff0c;并引入了疾病映射以及对空间风险进行平滑处理…...

Java 反射 (Reflection) 详解

一、什么是 Java 反射&#xff1f; Java 反射 (Reflection) 是 Java 语言的一个强大特性&#xff0c;它允许 在运行时 检查和修改类、接口、字段和方法的信息&#xff0c;而不需要在编译时知道这些信息。 换句话说&#xff0c;反射可以让你在程序运行过程中“动态”地获取类的…...

在 C++ 中,`QMessageBox_s::question_s2` 和 `app.question_s2` 的区别(由DS-V3生成)

在 C 中&#xff0c;QMessageBox_s::question_s2 和 app.question_s2 的区别主要在于它们的调用方式和上下文范围。以下是对两者的详细解释&#xff1a; 1. QMessageBox_s::question_s2 解释&#xff1a; QMessageBox_s::question_s2 是一个静态成员函数的调用。它属于类 QMess…...

vxe-grid 通过配置式给单元格字段格式化树结构数据,转换树结构节点

vxe-grid 通过配置式给单元格字段格式化树结构数据&#xff0c;转换树结构节点 比如用户自定义配置好的数据源&#xff0c;通过在列中配置好数据&#xff0c;全 json 方式直接返回给前端渲染&#xff0c;不需要写任何格式化方法。 官网&#xff1a;https://vxetable.cn npm i…...

大厂算法面试常见问题总结:高频考点与备战指南

在大厂算法面试中&#xff0c;数据结构与算法是必考的核心内容。 无论是校招还是社招&#xff0c;算法题的表现往往决定了面试的成败。 为了帮助大家更好地备战&#xff0c;本文总结了大厂算法面试中的高频考点&#xff0c;并提供了详细的备战建议&#xff0c;助你轻松应对面…...

制造行业CRM选哪家?中大型企业CRM选型方案

在当今竞争激烈的制造行业中&#xff0c;企业对于客户关系管理&#xff08;CRM&#xff09;系统的需求日益增强&#xff0c;高效、智能的CRM系统已成为推动企业业务增长、优化客户体验的关键。在制造业 CRM 市场中&#xff0c;纷享销客和销售易都备受关注&#xff0c;且各自有着…...

PHP集成软件用哪个比较好?

在Windows环境下&#xff0c;使用PHP时&#xff0c;通常需要一个集成开发环境&#xff08;IDE&#xff09;或者集成软件来简化开发和调试过程。以下是几款常用且推荐的PHP集成软件&#xff0c;每款都有其特点&#xff0c;可以根据需求进行选择&#xff1a; 1. XAMPP 特点&…...

当pcie设备变化时centos是否会修改网络设备的名称(AI回答)

当pcie设备变化时centos是否会修改网络设备的名称 在CentOS&#xff08;以及其他基于Linux的操作系统&#xff09;中&#xff0c;网络接口的命名通常遵循特定的规则&#xff0c;尤其是在使用PCIe设备&#xff08;如网络适配器&#xff09;时。网络接口的命名通常基于设备的物理…...

Mac arm架构使用 Yarn 全局安装 Vue CLI

dgqdgqdeMacBook-Pro spid-admin % vue --version zsh: command not found: vue要使用 Yarn 安装 Vue CLI&#xff0c;你可以执行以下命令&#xff1a; yarn global add vue/cli这个命令会全局安装 Vue CLI&#xff0c;让你可以使用 vue 命令创建、管理 Vue.js 项目。以下是一…...

【Python游戏】双人简单对战游戏

以下是一个使用 Python 的 pygame 库实现的简单对战游戏示例&#xff0c;游戏中玩家可以控制两个角色进行对战&#xff0c;并且支持自定义图片(最好使用无底色的png图片)。完整源码以及实现思路&#xff1a; import pygame import os# 初始化 Pygame pygame.init()# 设置游戏窗…...

Windows11切换回Windows10风格右键菜单

参考文章&#xff1a;Win11新版右键菜单用不惯&#xff1f;一键切换回Win10经典版&#xff01;-CSDN博客 以管理员权限运行命令行cmd 切换为经典旧版右键菜单&#xff0c;执行 reg.exe add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServe…...

怎么学习调试ISP的参数

摄像头的 **Sensor 获取的 RAW 数据** 是未经处理的原始图像数据&#xff0c;通常需要经过 **ISP&#xff08;Image Signal Processor&#xff0c;图像信号处理器&#xff09;** 的处理&#xff0c;才能生成可用的图像或视频。ISP 的作用是对 RAW 数据进行一系列图像处理操作&a…...

“三次握手”与“四次挥手”:TCP传输控制协议连接过程

目录 什么是TCP协议 “三次握手”建立连接 “四次挥手”断开连接 “三次握手”和“四次挥手”的反思 总结 什么是TCP协议 想象一下&#xff0c;你和远方的朋友要进行一场电话交流&#xff0c;但这通电话不仅仅是随便聊聊&#xff0c;而是要传递一封重要的信件。为了确保这…...

OpenCV形态学操作

1.1. 形态学操作介绍 初识&#xff1a; 形态学操作是一种基于图像形状的处理方法&#xff0c;主要用于分析和处理图像中的几何结构。其核心是通过结构元素&#xff08;卷积核&#xff09;对图像进行扫描和操作&#xff0c;从而改变图像的形状和特征。例如&#xff1a; 腐蚀&…...

深入理解WebSocket接口:如何使用C++实现行情接口

在现代网络应用中&#xff0c;实时数据传输变得越来越重要。通过WebSocket&#xff0c;我们可以建立一个持久连接&#xff0c;让服务器和客户端之间进行双向通信。这种技术不仅可以提供更快的响应速度&#xff0c;还可以减少不必要的网络流量。本文将详细介绍如何使用C来实现We…...

汇能感知的光谱相机/模块产品有哪些?

CM020A 分辨率&#xff1a;1600H1200V 光谱范围&#xff1a;350~950nm 光谱分辨率&#xff1a;1nm 接口&#xff1a;USB2.0 帧率&#xff1a;16001200 (6帧) 输出格式&#xff1a;Raw 8bit FOV&#xff1a;D73.5H58.8V44.1 相机尺寸&#xff1a;505055mm VM02S10 分辨率…...

抓包工具是什么?

抓包工具是一种用于捕获和分析网络数据包的软件或硬件设备。它可以帮助用户监控网络通信过程&#xff0c;查看网络中传输的数据内容、协议类型、源地址、目的地址等信息。以下是关于抓包工具的一些详细解释&#xff1a; 1. 主要功能 捕获数据包&#xff1a;抓包工具能够实时捕…...

Kubernetes的Ingress 资源是什么?

在Kubernetes中&#xff0c;Ingress资源是一种用于管理集群外部对内部服务访问的API对象&#xff0c;主要用于将不同的外部请求路由到集群内的不同服务&#xff0c;以下是关于它的详细介绍&#xff1a; 定义与作用 Ingress资源定义了从集群外部到内部服务的HTTP和HTTPS路由规…...

【操作幂等和数据一致性】保障业务在MySQL和COS对象存储的一致

业务场景 发布信息&#xff0c;更新到数据库MySQLCOS操作&#xff0c;更新JSON文件 不过可能存在幂等性和数据一致性的问题。 // 批量存MySQL entityPublishService.saveOrUpdateBatch(entityPublishList); // 遍历批量存COS对象存储searchEntitys.forEach(req -> {//删除…...

DevOps自动化部署详解:从理念到实践

在软件开发日益快速迭代的今天&#xff0c;如何以高效、稳定且可重复的方式将代码变更从开发环境自动部署到生产环境成为企业竞争的重要因素。DevOps 正是在这一背景下应运而生&#xff0c;它打破开发、测试、运维之间的壁垒&#xff0c;通过自动化工具和流程&#xff0c;实现持…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...