Пакет Metafor: діагностика зміщення та чутливості


9

Я провожу багаторівневий метааналіз, який включає деякі статті з множинними результатами. Тому я використовую цю rma.mv()функцію. Приклад коду:

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

У мене є два питання:

  1. Я прочитав в попередньому запиті , що при використанні rma.mv(), ranktest()не є надійним тест воронки ділянки асиметрії. Однак, якщо вибіркова дисперсія була додана до початкової моделі в якості модератора, то ця модель була б схожа на тест Еггера:

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

    Чи правильний тлумачення цього керівництва цим кодом? Також, чи вогневі сюжети також (більш-менш) марні як інструмент із rma.mv()моделями?

  2. Ні, leave1out()ні trimfill()робота з rma.mv()оцінкою чутливості результатів моделі. Чи доступні зараз інші інструменти аналізу чутливості для rma.mv()моделей, які не передбачають майстерного розуміння R?

Відповіді:


8

Щодо 1: Так, додавання viв якості модератора - це справді логічний спосіб розширення тесту Еггера на більш складні моделі.

Власне, використання відхилень вибірки в якості модератора - лише одна можливість проведення "тесту регресії для асиметрії ділянки воронки". Інші пропонують використовувати зворотні відхилення вибірки або стандартні помилки (квадратний корінь відхилень вибірки) або їх обертання або загальний розмір вибірки (або деяку функцію від них) в якості модераторів. Не зовсім зрозуміло, який саме прогноктор є "найкращим" вибором (і це може залежати від того, який показник результатів ви використовуєте для свого мета-аналізу). Наприклад, для деяких заходів рівняння, яке ми використовуємо для апроксимації / оцінки відхилення вибірки, насправді є функцією спостережуваного результату, що автоматично створює взаємозв'язок між цими двома навіть за відсутності упередженості публікації (або "упередженості невеликого дослідження" або як би ми хотіли це назвати). В такому разі,

Але головний момент: Так, тест регресії можна легко застосувати при роботі зі складнішими моделями, додавши до моделі відповідний модератор.

Чи корисні ділянки воронки корисні чи ні, коли на основі даних є багаторівневі / багатоваріантні структури, які лежать в основі даних. Наприклад, набори точок можуть згуртовуватися разом із-за статистичних залежностей (які враховуються при використанні відповідної багаторівневої / багатоваріантної моделі), але у сюжетному сюжеті точки є саме такими: купа точок. Це ускладнює інтерпретацію сюжетних послідовностей, тому що (якщо ви не зробите додаткових кроків, використовуючи різні кольори або символи), ви не можете побачити ці властиві залежності - не те, що більшість людей (включаючи мене) є корисними для інтерпретації сюжетних ліній навіть у найпростіших випадки (є емпіричні дослідження, що демонструють це!).

Щодо 2: Так, низка функцій підгонки пост моделей наразі не працює з rma.mvмодельними об’єктами. Я просто не збирався реалізувати це, і дещо з цього насправді потребує певного роздуму. Наприклад, leave1out()видаляється одне дослідження за один раз - у універсальному контексті це еквівалентно видаленню кожного спостережуваного результату за раз, а як щодо даних про багаторівневі / багатоваріантні дані? Також видалити кожен спостережуваний результат за раз? Або видалити набори точок? Або зробити різні варіанти доступними? Що стосується обрізки та заливки (залишаючи осторонь питання про те, наскільки корисний цей метод насправді): Розширення методу на багаторівневі / багатоваріантні дані варто було б написати цілий документ.

Отже, чудово, що ви хочете зробити аналіз чутливості, але на даний момент вам доведеться робити це вручну. Аналізи, що випускаються один раз, легко проводяться за допомогою простого циклу та ретельно продумуючи, що таке "один" (наприклад, кожен спостережуваний результат, кожен кластер / дослідження). Ви можете зробити тест регресії і, можливо, залишити обробку та заливку поки що. Стандартизовані залишки доступні через rstandard(), так що ви можете вивчити дані для потенційних людей, що не працюють. Значення капелюшків можна отримати за допомогою hatvalues()(лише важелів по діагоналі або всієї матриці капелюхів ), що дає змогу вказати, які точки мають сильний вплив на результати. Інший дуже корисна міра в цьому контексті є відстанню Кука , який ви можете отримати з допомогою cooks.distance(), а також для rma.mvоб'єктів.


2
Оце Так! Дякую за ваші продумані та ретельні відповіді. Я спробую розібратися, як використовувати код for-loop, як ви пропонуєте.
chabeck

1
Радий почути, що Ви вважаєте це корисним. Різні моделі установки функцій , включаючи rma.mv()є subsetаргумент , що ви можете легко використовувати разом з петлею для впустити (набори) спостерігаються результати.
Вольфганг

5
Вольфганг, продукт ваших пропозицій можна переглянути тут: aobpla.oxfordjournals.org/content/7/… Дякую ще раз!
chabeck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.