我应该在集群级别还是个人级别进行引导?

机器算法验证 状态 引导程序 多层次分析 重采样 虚弱
2022-03-06 00:39:13

我有一个嵌套在医院中的患者的生存模型,其中包括医院的随机效应。随机效应是伽马分布的,我试图以易于理解的规模报告该术语的“相关性”。

我找到了以下使用中值风险比(有点像中值优势比)的参考资料,并计算了这一点。

Bengtsson T, Dribe M:历史方法 43:15, 2010

但是,现在我希望使用 bootstrap 报告与此估计相关的不确定性。数据是生存数据,因此每个患者有多个观察结果,每个医院有多个患者。很明显,我需要在重新采样时对患者的观察结果进行聚类。但我不知道我是否也应该对医院进行聚类(即重新抽样医院,而不是病人?

我想知道答案是否取决于感兴趣的参数,如果目标是与患者级别而不是医院级别相关的东西,那么会有所不同吗?

我在下面列出了stata代码以防万一。

cap program drop est_mhr
program define est_mhr, rclass
stcox patient_var1 patient_var2 ///
    , shared(hospital) ///
    noshow
local twoinvtheta2 = 2 / (e(theta)^2)
local mhr = exp(sqrt(2*e(theta))*invF(`twoinvtheta2',`twoinvtheta2',0.75))
return scalar mhr = `mhr'
end

bootstrap r(mhr), reps(50) cluster(hospital): est_mhr
2个回答

答案似乎是重采样过程需要考虑数据的结构。这里有一个很好的解释(以及一些实现这一点的 R 代码)。

http://biostat.mc.vanderbilt.edu/wiki/Main/HowToBootstrapCorrelatedData

感谢UCLA Statistical Consulting Group的指点。

我已经编写了上面链接的代码片段的更快(但不太灵活)的版本 - 请在此处查看更新和详细信息。

rsample2 <- function(data=tdt, id.unit=id.u, id.cluster=id.c) {
require(data.table)

setkeyv(tdt,id.cluster)
# Generate within cluster ID (needed for the sample command)
tdt[, "id.within" := .SD[,.I], by=id.cluster, with=FALSE]

# Random sample of sites
bdt <- data.table(sample(unique(tdt[[id.cluster]]), replace=TRUE))
setnames(bdt,"V1",id.cluster)
setkeyv(bdt,id.cluster)

# Use random sample of sites to select from original data
# then
# within each site sample with replacement using the within site ID
bdt <- tdt[bdt, .SD[sample(.SD$id.within, replace=TRUE)],by=.EACHI]

# return data sampled with replacement respecting clusters
bdt[, id.within := NULL] # drop id.within
return(bdt)
}

想象一下,您进行了一项关于儿童教育成就的研究。你从某个地区随机抽取学校样本,每所学校的一个班级被纳入研究。您进行了分析,现在想使用 bootstrap 来获得估计的置信区间。怎么做?

首先,请注意您的数据是分层的,它有几个级别:学校、学校中的班级和班级中的学生。由于每所学校只有一个班级,因此您的数据中不存在第二级。我们可以假设学校内部有一些相似之处,而学校之间存在一些差异。如果学校内部存在相似之处,那么如果您对学生进行随机抽样,而不考虑他们的学校成员资格,您可能会破坏数据的层次结构。

一般来说,有几种选择:

  1. 替换学生样本,
  2. 对整个学校进行替换,
  3. 首先抽样学校替换,然后抽样学生(a)替换,或(b)不替换。

似乎第一种方法是最糟糕的。回想一下,bootstrap抽样应该以某种方式模仿你研究中的抽样过程,并且你抽样的是学校而不是个别学生。在 (2) 和 (3) 之间进行选择更复杂,但希望您能找到考虑到该主题的研究论文(例如 Rena 等人 2010,Field 和 Welsh,2007)。一般来说,选项 (2) 或 (3b) 更可取,因为似乎包含过多的替换抽样水平会导致结果有偏差。您还可以在 Efron 和 Tibshirani (1994) 以及 Davison 和 Hinkley (1997) 的书中找到有关此主题的更多信息。请注意,我们在引导时间序列数据时遇到了类似的问题在这种情况下,我们也宁愿对整个系列块进行采样(例如,如果我们假设季节性,则为整个季节)而不是单个观察,因为否则时间结构会被破坏。在实践中,没有一刀切的解决方案,但是对于复杂的数据结构,您应该选择最适合您的数据和问题的引导抽样方案,并在可能的情况下使用模拟研究来比较不同的解决方案。


戴维森,AC 和欣克利,DV(1997 年)。引导方法及其应用。剑桥。

Efron, B. 和 Tibshirani, RJ (1994)。Bootstrap 简介CRC出版社。

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X., & Lai, S. (2010)。分层数据的非参数引导。应用统计学杂志,37(9),1487-1498。

菲尔德,加利福尼亚州和威尔士,AH(2007 年)。引导聚类数据。皇家统计学会杂志:B 系列(统计方法),69(3),369-390。