基于GBD数据的年龄-时期-队列模型构建

本文介绍如何利用GBD2021数据构建年龄-时期-队列(APC)模型,分析中国某种癌症1990-2019年的发病率。通过对不同年龄、时期和队列的划分,揭示年龄效应、时期效应和队列效应。数据清理和模型构建过程在R语言中完成,并展示了APC模型在网页应用中的操作和结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公共数据库GBD(全球疾病负担) 于5.16 已经发布最新版2021年数据集。全球疾病负担(GBD)是迄今为止规模最大、最全面的一项研究,旨在量化不同地区和不同时期的健康损失,从而改善卫生系统并消除差异。继前两篇利用GBD数据绘图(双Y轴图热力图)文章后,本期迎来GBD数据的第三篇文章——基于GBD数据构建Age-Period-Cohort(APC)模型。

一、年龄-时期-队列模型(APC)

1.简介

         APC 模型应用于估计年龄时期和队列三者独立因素对慢性非传染性疾病发病率或死亡率的影响。年龄效应代表了随着年龄增加对某结局的影响大小,时期效应指的是随着时间推移结局发生变化,队列效应反映了不同年代出生的群体由于出生方式改变或暴露不同导致的结局不同。

2.应用
        内生因子算法( intrinsic estimator,IE) 可以解决时期 年龄 、队列三者之间强烈的共线性问题, 本研究利用NCI( national cancer institute ) 网站提供的APC 模型分析工具( https : / /analysistools.cancer.gov /apc/) 实现

二、基于GBD数据建立APC模型

关于GBD数据的提取已在 前期文章中进行了详细讲解,在此就再过多说明。

1.年龄-时期-队列提取划分

       本研究从GBD2021数据库中提取1990-2021年中国某种癌症的发病数据,由于考虑到 20 岁以下年龄组该癌症发病较他年龄组小得多,故选取20岁以上年龄段人群,同时对80岁以上年龄组不再细化,将≥80岁人群统称为80~84岁组,最终按每5岁一组分为13个年龄组(20~24,25~29......75~79,80~84);将1990—2019 年以每5年划分为一个时期组:1990~1994、1995~1999......2015~2019(因2020-2021未满5年,无法划分,仅对1990-2019年进行),共划分得到 6 个时期组;出生队列 = 时期 - 年龄,早期队列:1990-80=1910,晚期队列:2015-20=1995,出生队列的重叠现象通过取中值加以避免,最终得到1910、1915、1920......1995等18个队列组。

2.年龄层人群提取

       根据后续APC网页分析工具界面要求,我们需要准备的数据是1990-2019年中国不同年龄层的癌症发病(死亡)数以及所在年龄层的人群数,此部分数据同样可从GBD2021 Result Tools中下载获取,由于GBD中提供的人群年份数据均为单一年份,需要将其取平均值合并成5年的区段数据。具体操作见后续代码。

3.基于R语言的数据清理

####基于GBD数据的年龄-时期-队列模型构建####
rm(list = ls())
setwd("I://gbddata")
##纳入软件包##
library(readxl)
library(dplyr)
library(reshape2)
library(purrr)
##纳入口腔癌发病数据##
gbd_cancer<-read_xlsx("ihme-gbd_2021_data.xlsx",sheet = 1)%>%data.frame()
gbd_cancerdata<-filter(gbd_cancer,measure_name=="Incidence",sex_id==3,age_id%in%9:21,metric_name=="Number")%>%select(age_name,year,val)
##纳入标准人口数据##
gbd_pop<-read.csv("IHME-GBD_2021_population.csv",header=T)
gbd_pop<-filter(gbd_pop,sex_id==3,age_id%in%9:21)%>%select(age_name,year,val)
##调用自定义函数==将5个单一的年份取平均值合并成5年的区段数据,以适用于网页APC模型的构建##
source("function_five.R")
##构建人群数据集##
table(gbd_pop$age_name)%>%names()->nn
yearcut<-c("1990~1994","1995~1999","2000~2004","2005~2009","2010~2014","2015~2019","2020~2021")
ll<-list()
for(i in 1:length(nn)){
  a<-filter(gbd_pop,age_name==nn[i])
  a$aval<-rep(function_five(a$val),c(rep(5,6),2))
  a$yearcut<-rep(yearcut,c(rep(5,6),2))
  ll[[i]]<-a
}
  b<-ll[[1]]
for(i in 1:length(nn)){
  b<-rbind(b,ll[[i+1]])
}
  gbd_popa<-b##完成人群数据集构建##

##构建发病数据集##
  ll<-list()
  for(i in 1:length(nn)){
    a<-filter(gbd_cancerdata,ag
### 分层年龄-时期-世代效应模型概述 分层年龄-时期-世代效应模型(Hierarchical Age-Period-Cohort, HAPC)是一种用于解析社会现象随时间变化模式的方法。该方法旨在区分不同年龄段、不同时期以及不同出生队列之间的差异影响。 #### 年龄效应 年龄效应指的是个体在其生命周期中的特定阶段所表现出的行为特征或经历的变化。这些变化通常与生理发展和社会角色转变有关,在统计建模中通过参数 \(\alpha_i\) 表示第 \(i\) 个年龄组的年龄效应[^1]。 #### 时期效应 时期效应反映了宏观环境因素对所有人产生的共同作用,无论其具体年龄如何。例如经济衰退期间就业机会减少可能会影响各个年龄段的人群。这种效应由参数 \(\pi_j\) 描述,代表第 \(j\) 个时期时期效应。 #### 队列效应 队列效应则关注于同一时间段内出生并成长起来的一代人在面对相似历史事件时形成的独特经验。这可以通过参数 \(\gamma_k\) 来衡量,表示第 \(k\) 个队列队列效应。 ```python import numpy as np from statsmodels.api import OLS def hapc_model(data): """ 构建简单的线性回归形式的HAPC模型 参数: data (DataFrame): 包含'age', 'period', 和 'cohort' 列的数据框 返回: result: 模型拟合结果对象 """ X = data[['age', 'period', 'cohort']] y = data['outcome'] model = OLS(y, sm.add_constant(X)) results = model.fit() return results.summary() # 假设有一个名为df的数据框包含了所需变量 hapc_summary = hapc_model(df) print(hapc_summary) ``` 此代码片段展示了如何利用Python构建一个基础版本的HAPC模型来进行数据分析。实际应用中可能会涉及到更复杂的结构化方程或其他高级技术来处理潜在的相关性和异质性问题。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值