人群归因分数(Population Attributable Fraction, PAF):概念、简单计算案例

news2024/11/19 19:24:02

专注系列化高质量的R语言教程

推文索引 | 联系小编 | 付费合集


本篇目录如下:

  • 1 人群归因分数

    • 1.1 相对风险度

    • 1.2 人群归因分数

  • 2 案例

    • 2.1 示例数据

    • 2.2 计算案例1

    • 2.3 计算案例2

    • 2.4 计算案例3

  • 3 总结

1 人群归因分数

人群归因分数(Population Attributable Fraction, PAF)是疾病负担研究中常用的指标,其大致含义是,假设人群的风险暴露降低至理想水平,预计可减少的患病人口数占实际患病人口数的比例。

The population attributable fraction (PAF), which represents the proportion of risk that would be reduced in a given year if the exposure to a risk factor in the past were reduced to an ideal exposure scenario.[1]

风险因素的理想暴露水平有多种定义方式,常用的是理论最小风险水平(Theoretical Minimum Risk Level,TMREL),指理论上能使疾病负担水平达到最低的暴露水平。如世卫组织推荐的不会造成健康风险的污染物临界指标[2]

3a90070a8d6adc3ee41e8d25a5e154c6.png

1.1 相对风险度

假设理想暴露水平时的患病人口比例为,暴露水平为时的患病人口比例为,则该暴露水平的相对风险度(Relative Risk,RR)为:

1.2 人群归因分数

如果暴露水平是分类变量,,暴露在各水平的人群比例使用表示,则人群归因分数(PAF)可表示为:

是指理想暴露水平的相对风险度,一般说来它应该是1。不过相对风险度并不一定需要使用本队列的数据进行计算,也可以直接使用或汇总已有的研究成果,这时不一定为1。

如果暴露水平是连续变量:

2 案例

本节通过几个例子展示PAF的具体计算过程。

2.1 示例数据

示例数据使用causalPAF工具包的数据集strokedata。该数据集包括16623个观察样本,本案例涉及到的变量有:

  • case:二分变量,数值型;0表示未患病,1表示患病;

  • phys:二分变量;因子类型;1表示缺乏锻炼,2表示积极锻炼。

根据后文需要,将phys转换为0/1变量。需要注意的是,phys的类别顺序为“2、1”,因此转换后0表示积极锻炼、1表示缺乏锻炼。

library(causalPAF)
data = strokedata  
levels(data$phys)
## [1] "2" "1"

data$phys <- as.numeric(data$phys) - 1
unique(data$phys)
## [1] 1 0

2.2 计算案例1

phys为分组变量,展示样本的分布情况:

library(tidyverse) 
table <- data %>%
  group_by(phys) %>%
  summarise(pop = length(case),
            pop_prop = pop/16623,
            case_num = sum(case),
            case_prop = mean(case))

table
##    phys   pop pop_prop case_num case_prop
##   <dbl> <int>    <dbl>    <dbl>     <dbl>
## 1     0  2297    0.138     1043     0.454
## 2     1 14326    0.862     7192     0.502
  • pop:样本数;

  • pop_prop:样本占总样本比例;

  • case_num:患病样本数;

  • case_prop:患病率,即case_num/pop

显然,可以将phys = 0定义为理想暴露水平,计算phys = 0,1时的相对风险度:

rr0 = 1
(rr1 = table$case_prop[2]/table$case_prop[1]) 
## [1] 1.105609

phys = 0,1时的人口暴露比例即pop_prop

p0 = table$pop_prop[1]
p1 = table$pop_prop[2]

套用上节的计算公式,计算PAF:

1 - rr0/(rr0*p0 + rr1*p1)
## [1] 0.08342266

因此,由缺乏锻炼(phys = 1)导致的患病人群归因分数为8.34%。

2.3 计算案例2

上节是使用公式计算PAF,也可以直接使用PAF的定义来计算,即若所有样本的phys都取0(理想暴露水平),预计可减少的患病人口数占实际患病人口数的比例。

可减少的患病人口数reducephys = 1的样本数乘以两个暴露水平的患病率之差:

(reduce <- table$pop[2]*(table$case_prop[2] - table$case_prop[1])) 
## [1] 686.9856

实际患病人口数total_case

(total_case = sum(data$case))
## [1] 8235

reducetotal_case之比即PAF:

reduce/total_case
## [1] 0.08342266

与2.2节计算结果一致。

2.4 计算案例3

在该类研究中,响应变量通常都是0/1二分变量,因此一般可使用Logistic回归进行建模。

case为响应变量,phys为解释变量(风险因子),建立Logistic模型:

fit <- glm(case ~ phys, data = data,
           family = binomial())
summary(fit)
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -0.18424    0.04191  -4.396 1.10e-05 ***
## phys         0.19233    0.04512   4.263 2.02e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

使用回归结果估计在理想暴露水平phys = 0时的患病率:

newdata <- data.frame(phys = 0)
(p0 <- predict(fit, newdata = newdata, type = "response"))
## 0.4540705

使用PAF定义的计算公式:

就是实际人群患病比例,因此上式可简化为:

(p = mean(data$case))
## [1] 0.4953979

1 - p0/p
## 0.08342266

AF工具包的AFglm()函数以广义回归模型为输入对象计算PAF:

library(AF)
AFglm(fit, exposure = "phys", data = data)
## Estimated attributable fraction (AF) and standard error : 
## 
##          AF  Std.Error
##  0.08342266 0.01948951

3 总结

本篇推文简要介绍了PAF、RR的概念及其计算公式,使用的案例只涉及一个风险变量,后续推文会介绍有控制变量、多风险变量及中介变量(mediator)的情况。

参考资料

[1]

GBD:2017 补充材料1,p33: https://doi.org/10.1016/S0140-6736(18)32225-6

[2]

环境(室外)空气质量和健康: https://www.who.int/zh/news-room/fact-sheets/detail/ambient-(outdoor)-air-quality-and-health

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100G CFP光模块类型应用场景详解

目前&#xff0c;全球电信行业平稳发展&#xff0c;宽带用户稳定增长&#xff0c;随着大数据市场的迅猛发展&#xff0c;骨干网、接入网和数据中心建设均需采购大量的光通信产品&#xff0c;从而给光模块行业带来了全新的市场机遇。如今&#xff0c;100G光模块已成为市场发展的…

最新DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

载誉前行!北大青鸟课工场蝉联中国高校计算机教育MOOC联盟会员单位!

近日&#xff0c;北大青鸟旗下的大学生专属品牌课工场喜获殊荣&#xff0c;蝉联中国高校计算机教育MOOC联盟会员单位。这是对北大青鸟课工场一直以来在职业教育领域的卓越表现的肯定&#xff0c;也是对北大青鸟课工场品牌价值的进一步提升。 作为中国高校计算机教育MOOC联盟的会…

JavaScript全解析-面向对象

类语法的书写 ●在 ES6 的语法标准中, 管构造函数不叫做构造函数了, 叫做 类 ●语法: class 类名 {constructor () { // 书写属性 } 书写原型上的方法 方法名 () {} } // ES6 类的语法class Person {// 等价于 ES5 的构造函数体constructor(name) {this.name name}// 直接书写…

Protobuf详解

文章目录 Protobuf是什么传输协议类比 Protobuf协议语法Protobuf类型Protobuf编译器下载配置环境变量 编写一个入门程序 Java是绝大多数人最常用的编程语言&#xff0c;那么作为Java开发如何学习protobuf呢&#xff1f; 步骤如下&#xff1a; 1.下载并安装 Protocol Buffers 工…

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) - 红帽企业 Linux 9.2 发布

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) 红帽企业 Linux 9.2 请访问原文链接&#xff1a;https://sysin.org/blog/rhel-9/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 红帽企业 Linux 9 红帽企业 Linux 9.…

把握协作机器人智能、灵活、安全三大矩阵

原创 | 文 BFT机器人 引言 协作机器人是一种能够和人类工作在同一空间的机器人&#xff0c;能够协同完成任务&#xff0c;为制造业和其他领域提供了更高效和灵活的解决方案。 目前&#xff0c;协作机器人市场正在迅速增长&#xff0c;因为越来越多的制造业和其他领域需要自动化…

PCIE使用的有效的命令

查看偏移内容 setpci --dumpregs capabilities查看 pci标准配置头空间 -x pci capbility配置空间 -xxx pcie扩展配置空间-xxxx 红色框框中的第一列对应具体的偏移&#xff0c;第二列对应的是设备的capability id, 第三列对应的是next capability id的偏移。 cap解释 在PCIe规…

电动车仪表盘语音芯片,带有数码管驱动多功能语音ic,WTV380-32N

为何要在电动车仪表盘上加入语音芯片&#xff1f; 电动车的驾驶过程中&#xff0c;驾驶员需要时刻关注车辆的状态和行驶信息&#xff0c;如电量、速度、里程等。这些信息如果以语音提示的方式进行播报&#xff0c;可以让驾驶员更加方便快捷地获取车辆状态&#xff0c;并且避免…

算法加密与解密、字符集、编码方式

加密算法 加密保证数据不会被窃取或者修改 不可逆加密算法 哈希算法 压缩映射&#xff1a;散列又称为哈希&#xff0c;是把任意长度的输入通过散列算法变换成固定长度的输出&#xff0c;该输出就是散列值。 哈希算法&#xff08;Hash&#xff09;又称摘要算法&#xff08;D…

相比欧美国家,国内开发软件外包项目的优势

软件开发在全球都有需求&#xff0c;尤其是欧美发达国家&#xff0c;不管是什么样的技术革命都离不开计算机软件的配套开发。另一方面欧美国家技术人员少且成本也比较高&#xff0c;相应的国内技术人员多而且技术全面&#xff0c;成本也低&#xff0c; 因此在国内找软件外包开发…

Hello, Mojo——首次体验Mojo语言

Hello, Mojo——首次体验Mojo语言 文章目录 Hello, Mojo——首次体验Mojo语言一、前言二、Mojo有哪些独特的功能使它不同于Python&#xff1f;三、可以在 Mojo 中导入和使用的 Python 哪些包&#xff1f;四、为什么参数化在 Mojo 中对于使用 SIMD 类型和硬件加速器很重要&#…

PowerShell install 一键部署TortoiseSVN

TortoiseSVN TortoiseSVN是 Subversion 版本控制系统的一个免费开源客户端&#xff0c;可以超越时间的管理文件和目录。文件保存在中央版本库&#xff0c;除了能记住文件和目录的每次修改以外&#xff0c;版本库非常像普通的文件服务器。你可以将文件恢复到过去的版本&#x…

玩机搞机--定制系统 编译系统选项 隐藏设置 关闭app联网 增加设置选项【一】

在接待一些定制rom的过程中。对于有些客户的有些要求作出对应的系统编译操作选项。例如 增减手机设置中的某些选项。 &#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&#x1f494;&am…

Druid 任意文件读取 (CVE-2021-36749)

漏洞原理 在Apache Druid系统中&#xff0c;InputSource用于从某个数据源读取数据。由于没有对用户可控的HTTP InputSource做限制&#xff0c;ApacheDruid 允许经过身份验证的用户以Druid服务器进程的权限从指定数据源读取数据&#xff0c;包括本地文件系统。攻击者可通过将文…

银河麒麟系统Arm64 编译Gdal

银河麒麟系统Arm64 编译Gdal GDAL 官网下载版本&#xff1b;我这边下载的是2.4.2 Download — GDAL documentation 拷贝到麒麟用户目录下&#xff1b;并解压 打开命令行&#xff1b;输入 make -j4 四线程编译 编译完成后输入 make install 完成后&#xff1b;此时的gdal.so会自…

windows系统下利用Nginx搭建rtmp流媒体服务器

windows系统利用Nginx搭建rtmp流媒体服务器 目录 windows系统利用Nginx搭建rtmp流媒体服务器1、介绍2、安装部署nginx3、安装部署ffmpeg实现推拉流 1、介绍 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;并且支持rtmp&#xff0c;不过rtmp是作为一个nginx的一个模块…

DeepLab v3

Rethinking Atrous Convolution for Semantic Image Segmentation Chen L C, Papandreou G, Schroff F, et al. Rethinking atrous convolution for semantic image segmentation[J]. arXiv preprint arXiv:1706.05587, 2017. 重新思考空洞卷积用于语义图像分割 摘要 在本工作…

MySQL视图详解

我写本文主要目的&#xff0c;是在网上看见了 所以&#xff0c;文本主要探讨的问题如下&#xff0c;验证结果在最后面 一、修改视图&#xff0c;基表会跟着改吗&#xff1f;答案&#xff1a;会改变 二、修改基表&#xff0c;视图会变化吗&#xff1f;答案&#xff1a;会改变 …

AI孙燕姿项目实现

最近在b站刷到很多关于ai孙笑川唱的歌曲&#xff0c;加上最近大火的ai孙燕姿&#xff0c; 这下“冷门歌手”整成热门歌手了 于是写下一篇文章&#xff0c; 如何实现属于的ai歌手。 注意滥用ai&#xff0c;侵犯他人的名誉是要承担法律责任的 下面是一些所需的文件链接&#xff…