클러스터 수준 또는 개별 수준에서 부트 스트랩해야합니까?


10

병원에 무작위로 영향을 미치는 병원에 환자가 중첩되어있는 생존 모델이 있습니다. 무작위 효과는 감마 분포이며,이 용어의 '관련성'을 쉽게 이해할 수있는 척도로보고하려고합니다.

중간 위험률 비율 (중간 승률 비율과 약간 비슷 함)을 사용하는 다음 참조를 찾아서 계산했습니다.

Bengtsson T, Dribe M : 역사적 방법 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

답변:


2

어린이 교육 성과에 대한 연구를 수행했다고 상상해보십시오. 일부 지역에서 무작위로 학교 샘플을 채취했으며 각 학교에서 한 학급이 연구에 포함되었습니다. 분석을 수행했으며 이제 부트 스트랩을 사용하여 추정치의 신뢰 구간을 얻으려고합니다. 어떻게합니까?

먼저 데이터는 계층 적이며 학교, 학교 내 수업 및 수업 내 학생 등 여러 수준이 있습니다. 학교당 수업이 하나뿐이므로 두 번째 수준은 귀하의 데이터에 존재하지 않습니다. 학교 내에는 유사점이 있고 학교마다 차이가 있다고 가정 할 수 있습니다. 학교 내에 유사성이 있다면 학생을 무작위로 샘플링하고 학교 구성원을 고려하지 않으면 데이터의 계층 구조를 파괴 할 수 있습니다.

일반적으로 몇 가지 옵션이 있습니다.

  1. 대체 학생 샘플,
  2. 학교 전체를 교체하여
  3. 먼저 대체 학교를 표본으로 채운 다음 (a) 교체 학교를, 또는 (b) 교체없이 학생들을 채취하십시오.

첫 번째 방법은 최악의 방법으로 보입니다. 그 기억 부트 스트랩 샘플링이 연구에서 샘플링 과정을 모방 어떻게 든해야 하고 학생 개개인보다는 학교를 샘플링했다. (2)와 (3) 중에서 선택하는 것이 더 복잡하지만이 주제를 고려한 연구 논문을 찾을 수 있기를 바랍니다 (예 : Rena et al. 2010, Field and Welsh, 2007). 대체로 샘플링 수준을 너무 많이 포함하면 결과가 치우치는 것처럼 보이기 때문에 일반적으로 옵션 (2) 또는 (3b)가 바람직합니다. 이 주제에 대한 자세한 정보는 Efron and Tibshirani (1994)와 Davison and Hinkley (1997)의 저서에서도 찾을 수 있습니다. 부트 스트래핑 시계열 데이터 와 유사한 문제가 있음에 유의하십시오.이 경우에는 시간 구조가 파괴되기 때문에 개별 관측치보다는 전체 계열 블록 (예 : 계절성을 가정하면 전체 계절)을 샘플링합니다. 실제로 모든 규모에 맞는 솔루션은 없지만 복잡한 데이터 구조를 사용하면 데이터와 문제에 가장 적합한 부트 스트랩 샘플링 방식을 선택하고 가능한 경우 시뮬레이션 연구를 사용하여 다른 솔루션을 비교해야합니다.


Davison, AC 및 Hinkley, DV (1997). 부트 스트랩 방법 및 응용 프로그램. 케임브리지.

RJ (Efron, B. and Tibshirani, RJ) (1994). 부트 스트랩 소개 . CRC Press.

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X., & Lai, S. (2010). 계층 적 데이터를위한 비모수 적 부트 스트랩 응용 통계 학회지, 37 (9), 1487-1498.

AH, Field & CA (2007). 클러스터 된 데이터 부트 스트랩 왕립 통계 학회지 : 시리즈 B (통계 방법론), 69 (3), 369-390.


1
답변 (감사)을 허용하지만, 다른 사람을 위해 나는 지금 내에서이 작업을 수행하는 R의 기능을 구현 한 대답
drstevok

3

답은 리샘플링 프로세스가 데이터 구조를 고려해야한다는 것 같습니다. 여기에 좋은 설명이 있습니다 (이를 구현하는 일부 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)
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.