Должен ли я загружаться на уровне кластера или на индивидуальном уровне?

10

У меня есть модель выживания с пациентами, размещенными в больницах, которая включает случайный эффект для больниц. Случайный эффект имеет гамма-распределение, и я пытаюсь сообщить о «значимости» этого термина в легко понятной шкале.

Я нашел следующие ссылки, в которых используется Медианное соотношение рисков (немного похожее на Медианный коэффициент вероятности), и рассчитал это.

Бенгтссон Т, Дрибэ М: Исторические методы 43:15, 2010

Однако теперь я хочу сообщить о неопределенности, связанной с этой оценкой, с помощью начальной загрузки. Данные являются данными выживания, и, следовательно, существует несколько наблюдений на пациента и несколько пациентов на больницу. Кажется очевидным, что мне нужно объединить наблюдения пациентов при повторной выборке. Но я не знаю, стоит ли мне кластеризовать больницы тоже (т. Е. Пересматривать больницы, а не пациентов?

Мне интересно, зависит ли ответ от параметра, представляющего интерес, и поэтому был бы другим, если бы целью было что-то, что было актуально на уровне пациента, а не на уровне больницы?

Я перечислил код 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
drstevok
источник

Ответы:

2

Представьте, что вы провели исследование о достижениях детей в образовании. Вы выбрали случайную выборку школ из некоторого района, и из каждой школы в исследование был включен один класс. Вы провели анализ и теперь хотите использовать загрузчик для получения доверительных интервалов для ваших оценок. Как это сделать?

Во-первых, обратите внимание, что ваши данные являются иерархическими, они имеют несколько уровней: школы, классы в школах и учащиеся в классах. Поскольку в каждой школе только один класс, значит, второй уровень в ваших данных отсутствует. Можно предположить, что в школах есть некоторые сходства и различия между школами. Если в школах есть сходства, то если вы выбираете учеников случайным образом, не принимая во внимание их членство в школе, вы можете разрушить иерархическую структуру ваших данных.

В общем, есть несколько вариантов:

  1. выборка студентов с заменой,
  2. выборка целых школ с заменой,
  3. сначала выберите школы с заменой, а затем выберите учащихся (а) с заменой или (б) без замены.

Похоже, что первый подход является худшим. Напомним, что при начальной загрузке выборка должна каким-то образом имитировать процесс выборки в вашем исследовании, а вы выбираете школы, а не отдельных учащихся. Выбор между (2) и (3) является более сложным, но, надеюсь, вы найдете исследовательские работы по этой теме (например, Рена и др., 2010, Field and Welsh, 2007). Обычно предпочтительны варианты (2) или (3b), поскольку кажется, что включение слишком большого количества выборок с заменой приводит к смещенным результатам. Вы можете найти больше информации по этой теме также в книгах Эфрона и Тибширани (1994) и Дэвисона и Хинкли (1997). Обратите внимание, что у нас похожая проблема с загрузкой данных временных рядови в этом случае мы также скорее выбираем целые блоки ряда (например, целый сезон, если мы предполагаем сезонность), а не отдельные наблюдения, потому что в противном случае временная структура была бы разрушена. На практике не существует единого решения, подходящего для всех, но со сложными структурами данных вы должны выбрать такую ​​схему выборки при начальной загрузке, которая наилучшим образом соответствует вашим данным и вашей проблеме, и, если возможно, использовать исследование для сравнения различных решений.


Дэвисон А.С. и Хинкли Д.В. (1997). Методы начальной загрузки и их применение. Кембридж.

Эфрон Б. и Тибширани Р.Дж. (1994). Введение в Bootstrap . CRC Press.

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X. & Lai, S. (2010). Непараметрическая начальная загрузка для иерархических данных. Журнал прикладной статистики, 37 (9), 1487-1498.

Field, CA, & Welsh, AH (2007). Начальная загрузка кластерных данных. Журнал Королевского статистического общества: Серия B (Статистическая методология), 69 (3), 369-390.

Тим
источник
1
Принял ваш ответ (спасибо), но для других я теперь реализовал функцию в R, чтобы сделать это в моем ответе
drstevok
3

Ответ, по-видимому, заключается в том, что процесс повторной выборки должен учитывать структуру данных. Здесь есть хорошее объяснение (вместе с некоторым R-кодом для его реализации).

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

Благодаря указателю от Статистической Консалтинговой Группы UCLA .

Я написал более быструю (но менее гибкую) версию фрагмента кода, на которую ссылается выше - проверьте здесь обновления и подробности.

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)
}
drstevok
источник