Czy powinienem uruchomić system na poziomie klastra czy na poziomie indywidualnym?

10

Mam model przeżycia z pacjentami zagnieżdżonymi w szpitalach, który zawiera losowy efekt dla szpitali. Efekt losowy rozkłada się w zależności od promieniowania gamma i staram się opisać „trafność” tego terminu w skali, która jest łatwa do zrozumienia.

Znalazłem następujące odniesienia, które wykorzystują Medianę Hazard Ratio (trochę jak Median Ratio), i obliczyłem to.

Bengtsson T, Dribe M: Historical Methods 43:15, 2010

Jednak teraz chcę zgłosić niepewność związaną z tymi szacunkami za pomocą bootstrap. Dane są danymi o przeżyciu, a zatem istnieje wiele obserwacji na pacjenta i wielu pacjentów na szpital. Wydaje się oczywiste, że muszę ponownie skupić obserwacje pacjenta podczas ponownego próbkowania. Ale nie wiem, czy powinienem także skupić szpitale (tj. Przeskalować szpitale, a nie pacjentów?

Zastanawiam się, czy odpowiedź zależy od parametru zainteresowania, a więc byłby inny, gdyby cel był istotny na poziomie pacjenta, a nie szpitala?

Poniżej wymieniłem kod stata na wypadek, gdyby to pomogło.

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
źródło

Odpowiedzi:

2

Wyobraź sobie, że przeprowadziłeś badanie dotyczące osiągnięć edukacyjnych dzieci. Pobrano losową próbkę szkół z jakiegoś obszaru i z każdej szkoły do ​​badania włączono jedną klasę. Przeprowadziłeś analizę, a teraz chcesz użyć bootstrap, aby uzyskać przedziały ufności dla swoich szacunków. Jak to zrobić?

Po pierwsze, zauważ, że twoje dane są hierarchiczne, mają kilka poziomów: szkoły, klasy w szkołach i uczniów w klasach. Ponieważ na szkołę przypada tylko jedna klasa, w danych nie ma drugiego poziomu. Możemy założyć, że istnieją pewne podobieństwa w obrębie szkół i różnice między szkołami. Jeśli istnieją podobieństwa w szkołach, to jeśli losowo wybierzesz uczniów, nie biorąc pod uwagę ich przynależności do szkoły, możesz zniszczyć hierarchiczną strukturę swoich danych.

Ogólnie istnieje kilka opcji:

  1. przykładowi studenci z wymianą,
  2. przykładowe całe szkoły z wymianą,
  3. najpierw pobierają próbki szkół z wymianą, a następnie próbują uczniów (a) z wymianą lub (b) bez wymiany.

Wydaje się, że pierwsze podejście jest najgorsze. Przypomnij sobie, że próbkowanie bootstrap powinno w jakiś sposób naśladować proces próbkowania w twoim badaniu, a ty pobierałeś próbki ze szkół, a nie z poszczególnych uczniów. Wybór między (2) i (3) jest bardziej skomplikowany, ale mam nadzieję, że można znaleźć prace badawcze dotyczące tego tematu (np. Rena i in. 2010, Field and Welsh, 2007). Zasadniczo preferowane są opcje (2) lub (3b), ponieważ wydaje się, że włączenie zbyt wielu poziomów próbkowania z wymianą prowadzi do stronniczych wyników. Więcej informacji na ten temat można znaleźć także w książkach Efrona i Tibshirani (1994) oraz Davisona i Hinkleya (1997). Zauważ, że mamy podobny problem z ładowaniem danych szeregów czasowychiw tym przypadku raczej próbujemy całych bloków szeregów (np. cały sezon, jeśli przyjmiemy sezonowość), a nie indywidualnych obserwacji, ponieważ w przeciwnym razie struktura czasu zostałaby zniszczona. W praktyce nie ma jednego uniwersalnego rozwiązania, ale przy skomplikowanych strukturach danych powinieneś wybrać taki schemat próbkowania, który najlepiej pasuje do twoich danych i twojego problemu, i jeśli to możliwe, użyj badania symulacyjnego, aby porównać różne rozwiązania.


Davison, AC i Hinkley, DV (1997). Metody ładowania początkowego i ich zastosowanie. Cambridge.

Efron, B. i Tibshirani, RJ (1994). Wprowadzenie do Bootstrap . CRC Press.

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X., i Lai, S. (2010). Nieparametryczne ładowanie danych hierarchicznych. Journal of Applied Statistics, 37 (9), 1487-1498.

Field, CA i Welsh, AH (2007). Ładowanie danych klastrowych. Journal of Royal Statistics Society: Series B (Statistics Methodology), 69 (3), 369-390.

Tim
źródło
1
Zaakceptowałem twoją odpowiedź (dzięki), ale dla innych zaimplementowałem teraz funkcję w R, aby to zrobić w mojej odpowiedzi
drstevok
3

Odpowiedź wydaje się, że proces ponownego próbkowania musi uwzględniać strukturę danych. Jest tutaj dobre wyjaśnienie (wraz z pewnym kodem R, aby to zaimplementować).

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

Dzięki wskaźnikowi z UCLA Statistics Consulting Group .

Napisałem szybszą (ale mniej elastyczną) wersję fragmentu kodu powiązanego z powyższym - sprawdź tutaj, aby uzyskać aktualizacje i szczegóły.

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
źródło