Tôi nên bootstrap ở cấp độ cụm hoặc cấp độ cá nhân?


10

Tôi có một mô hình sống sót với các bệnh nhân được lồng trong các bệnh viện bao gồm hiệu ứng ngẫu nhiên cho các bệnh viện. Hiệu ứng ngẫu nhiên được phân phối bằng gamma và tôi đang cố gắng báo cáo "mức độ phù hợp" của thuật ngữ này theo thang điểm dễ hiểu.

Tôi đã tìm thấy các tài liệu tham khảo sau sử dụng Tỷ lệ rủi ro trung bình (hơi giống với tỷ lệ chênh lệch trung bình) và đã tính toán điều này.

Bengtsson T, Dribe M: Phương pháp lịch sử 43:15, 2010

Tuy nhiên, bây giờ tôi muốn báo cáo sự không chắc chắn liên quan đến ước tính này bằng cách sử dụng bootstrap. Dữ liệu là dữ liệu sinh tồn và do đó có nhiều quan sát cho mỗi bệnh nhân và nhiều bệnh nhân trên mỗi bệnh viện. Rõ ràng là tôi cần phải phân cụm các quan sát bệnh nhân khi lấy mẫu lại. Nhưng tôi không biết liệu tôi có nên phân cụm các bệnh viện không (ví dụ như lấy mẫu lại bệnh viện, thay vì bệnh nhân?

Tôi tự hỏi nếu câu trả lời phụ thuộc vào thông số quan tâm, và như vậy sẽ khác nếu mục tiêu là thứ gì đó có liên quan ở cấp độ bệnh nhân chứ không phải ở cấp độ bệnh viện?

Tôi đã liệt kê mã stata dưới đây trong trường hợp có ích.

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

Câu trả lời:


2

Hãy tưởng tượng rằng bạn đã tiến hành một nghiên cứu về thành tích giáo dục trẻ em. Bạn đã lấy một mẫu ngẫu nhiên các trường từ một số khu vực và từ mỗi trường, một lớp được đưa vào nghiên cứu. Bạn đã tiến hành phân tích và bây giờ muốn sử dụng bootstrap để có được khoảng tin cậy cho các ước tính của bạn. Làm thế nào để làm nó?

Đầu tiên, lưu ý rằng dữ liệu của bạn được phân cấp, nó có nhiều cấp độ: trường học, lớp học trong trường học và học sinh trong các lớp học. Vì chỉ có một lớp cho mỗi trường, nên cấp độ thứ hai không có trong dữ liệu của bạn. Chúng ta có thể giả định rằng có một số điểm tương đồng trong các trường học và sự khác biệt giữa các trường. Nếu có sự tương đồng trong các trường thì nếu bạn lấy mẫu học sinh một cách ngẫu nhiên, không xem xét tư cách thành viên của trường, bạn có thể phá hủy cấu trúc phân cấp dữ liệu của mình.

Nói chung, có một số tùy chọn:

  1. sinh viên mẫu thay thế,
  2. mẫu toàn trường thay thế,
  3. trường mẫu đầu tiên có sự thay thế và sau đó là học sinh mẫu (a) thay thế, hoặc (b) mà không thay thế.

Có vẻ như cách tiếp cận đầu tiên là cách tiếp cận tồi tệ nhất. Hãy nhớ lại rằng lấy mẫu bootstrap bằng cách nào đó bắt chước quy trình lấy mẫu trong nghiên cứu của bạn và bạn đã lấy mẫu các trường chứ không phải từng học sinh. Việc lựa chọn giữa (2) và (3) phức tạp hơn, nhưng hy vọng bạn có thể tìm thấy các tài liệu nghiên cứu xem xét chủ đề này (ví dụ: Rena et al. 2010, Field và Welsh, 2007). Nói chung, các tùy chọn (2) hoặc (3b) được ưa thích hơn vì dường như bao gồm quá nhiều mức lấy mẫu với sự thay thế dẫn đến kết quả sai lệch. Bạn có thể tìm thêm thông tin về chủ đề này trong các cuốn sách của Efron và Tibshirani (1994) và Davison và Hinkley (1997). Lưu ý rằng chúng tôi có vấn đề tương tự với dữ liệu chuỗi thời gian bootstrappingvà trong trường hợp này, chúng tôi cũng lấy mẫu toàn bộ các chuỗi (ví dụ như toàn bộ mùa nếu chúng tôi giả định tính thời vụ) thay vì quan sát riêng lẻ vì nếu không cấu trúc thời gian sẽ bị phá hủy. Trong thực tế không có giải pháp phù hợp một kích thước nhưng với cấu trúc dữ liệu phức tạp, bạn nên chọn sơ đồ lấy mẫu bootstrap như vậy phù hợp nhất với dữ liệu của bạn và vấn đề của bạn và nếu có thể hãy sử dụng nghiên cứu mô phỏng để so sánh các giải pháp khác nhau.


Davison, AC và Hinkley, DV (1997). Phương pháp Bootstrap và ứng dụng của chúng. Cambridge.

Efron, B. và Tibshirani, RJ (1994). Giới thiệu về Bootstrap . Báo chí CRC.

Ren, S., Lai, H., Tong, W., Aminzadeh, M., Hou, X., & Lai, S. (2010). Bootstrapping không đối xứng cho dữ liệu phân cấp. Tạp chí Thống kê ứng dụng, 37 (9), 1487-1498.

Lĩnh vực, CA, và tiếng Wales, AH (2007). Bootstrapping dữ liệu cụm. Tạp chí của Hiệp hội Thống kê Hoàng gia: Dòng B (Phương pháp thống kê), 69 (3), 369-390.


1
Đã chấp nhận câu trả lời của bạn (cảm ơn), nhưng đối với những người khác, giờ đây tôi đã triển khai một chức năng trong R để thực hiện điều này trong câu trả lời
drstevok

3

Câu trả lời dường như là quá trình lấy mẫu lại cần tính đến cấu trúc của dữ liệu. Có một lời giải thích hay ở đây (cùng với một số mã R để thực hiện điều này).

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

Nhờ vào con trỏ từ Nhóm tư vấn thống kê UCLA .

Tôi đã viết một phiên bản nhanh hơn (nhưng kém linh hoạt hơn) của đoạn mã được liên kết ở trên - kiểm tra các bản cập nhật và chi tiết ở đâ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)
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.