評估治療的暫時效果
想像一下,我有一種治療方法可以降低對刺激做出反應的可能性。這可以是您喜歡的任何東西,但最簡單的例子是在暴露時預防疾病的治療(例如,洗手、戴口罩等)。
為簡單起見,我建立了一個(過於復雜的)模型,用於在兩種治療方法下隨時間響應刺激的風險(所有這些都是在 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 描述了身體產生胰島素的效率。
在這裡,AUC 將一個過於復雜的問題簡化為一個簡單的問題:干預是否降低了一組與另一組相比的時間平均風險?在這樣做的過程中,我們能夠免除自己對依賴結構做出強烈且可能不正確的假設。對於不平衡的數據,可以使用樣條曲線在合理範圍內(受限均值)估計曲線。例如,如果 A 組中的曲線沒有像 B 組那樣“達到峰值”,而是在很長一段時間內保持高位,那麼上面提出的任何建模方法都不能正確估計條件響應的標準偏差,然而,AUC 只是解決了為什麼 B 組可能是首選(不太持續的反應)。