Paket metafor: diagnostik bias dan sensitivitas

9

Saya sedang melakukan meta-analisis multi-level yang mencakup beberapa artikel dengan banyak hasil. Karena itu saya menggunakan rma.mv()fungsinya. Kode contoh:

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

Saya punya dua pertanyaan:

  1. Saya membaca dalam kueri sebelumnya bahwa saat menggunakan rma.mv(), ranktest()bukan tes yang dapat diandalkan untuk asimetri plot corong. Namun, jika varians sampel ditambahkan ke model asli sebagai moderator, maka model ini akan serupa dengan tes Egger:

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

    Apakah kode ini merupakan interpretasi yang benar dari panduan itu? Juga, apakah plot corong juga (kurang lebih) tidak berguna sebagai alat dengan rma.mv()model?

  2. Baik leave1out()atau trimfill()bekerja dengan rma.mv()untuk menilai sensitivitas hasil model. Apakah alat analisis sensitivitas lain saat ini tersedia untuk rma.mv()model yang tidak melibatkan pemahaman yang ahli tentang R?

chabeck
sumber

Jawaban:

8

Mengenai 1: Ya, menambahkan visebagai moderator memang cara logis untuk memperluas uji Egger ke model yang lebih kompleks.

Sebenarnya, menggunakan varians pengambilan sampel sebagai moderator hanyalah salah satu kemungkinan melakukan "uji regresi untuk asimetri plot corong". Lainnya menyarankan menggunakan invers dari varians sampling atau kesalahan standar (akar kuadrat dari varians sampling) atau invers mereka atau ukuran sampel total (atau beberapa fungsi daripadanya) sebagai moderator. Tidak sepenuhnya jelas prediktor mana yang merupakan pilihan "terbaik" (dan ini dapat bergantung pada ukuran hasil apa yang Anda gunakan untuk meta-analisis Anda). Misalnya, untuk beberapa ukuran, persamaan yang kami gunakan untuk memperkirakan / memperkirakan varians sampling sebenarnya adalah fungsi dari hasil yang diamati, yang secara otomatis menciptakan hubungan antara keduanya bahkan tanpa adanya bias publikasi (atau "bias studi kecil" atau apa pun yang kita ingin menyebutnya). Dalam hal itu,

Tetapi poin utamanya adalah: Ya, tes regresi dapat dengan mudah diterapkan ketika bekerja dengan model yang lebih kompleks dengan menambahkan moderator yang sesuai ke model.

Apakah plot corong bermanfaat atau tidak ketika ada struktur bertingkat / multivariat yang mendasari data masih dapat diperdebatkan. Sebagai contoh, set poin dapat mengelompok bersama-sama karena dependensi statistik (yang diperhitungkan ketika menggunakan model multilevel / multivariat yang sesuai), tetapi dalam plot corong, poin-poinnya hanyalah: sekelompok titik. Itu membuat interpretasi plot corong lebih sulit karena (kecuali jika Anda mengambil langkah-langkah tambahan dengan menggunakan warna atau simbol yang berbeda) Anda tidak dapat melihat dependensi yang melekat - bukan berarti kebanyakan orang (termasuk saya) pandai menafsirkan plot corong bahkan dalam cara yang paling sederhana kasus (ada penelitian empiris yang menunjukkan itu!).

Mengenai 2: Ya, banyak fungsi pemasangan model pos saat ini tidak bekerja dengan rma.mvobjek model. Saya hanya belum sempat mengimplementasikan ini dan beberapa dari ini sebenarnya membutuhkan pemikiran. Misalnya, leave1out()menghapus satu studi pada satu waktu - dalam konteks univariat, ini sama dengan menghapus setiap hasil yang diamati pada satu waktu, tetapi bagaimana dengan data bertingkat / multivariat? Juga hapus setiap hasil yang diamati sekaligus? Atau hapus set poin? Atau menyediakan opsi yang berbeda? Sehubungan dengan trim-and-fill (mengesampingkan pertanyaan tentang seberapa berguna metode ini sebenarnya): Memperluas metode untuk data bertingkat / multivariat akan layak untuk menulis seluruh makalah tentang.

Jadi, bagus jika Anda ingin melakukan analisis sensitivitas, tetapi pada saat ini, Anda harus melakukan ini secara manual. Analisis Leave-one-out mudah dilakukan dengan for-loop yang sederhana dan berpikir dengan hati-hati tentang apa itu "satu" (misalnya, setiap hasil yang diamati, setiap kelompok / studi). Anda dapat melakukan tes regresi dan mungkin biarkan trim-and-fill untuk saat ini. Residu terstandarisasi tersedia melalui rstandard(), sehingga Anda dapat memeriksa data untuk pencilan potensial. Anda bisa mendapatkan nilai topi melalui hatvalues()(hanya pengungkit di sepanjang diagonal atau seluruh matriks topi ) yang memberi Anda indikasi poin mana yang memiliki pengaruh kuat pada hasil. Ukuran lain yang sangat berguna dalam konteks ini adalah jarak Cook , yang dapat Anda peroleh melalui cooks.distance(), juga untuk rma.mvobjek.

Wolfgang
sumber
2
Wow! Terima kasih atas jawaban Anda yang cermat dan menyeluruh. Saya akan berusaha mencari cara untuk menggunakan kode for-loop, seperti yang Anda sarankan.
chabeck
1
Senang mendengar Anda menemukan ini berguna. Berbagai fungsi pemasangan model termasuk rma.mv()memiliki subsetargumen yang dapat Anda gunakan dengan mudah bersama dengan for-loop untuk menjatuhkan (set) hasil yang diamati.
Wolfgang
5
Wolfgang, produk saran Anda dapat diamati di sini: aobpla.oxfordjournals.org/content/7/… Terima kasih lagi!
chabeck