Gói Metafor: chẩn đoán sai lệch và độ nhạy


9

Tôi đang tiến hành phân tích tổng hợp đa cấp bao gồm một số bài viết có nhiều kết quả. Vì vậy, tôi đang sử dụng rma.mv()chức năng. Mã ví dụ:

test.main = rma.mv(yi,vi,random = ~1|ID, data = data) 

Tôi có hai câu hỏi:

  1. Tôi đã đọc trong một truy vấn trước đó rằng khi sử dụng rma.mv(), ranktest()không phải là một thử nghiệm đáng tin cậy về tính không đối xứng của biểu đồ phễu. Tuy nhiên, nếu phương sai mẫu được thêm vào mô hình ban đầu với tư cách là người điều hành, thì mô hình này sẽ tương tự như thử nghiệm của Egger:

    test.egger = rma.mv(yi,vi, mod = vi, random = ~1|ID, data = data)
    

    Là mã này một giải thích chính xác của hướng dẫn đó? Ngoài ra, các lô phễu cũng (ít nhiều) vô dụng như một công cụ với rma.mv()các mô hình?

  2. Không leave1out()phải cũng không trimfill()làm việc rma.mv()để đánh giá độ nhạy của kết quả mô hình. Các công cụ phân tích độ nhạy khác hiện có sẵn cho rma.mv()các mô hình không liên quan đến sự hiểu biết thuần thục về R không?

Câu trả lời:


8

Về 1: Có, thêm vilàm người điều hành thực sự là cách hợp lý để mở rộng thử nghiệm của Egger sang các mô hình phức tạp hơn.

Trên thực tế, sử dụng phương sai lấy mẫu làm người điều hành chỉ là một khả năng tiến hành "kiểm tra hồi quy cho tính không đối xứng của biểu đồ phễu". Những người khác đã đề xuất sử dụng nghịch đảo của phương sai lấy mẫu hoặc sai số chuẩn (căn bậc hai của phương sai lấy mẫu) hoặc nghịch đảo của chúng hoặc tổng kích thước mẫu (hoặc một số chức năng của chúng) làm bộ điều tiết. Không hoàn toàn rõ ràng dự đoán nào là lựa chọn "tốt nhất" (và điều này có thể phụ thuộc vào kết quả đo lường bạn sử dụng cho phân tích tổng hợp của bạn). Ví dụ, đối với một số biện pháp, phương trình chúng tôi sử dụng để ước tính / ước tính phương sai lấy mẫu thực sự là một hàm của kết quả quan sát được, nó tự động tạo ra mối quan hệ giữa hai ngay cả khi không có sai lệch xuất bản (hoặc "sai lệch nghiên cứu nhỏ" hoặc bất cứ điều gì chúng tôi muốn gọi nó). Trong trường hợp đó,

Nhưng điểm chính là: Có, có thể dễ dàng áp dụng thử nghiệm hồi quy khi làm việc với các mô hình phức tạp hơn bằng cách thêm một bộ điều tiết thích hợp vào mô hình.

Các lô phễu có hữu ích hay không khi có các cấu trúc đa cấp / đa biến bên dưới dữ liệu đang gây tranh cãi. Ví dụ: các tập hợp điểm có thể tụ lại với nhau do phụ thuộc thống kê (được tính khi sử dụng mô hình đa cấp / đa biến thích hợp), nhưng trong biểu đồ kênh, các điểm chỉ là: một loạt các điểm. Điều đó làm cho việc giải thích các sơ đồ kênh trở nên khó khăn hơn bởi vì (trừ khi bạn thực hiện các bước bổ sung bằng cách sử dụng các màu sắc hoặc ký hiệu khác nhau), bạn không thể thấy các phụ thuộc vốn có đó - không phải hầu hết mọi người (bao gồm cả tôi) đều giỏi trong việc diễn giải các sơ đồ kênh ngay cả trong cách đơn giản nhất trường hợp (có nghiên cứu thực nghiệm chứng minh rằng!).

Về 2: Có, một loạt các chức năng phù hợp với mô hình bài hiện không hoạt động với rma.mvcác đối tượng mô hình. Tôi chỉ không có xung quanh để thực hiện điều này và một số điều này thực sự sẽ đòi hỏi một số suy nghĩ. Ví dụ: leave1out()loại bỏ một nghiên cứu tại một thời điểm - trong bối cảnh đơn biến, điều này tương đương với việc loại bỏ từng kết quả quan sát được tại một thời điểm, nhưng còn dữ liệu đa cấp / đa biến thì sao? Cũng loại bỏ từng kết quả quan sát tại một thời điểm? Hoặc loại bỏ các bộ điểm? Hoặc làm cho các tùy chọn khác nhau có sẵn? Liên quan đến việc cắt và điền (bỏ qua câu hỏi phương pháp này thực sự hữu ích như thế nào): Mở rộng phương pháp sang dữ liệu đa cấp / đa biến sẽ đáng để viết toàn bộ bài báo.

Vì vậy, thật tuyệt khi bạn muốn phân tích độ nhạy, nhưng ngay lúc này, bạn sẽ phải thực hiện một số điều này bằng tay. Các phân tích bỏ qua một cách dễ dàng được thực hiện với một vòng lặp đơn giản và suy nghĩ cẩn thận về "một" là gì (ví dụ: mỗi kết quả quan sát được, mỗi cụm / nghiên cứu). Bạn có thể thực hiện kiểm tra hồi quy và có thể để lại trim-and-fill ngay bây giờ. Phần dư được chuẩn hóa có sẵn thông qua rstandard(), vì vậy bạn có thể kiểm tra dữ liệu cho các ngoại lệ tiềm năng. Bạn có thể nhận được các giá trị mũ thông qua hatvalues()(chỉ các đòn bẩy dọc theo đường chéo hoặc toàn bộ ma trận mũ ) cho bạn biết dấu hiệu nào có ảnh hưởng mạnh đến kết quả. Một biện pháp thực sự hữu ích khác trong bối cảnh này là khoảng cách của Cook , mà bạn có thể có được thông qua cooks.distance(), cũng cho rma.mvcác đối tượng.


2
Ồ Cảm ơn bạn đã trả lời chu đáo và kỹ lưỡng của bạn. Tôi sẽ cố gắng tìm ra cách sử dụng mã for-loop, như bạn đề xuất.
chabeck

1
Rất vui khi biết bạn thấy điều này hữu ích. Các hàm phù hợp mô hình khác nhau bao gồm rma.mv()có một subsetđối số mà bạn có thể dễ dàng sử dụng cùng với một vòng lặp for để loại bỏ (bộ) kết quả quan sát được.
Wolfgang

4
Wolfgang, sản phẩm của các đề xuất của bạn có thể được quan sát ở đây: aobpla.oxfordjournals.org/content/7/. Cảm ơn một lần nữa!
chabeck
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.