R

評估治療的暫時效果

  • May 29, 2019

想像一下,我有一種治療方法可以降低對刺激做出反應的可能性。這可以是您喜歡的任何東西,但最簡單的例子是在暴露時預防疾病的治療(例如,洗手、戴口罩等)。

為簡單起見,我建立了一個(過於復雜的)模型,用於在兩種治療方法下隨時間響應刺激的風險(所有這些都是在 R 中使用 完成的tidyverse):

day_prob <-
 list(
   A = c(0.06, 0.06, pmax(dchisq(1:13, 3)*1, 0.06))
   , B = c(0.06, 0.06, pmax(dchisq(seq(1, 25, 2), 5)*6, 0.06))
 )

這可以繪製以顯示風險:

day_prob %>%
 lapply(function(x){
   tibble(
     Day = 1:length(x)
     , Prob = x
   )
 }) %>%
 bind_rows(.id = "Group") %>%
 ggplot(aes(x = Day
            , y = Prob
            , col = Group)) +
 geom_line() +
 geom_point() +
 scale_color_brewer(palette = "Dark2")

陰謀:

在此處輸入圖像描述

請注意,兩組的基線風險相似(0.06),暴露後出現一些潛伏期(風險在第 3 天上升),並且該風險隨著時間的推移回落至基線。

現在,假設我將個體隨機分配到兩種治療中,我確定這種效果的最佳方法是什麼?我可以單獨分析每一天,儘管這會引發一些重複測量的問題,因為(與下面的示例數據不同)一個陽性個體在隨後的幾天中檢測出陽性的可能性更大(甚至更少)。

我已經搜索了許多替代問題,但似乎沒有什麼能完全捕捉到這個問題。我可以嘗試重複測量分析,但如果延遲和返回基線足夠長,它們都應該會淹沒我的效果。此外,理想的是實際知道何時觀察到效果。

樣本數據集:

make_obs <- function(group, day){
 sapply(1:length(group), function(idx){
   rbinom(1, 1, day_prob[[group[idx]]][day[idx]] )
 })
}

set.seed(12345)
example_data <-
 tibble(
   Group = rep(c("A", "B"), each = 50)
   , Ind = 1:100
   , Day = 1
 ) %>%
 complete(nesting(Group, Ind), Day = 1:15) %>%
 mutate(
   Obs = make_obs(Group, Day)
 )

繪圖以顯示觀察到的數據:

example_data %>%
 group_by(Group, Day) %>%
 summarise(Prop_pos = mean(Obs)) %>%
 ungroup() %>%
 ggplot(aes(x = Day
            , y = Prop_pos
            , col = Group)) +
 geom_line() +
 scale_color_brewer(palette = "Dark2")

在此處輸入圖像描述

在生物統計學中,時間相關的響應通常根據曲線下的面積來檢查。不要將其與作為分類度量的 ROC 的 AUC 混淆。例如,在口服葡萄糖挑戰中,每小時抽血一次以查看一段時間內的葡萄糖濃度。因為糖尿病及其並發症是由血糖的累積濃度引起的,所以 2hOGTT 血糖的 AUC 描述了身體產生胰島素的效率。

在此處輸入圖像描述

https://www.researchgate.net/figure/Comparison-of-the-area-under-the-curve-AUC-values-of-blood-glucose-levels-obtained-from_fig1_273472980

在這裡,AUC 將一個過於復雜的問題簡化為一個簡單的問題:干預是否降低了一組與另一組相比的時間平均風險?在這樣做的過程中,我們能夠免除自己對依賴結構做出強烈且可能不正確的假設。對於不平衡的數據,可以使用樣條曲線在合理範圍內(受限均值)估計曲線。例如,如果 A 組中的曲線沒有像 B 組那樣“達到峰值”,而是在很長一段時間內保持高位,那麼上面提出的任何建模方法都不能正確估計條件響應的標準偏差,然而,AUC 只是解決了為什麼 B 組可能是首選(不太持續的反應)。

引用自:https://stats.stackexchange.com/questions/410727

comments powered by Disqus