👴

多国老年健康数据分析

CHARLS · HRS · SHARE · ELSA · 其他大型老龄化队列

数据概述

clinResearchKit 支持 CHARLS(中国健康与养老追踪调查)、HRS(美国健康退休研究)、 SHARE(欧洲健康老龄化与退休调查)、ELSA(英国老龄化追踪调查)等主要老龄化队列。

适用场景

跨国比较、衰弱评估、认知功能研究、晚年健康不平等

核心函数

跨国比较、Fried 衰弱评估、中介分析、Bootstrap CI

01 数据加载

library(clinResearchKit)

# 加载多个国家数据
elderly_data <- elderly_load(
  countries = c("charls", "hrs", "share", "elsa")
)

# 查看各数据集基本信息
elderly_list(elderly_data)

# 预处理:统一变量名、年龄范围、随访周期
clean_data <- elderly_preprocess(
  elderly_data,
  age_range  = c(50, 80),   # 50-80岁
  wave_range = c(2015, 2020)    # 2015-2020 随访波
)

02 Fried 衰弱评估

Fried 衰弱量表(5 项指标:体重减轻、疲惫感、体力活动、步行速度、握力)是老龄化研究的核心工具。

# Fried 衰弱评估
fried_result <- elderly_fried(
  clean_data,
  outcome  = "all-cause_mortality",  # 全因死亡作为验证结局
  by_country = TRUE                  # 分国家计算
)

# 各国家衰弱患病率
print(fried_result$prevalence)

# 衰弱与死亡风险(按国家)
hr_fried <- elderly_fried(
  clean_data,
  outcome = "all-cause_mortality",
  meta_method = "random"            # 随机效应 meta 分析合并 HR
)
# 衰弱四分类(Robust / Pre-frail / Mild / Moderate-Severe)
four_class <- elderly_four_class(
  clean_data,
  frailty_var = "fried_score"
)
print(four_class)

03 线性回归(认知功能分析)

# 分析教育年限与认知功能的关系(跨国比较)
ols_result <- elderly_ols(
  clean_data,
  outcome    = "cognition_z",     # 标准化认知得分
  exposure   = "education_years",   # 暴露变量
  covariates = c("age", "sex"),
  by_country = TRUE                 # 分国家回归
)

# 查看各国家回归系数
print(ols_result)

# 森林图展示跨国异质性
p_forest <- elderly_forest(
  ols_result,
  title = "教育年限与认知功能(β系数,跨国比较)",
  ref_line = 0
)
print(p_forest)
ggsave("elderly_education_cognition.pdf", p_forest, width = 8, height = 6)

04 中介分析

检验教育通过衰弱间接影响认知的效应量(间接效应 vs 直接效应)。

# 中介分析:教育 → 衰弱 → 认知
mediation <- elderly_mediation(
  clean_data,
  exposure  = "education_years",
  mediator  = "fried_score",
  outcome   = "cognition_z",
  covariates = c("age", "sex"),
  n_bootstrap = 1000           # Bootstrap 重采样次数
)

# 查看结果
print(mediation)
# 间接效应(教育→衰弱→认知)、直接效应、总效应及比例

中介分析解读:如果间接效应显著(Bootstrap CI 不包含 0),说明衰弱是教育与认知之间关系的重要中介路径。

05 一键 Pipeline

使用 pipeline 函数自动执行完整分析流程:加载→预处理→分析→结果导出。

# 跨国比较 pipeline
aging_country_compare_pipeline(
  countries    = c("charls", "hrs", "share"),
  outcome      = "cognition_z",
  exposure     = "education_years",
  covariates   = c("age", "sex"),
  meta_method  = "random",
  export_dir   = "results/elderly/"
)

# Cox pipeline(多国合并生存分析)
aging_pooled_cox_pipeline(
  countries   = c("charls", "hrs"),
  time_var    = "survtime",
  event_var   = "death",
  exposure    = "frailty",
  adjust_vars = c("age", "sex")
)