標(biāo)準(zhǔn)化率(standardized rate)R實(shí)現(xiàn)

標(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)

數(shù)據(jù)

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猾封,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子噪珊,更是在濱河造成了極大的恐慌晌缘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痢站,死亡現(xiàn)場離奇詭異磷箕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瑟押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門搀捷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人多望,你說我怎么就攤上這事嫩舟。” “怎么了怀偷?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵家厌,是天一觀的道長。 經(jīng)常有香客問我椎工,道長饭于,這世上最難降的妖魔是什么蜀踏? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮掰吕,結(jié)果婚禮上果覆,老公的妹妹穿的比我還像新娘。我一直安慰自己殖熟,他們只是感情好局待,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菱属,像睡著了一般钳榨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纽门,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天薛耻,我揣著相機(jī)與錄音,去河邊找鬼赏陵。 笑死饼齿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的瘟滨。 我是一名探鬼主播候醒,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杂瘸!你這毒婦竟也來了倒淫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤败玉,失蹤者是張志新(化名)和其女友劉穎敌土,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體运翼,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡返干,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了血淌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矩欠。...
    茶點(diǎn)故事閱讀 39,779評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悠夯,靈堂內(nèi)的尸體忽然破棺而出癌淮,到底是詐尸還是另有隱情,我是刑警寧澤沦补,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布乳蓄,位于F島的核電站,受9級特大地震影響夕膀,放射性物質(zhì)發(fā)生泄漏虚倒。R本人自食惡果不足惜美侦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望魂奥。 院中可真熱鬧菠剩,春花似錦、人聲如沸捧弃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽违霞。三九已至,卻和暖如春瞬场,著一層夾襖步出監(jiān)牢的瞬間买鸽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工贯被, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眼五,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓彤灶,卻偏偏與公主長得像看幼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子幌陕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評論 2 354