AGE-PERIOD-COHORT (APC) 连续变量和二分类变量分析全代码

Age-period-cohort(APC)它的算法原理首先需要明白的是这种算法是针对时间这个维度进行了精雕细琢,它把时间维度进行了针对性的分解,分解为年龄效应,时期效应和队列效应。APC 分析的目的就是解开年龄、时期和队列的独立影响。这里分别给大家解释一下这三个分解效应:

年龄效应:年龄效应是与特定于个人的衰老的生物学和社会过程相关的变化。它们包括与衰老相关的生理变化和社会经验的积累,但与个人所属的时期或所属队列无关。

时期效应:时期效应是外部因素在特定日历时间同等影响所有年龄组的结果。它可能源于一系列环境、社会和经济因素,例如战争、饥荒、经济危机。结果定义、分类或数据收集方法的方法论变化也可能导致数据的周期效应。

队列效应:队列效应是一组受试者(队列)随着时间的推移而产生的独特体验/暴露所导致的变化。在流行病学中,队列效应被概念化为由于特定年龄暴露或对该事件或原因的易感性而不同地经历的时期效应导致的相互作用或效应改变。这句话有点晦涩难懂,通俗讲队列效应就是一个结构化因素,代表队列从出生时经历的所有独特暴露的总和。作为医学研究的数据我们比较感兴趣的是birth cohort。

下面是这个算法比较绕的地方:因为年龄,时期和队列这三个因素存在着明显的共线性,但我们分析APC的目的就是要找到这三个因素的独立影响。

全代码给大家

#AGE-PERIOD-COHORT (APC) ANALYSIS
rm(list = ls());gc()
#首先加载包
library(broom)
library(tidyverse)
suicides <- read_csv("G:/Rcode/master.csv")
suicides <-  suicides %>% select(suicides = 'suicides_no', age, period = 'year', sex, country) %>%
  bind_cols(age1 = sample(10:99, dim(suicides)[1], replace = TRUE)) %>% 
  select(-age) %>% 
  mutate(age = age1) %>% 
  select(-age1) %>% 
  mutate(cohort = period - age)

#查看一下数据结构
glimpse(suicides)
#调整APC需要的变量,对主变量进行赋值约束
suicides <- suicides %>%
  mutate(age_squared = age ^ 2) %>% 
  mutate_at(vars(period, cohort), funs(as.factor(.))) %>% 
  select(suicides, age, age_squared, period, cohort, everything())

suicides
#做完数据清洗,我们进行求解系数
apc_lm <- lm(suicides ~ age + age_squared + period + cohort, suicides)

summary(apc_lm)
#下面清洁函数的结果
apc_tidy <- tidy(apc_lm)

apc_tidy

pc_tidy <- apc_tidy %>%
  mutate(
    key = str_replace_all(term, "[:digit:]", ""), 
    value = str_replace_all(term, "[:alpha:]", ""

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞时过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值