¿Debería arrancar a nivel de clúster o individual?

10

Tengo un modelo de supervivencia con pacientes anidados en hospitales que incluye un efecto aleatorio para los hospitales. El efecto aleatorio está distribuido en gamma, y ​​estoy tratando de informar la 'relevancia' de este término en una escala que se entiende fácilmente.

He encontrado las siguientes referencias que usan la mediana de la razón de riesgo (un poco como la mediana de la razón de probabilidades), y calculé esto.

Bengtsson T, Dribe M: Métodos históricos 43:15, 2010

Sin embargo, ahora deseo informar la incertidumbre asociada con esta estimación utilizando el bootstrap. Los datos son datos de supervivencia y, por lo tanto, hay múltiples observaciones por paciente y múltiples pacientes por hospital. Parece obvio que necesito agrupar las observaciones del paciente al volver a tomar muestras. Pero no sé si también debería agrupar los hospitales (es decir, volver a muestrear hospitales, en lugar de pacientes).

Me pregunto si la respuesta depende del parámetro de interés y, por lo tanto, ¿sería diferente si el objetivo fuera algo relevante a nivel de paciente en lugar de a nivel de hospital?

He enumerado el código stata a continuación en caso de que eso ayude.

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
fuente

Respuestas:

2

Imagine que realizó un estudio sobre los logros educativos de los niños. Usted tomó una muestra aleatoria de escuelas de alguna área y de cada escuela se incluyó una clase en el estudio. Usted realizó un análisis y ahora quiere usar bootstrap para obtener intervalos de confianza para sus estimaciones. ¿Cómo hacerlo?

Primero, observe que sus datos son jerárquicos, tienen varios niveles: escuelas, clases dentro de las escuelas y estudiantes dentro de las clases. Como solo hay una clase por escuela, el segundo nivel no existe en sus datos. Podemos suponer que hay algunas similitudes dentro de las escuelas y diferencias entre las escuelas. Si hay similitudes dentro de las escuelas, entonces si muestreó a los alumnos al azar, sin tener en cuenta su membresía escolar, posiblemente podría destruir la estructura jerárquica de sus datos.

En general, hay varias opciones:

  1. estudiantes de muestra con reemplazo,
  2. muestra escuelas enteras con reemplazo,
  3. primero muestree escuelas con reemplazo y luego muestree estudiantes (a) con reemplazo, o (b) sin reemplazo.

Parece que el primer enfoque es el peor. Recuerde que el muestreo bootstrap debería imitar de alguna manera el proceso de muestreo en su estudio y que estaba muestreando escuelas en lugar de estudiantes individuales. Elegir entre (2) y (3) es más complicado, pero es de esperar que pueda encontrar trabajos de investigación que consideren este tema (por ejemplo, Rena et al. 2010, Field y Welsh, 2007). En general, las opciones (2) o (3b) son preferibles ya que parece que incluir demasiados niveles de muestreo con reemplazo conduce a resultados sesgados. Puede encontrar más información sobre este tema también en los libros de Efron y Tibshirani (1994) y Davison y Hinkley (1997). Tenga en cuenta que tenemos un problema similar con el arranque de datos de series de tiempoy en este caso también preferimos muestrear bloques completos de series (por ejemplo, toda la temporada si suponemos estacionalidad) en lugar de observaciones individuales porque de lo contrario la estructura temporal se destruiría. En la práctica, no existe una solución única para todos, pero con estructuras de datos complicadas, debe elegir el esquema de muestreo de arranque que mejor se adapte a sus datos y su problema y, si es posible, utilizar un estudio de simulación para comparar diferentes soluciones.


Davison, AC y Hinkley, DV (1997). Métodos Bootstrap y su aplicación. Cambridge

Efron, B. y Tibshirani, RJ (1994). Una introducción a Bootstrap . CRC Press.

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X. y Lai, S. (2010). Bootstrapping no paramétrico para datos jerárquicos. Revista de estadísticas aplicadas, 37 (9), 1487-1498.

Field, CA y Welsh, AH (2007). Bootstrapping de datos agrupados. Revista de la Royal Statistical Society: Serie B (Metodología estadística), 69 (3), 369-390.

Tim
fuente
1
Acepté su respuesta (gracias), pero para otros ahora he implementado una función en R para hacer esto en mi respuesta
drstevok
3

La respuesta parece ser que el proceso de remuestreo debe tener en cuenta la estructura de los datos. Aquí hay una buena explicación (junto con un código R para implementar esto).

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

Gracias al puntero del Grupo de Consultoría Estadística de UCLA .

He escrito una versión más rápida (pero menos flexible) del fragmento de código vinculado anteriormente. Consulte aquí para obtener actualizaciones y detalles.

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
fuente