標(biāo)準(zhǔn)化率(standardized rate)R實(shí)現(xiàn)
1. 基本介紹
標(biāo)化率来农,全稱是標(biāo)準(zhǔn)化率(standardized rate)师痕,是流行病學(xué)中常見的一個(gè)指標(biāo)覆醇,當(dāng)幾個(gè)比較組之間的年齡玛痊、性別等變量的構(gòu)成不同時(shí)赴恨,此時(shí)直接比較組間的粗率(crude rate)容易導(dǎo)致偏倚商玫,通常需要對率做標(biāo)準(zhǔn)化(standardization)后再比較箕憾。
標(biāo)化率中心思想:利用某一指定的標(biāo)準(zhǔn)人口構(gòu)成,消除不同地區(qū)在人口構(gòu)成指標(biāo)(年齡拳昌、性別等)方面的差別袭异,即計(jì)算按標(biāo)準(zhǔn)人口構(gòu)成校準(zhǔn)后的總率。標(biāo)準(zhǔn)人口應(yīng)該選擇有代表性的炬藤、較穩(wěn)定的御铃、數(shù)量較大的人群,如全國沈矿、全世界上真、全省的人口為標(biāo)準(zhǔn)人口,時(shí)間也最好與被標(biāo)化資料一致或接近羹膳。
標(biāo)準(zhǔn)化率的方法:主要有兩種睡互,即直接法和間接法。
直接法是根據(jù)一個(gè)標(biāo)準(zhǔn)人口(如全國陵像、全省人口或合并人口等)構(gòu)成就珠,重新計(jì)算各組的預(yù)期率,從而得到標(biāo)準(zhǔn)化率醒颖。直接法需要已知各組的人口構(gòu)成和相應(yīng)的率(如患病率妻怎、死亡率等),以及標(biāo)準(zhǔn)人口構(gòu)成图贸。
間接法是根據(jù)標(biāo)準(zhǔn)患病率(或死亡率蹂季、發(fā)病率等)及各組的人口構(gòu)成來計(jì)算預(yù)期率冕广,從而得到標(biāo)準(zhǔn)化率疏日。間接法需要已知各組的人口構(gòu)成以及標(biāo)準(zhǔn)人口患病率(或死亡率偿洁、發(fā)病率等)。
要點(diǎn):
直接法 | 間接法 | |
---|---|---|
思路 | 調(diào)整原因沟优,即人口構(gòu)成的差異 | 調(diào)整結(jié)果涕滋,即死亡率等 |
實(shí)現(xiàn) | 利用標(biāo)準(zhǔn)人口構(gòu)成調(diào)整死亡率等 | 利用標(biāo)準(zhǔn)死亡率調(diào)整粗死亡率 |
計(jì)算 | 調(diào)整率=標(biāo)準(zhǔn)人口年齡構(gòu)成(即年齡組別占比)× 各年齡組別實(shí)際死亡率 | 調(diào)整率=各年齡組別實(shí)際死亡率(即粗死亡率)×總標(biāo)準(zhǔn)死亡率/總預(yù)期死亡率 |
注:
總標(biāo)準(zhǔn)死亡率=標(biāo)準(zhǔn)人口年齡構(gòu)成(即年齡組別占比)× 各年齡組別標(biāo)準(zhǔn)死亡率
總預(yù)期死亡率=各年齡組別標(biāo)準(zhǔn)死亡率 × 實(shí)際人口年齡構(gòu)成
2. 直接法:計(jì)算年齡調(diào)整的標(biāo)準(zhǔn)化率
假設(shè)某地區(qū)5個(gè)年齡組的HIV感染人數(shù)與對應(yīng)年齡組的人口數(shù)。計(jì)算該地區(qū)的HIV的年齡標(biāo)化率挠阁。
library(tidyverse)
library(epitools)
df=tibble(age_group=c("<1", "1-4", "5-14", "15-24", "25-34", "35-44", "45-54",
"55-64", "65-74", "75-84", "85+"),
case= c(141, 926, 1253, 1080, 1869, 4891, 14956, 30888,
41725, 26501, 5928),
pop=c(1784033, 7065148, 15658730, 10482916, 9939972,
10563872, 9114202, 6850263, 4702482, 1874619, 330915),
standard_pop=c(906897, 3794573, 10003544, 10629526, 9465330,
8249558, 7294330, 5022499, 2920220, 1019504, 142532))
DT::datatable(df)
2.1 HIV粗感染率(Crude Rates)
case/pop=CrudeRate;可以通過mutate
來計(jì)算
# 1.直接法:計(jì)算年齡調(diào)整的標(biāo)準(zhǔn)化率----
# 1.1 HIV粗感染率(Crude Rates)----
# case/pop=CrudeRate;可以通過mutate來計(jì)算
df %>% mutate(CrudeRate=case/pop )
# A tibble: 11 x 5
# age_group case pop standard_pop CrudeRate
# 1 <1 141 1784033 906897 0.0000790
# 2 1-4 926 7065148 3794573 0.000131
# 3 5-14 1253 15658730 10003544 0.0000800
# 4 15-24 1080 10482916 10629526 0.000103
# 5 25-34 1869 9939972 9465330 0.000188
# 6 35-44 4891 10563872 8249558 0.000463
# 7 45-54 14956 9114202 7294330 0.00164
# 8 55-64 30888 6850263 5022499 0.00451
# 9 65-74 41725 4702482 2920220 0.00887
# 10 75-84 26501 1874619 1019504 0.0141
# 11 85+ 5928 330915 142532 0.0179
2.2 HIV年齡標(biāo)化率(Adjusting the Rates)
首先需要通過 standard_pop標(biāo)準(zhǔn)人口來計(jì)算各個(gè)年齡組的比例宾肺,這個(gè)standard_pop可以根據(jù)某省或者WHO的標(biāo)準(zhǔn),主要目的是獲取不同年齡組所占總?cè)丝诒壤?br>
(1) 計(jì)算各年齡組的人數(shù)proportion
prop.table
可以計(jì)算年齡組的proportion侵俗;確保proportion 總和為1锨用。
(2) 計(jì)算年齡組調(diào)整的率
只需將每個(gè)年齡組的原始case
乘以該年齡組的proportion
即可。 (由于proportion均小于1隘谣,因此HIV的年齡標(biāo)化率是各個(gè)年齡組調(diào)整后的累計(jì)效應(yīng))
# 1.2 HIV年齡標(biāo)化率(Adjusting the Rates)----
# 首先需要通過 standard_pop標(biāo)準(zhǔn)人口來計(jì)算各個(gè)年齡組的比例增拥,這個(gè)standard_pop可以根據(jù)某省或者WHO的標(biāo)準(zhǔn),主要目的是獲取不同年齡組所占總?cè)丝诒壤?(a=df %>% mutate(CrudeRate=case/pop,
proportion=prop.table(standard_pop),
Adjust_rates=CrudeRate*proportion))
# A tibble: 11 x 7
# age_group case pop standard_pop CrudeRate proportion Adjust_rates
# 1 <1 141 1784033 906897 0.0000790 0.0153 0.00000121
# 2 1-4 926 7065148 3794573 0.000131 0.0638 0.00000837
# 3 5-14 1253 15658730 10003544 0.0000800 0.168 0.0000135
# 4 15-24 1080 10482916 10629526 0.000103 0.179 0.0000184
# 5 25-34 1869 9939972 9465330 0.000188 0.159 0.0000299
# 6 35-44 4891 10563872 8249558 0.000463 0.139 0.0000642
# 7 45-54 14956 9114202 7294330 0.00164 0.123 0.000201
# 8 55-64 30888 6850263 5022499 0.00451 0.0845 0.000381
# 9 65-74 41725 4702482 2920220 0.00887 0.0491 0.000436
# 10 75-84 26501 1874619 1019504 0.0141 0.0171 0.000242
# 11 85+ 5928 330915 142532 0.0179 0.00240 0.0000429
# CrudeRate
100000*(sum(a$case)/sum(a$pop))
# Adjust_rates
100000*sum(a$Adjust_rates)
根據(jù)該計(jì)算方式寻歧;可以得出 CrudeRate =166.0874; Adjust_rates=143.9176
2.3 標(biāo)化率置信區(qū)間
借助于epitools
:
# ageadjust.direct: Age standardization by direct method, with exact confidence intervals
# Original function written by TJ Aragon, based on Anderson, 1998\. Function re-written and improved by MP Fay, based on Fay 1998.
# 以不同年齡組所占總?cè)丝诒壤秊闃?biāo)準(zhǔn)
asr = ageadjust.direct(count = df$case, pop = df$pop, stdpop = df$standard_pop)
round(100000*asr, 2) ##rate per 100,000 per year
2.4 示例2
# 示例2:
## Data from Fleiss, 1981, p. 249
population <- c(230061, 329449, 114920, 39487, 14208, 3052,
72202, 326701, 208667, 83228, 28466, 5375, 15050, 175702,
207081, 117300, 45026, 8660, 2293, 68800, 132424, 98301,
46075, 9834, 327, 30666, 123419, 149919, 104088, 34392,
319933, 931318, 786511, 488235, 237863, 61313)
population <- matrix(population, 6, 6,
dimnames = list(c("Under 20", "20-24", "25-29", "30-34", "35-39",
"40 and over"), c("1", "2", "3", "4", "5+", "Total")))
population
count <- c(107, 141, 60, 40, 39, 25, 25, 150, 110, 84, 82, 39,
3, 71, 114, 103, 108, 75, 1, 26, 64, 89, 137, 96, 0, 8, 63, 112,
262, 295, 136, 396, 411, 428, 628, 530)
count <- matrix(count, 6, 6,
dimnames = list(c("Under 20", "20-24", "25-29", "30-34", "35-39",
"40 and over"), c("1", "2", "3", "4", "5+", "Total")))
count
### Use average population as standard
standard<-apply(population[,-6], 1, mean) #population[,6]/5
standard
### This recreates Table 1 of Fay and Feuer, 1997
re <- round(10^5*t(sapply(1:5, function(x){ageadjust.direct(count[,x],population[,x],stdpop=standard)})),1)
rownames(re) <- 1:5
re
# 1 2 3 4 5+ Total
# Under 20 107 25 3 1 0 136
# 20-24 141 150 71 26 8 396
# 25-29 60 110 114 64 63 411
# 30-34 40 84 103 89 112 428
# 35-39 39 82 108 137 262 628
# 40 and over 25 39 75 96 295 530
3. 間接法計(jì)算
這里增加了一列數(shù)據(jù)standard_pop人口的各個(gè)感染病例數(shù):standard_case掌栅;這樣就相當(dāng)于兩個(gè)地區(qū)各年齡組都有HIV的發(fā)病數(shù)。合并兩個(gè)地區(qū)的pop計(jì)算調(diào)整的年齡標(biāo)化率码泛。
df$standard_case=c(45, 201, 320, 670, 1126, 3160, 9723, 17935, 22179, 13461, 2238)
##implement indirect age standardization using 'ageadjust.indirect'
asr = ageadjust.indirect(count = df$case, pop = df$pop, stdcount = df$standard_case, stdpop = df$standard_pop)
round(asr$sir, 2) ##standarized incidence ratio
# observed exp sir lci uci
# 130158.00 109126.69 1.19 1.19 1.20
round(100000*asr$rate, 1) ##rate per 100,000 per year
# crude.rate adj.rate lci uci
# 166.1 142.6 141.8 143.3
##需明確選定的標(biāo)準(zhǔn)人群
asr = ageadjust.indirect(count = df$standard_case, pop = df$standard_pop,stdcount = df$case, stdpop = df$pop)
round(asr$sir, 2) ##standarized incidence ratio
round(100000*asr$rate, 1) ##rate per 100,000 per year
# crude.rate adj.rate lci uci
# 119.5 137.9 136.9 139.0
參考閱讀:
(1) 標(biāo)準(zhǔn)化率
(2) R 計(jì)算年齡標(biāo)化率(Age Adjusted Rates)
(3) Age Adjusted Rates - Steps for Calculating