Metafor-Paket: Bias- und Sensitivitätsdiagnose

9

Ich führe eine mehrstufige Metaanalyse durch, die einige Artikel mit mehreren Ergebnissen enthält. Deshalb benutze ich die rma.mv()Funktion. Beispielcode:

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

Ich habe zwei Fragen:

  1. Ich las in einer früheren Abfrage , dass bei der Verwendung rma.mv(), ranktest()ist kein zuverlässiger Test des Funnel - Plot Asymmetrie. Wenn dem ursprünglichen Modell jedoch als Moderator eine Stichprobenvarianz hinzugefügt würde, ähnelt dieses Modell dem Egger-Test:

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

    Ist dieser Code eine korrekte Interpretation dieser Anleitung? Sind Trichterdiagramme auch (mehr oder weniger) als Werkzeug für rma.mv()Modelle nutzlos ?

  2. Weder leave1out()noch trimfill()arbeiten rma.mv(), um die Sensitivität der Modellergebnisse zu bewerten. Gibt es derzeit andere Tools zur Sensitivitätsanalyse für rma.mv()Modelle, die kein meisterhaftes Verständnis von R beinhalten?

Chabeck
quelle

Antworten:

8

Zu 1: Ja, das Hinzufügen vials Moderator ist in der Tat der logische Weg, um Eggers Test auf komplexere Modelle auszudehnen.

Tatsächlich ist die Verwendung der Stichprobenvarianzen als Moderator nur eine Möglichkeit, den "Regressionstest für Trichterdiagrammasymmetrie" durchzuführen. Andere haben vorgeschlagen, die Umkehrung der Stichprobenvarianzen oder die Standardfehler (Quadratwurzel der Stichprobenabweichungen) oder ihre Umkehrungen oder die Gesamtstichprobengröße (oder eine Funktion davon) als Moderatoren zu verwenden. Es ist nicht ganz klar, welcher Prädiktor die "beste" Wahl ist (und dies kann davon abhängen, welches Ergebnismaß Sie für Ihre Metaanalyse verwenden). Beispielsweise ist für einige Kennzahlen die Gleichung, die wir zur Annäherung / Schätzung der Stichprobenvarianz verwenden, tatsächlich eine Funktion des beobachteten Ergebnisses, wodurch automatisch eine Beziehung zwischen beiden erstellt wird, selbst wenn keine Publikationsverzerrung (oder "Verzerrung bei kleinen Studien") vorliegt. oder wie auch immer wir es nennen wollen). In diesem Fall,

Der wichtigste Punkt ist jedoch: Ja, der Regressionstest kann bei der Arbeit mit komplexeren Modellen einfach angewendet werden, indem dem Modell ein geeigneter Moderator hinzugefügt wird.

Ob Trichterdiagramme nützlich sind oder nicht, wenn den Daten mehrstufige / multivariate Strukturen zugrunde liegen, ist umstritten. Beispielsweise können Punktmengen aufgrund statistischer Abhängigkeiten (die bei Verwendung eines geeigneten mehrstufigen / multivariaten Modells berücksichtigt werden) zu Clustern zusammengefasst werden. Im Trichterdiagramm sind die Punkte jedoch genau das: eine Reihe von Punkten. Dies erschwert die Interpretation von Trichterdiagrammen, da Sie (es sei denn, Sie führen zusätzliche Schritte durch, indem Sie verschiedene Farben oder Symbole verwenden) diese inhärenten Abhängigkeiten nicht erkennen können - nicht, dass die meisten Personen (ich selbst eingeschlossen) Trichterdiagramme selbst auf einfachste Weise gut interpretieren können Fälle (es gibt empirische Untersuchungen, die dies belegen!).

Zu 2: Ja, eine Reihe von Post-Modell-Anpassungsfunktionen funktionieren derzeit nicht mit rma.mvModellobjekten. Ich bin einfach nicht dazu gekommen, dies umzusetzen, und einige davon erfordern tatsächlich einige Überlegungen. Entfernt beispielsweise jeweils leave1out()eine Studie - im univariaten Kontext entspricht dies dem Entfernen jedes beobachteten Ergebnisses zu einem Zeitpunkt, aber was ist mit mehrstufigen / multivariaten Daten? Entfernen Sie auch jedes beobachtete Ergebnis zu einem Zeitpunkt? Oder Punktmengen entfernen? Oder verschiedene Optionen zur Verfügung stellen? In Bezug auf Trim-and-Fill (abgesehen von der Frage, wie nützlich diese Methode wirklich ist): Es lohnt sich, eine ganze Arbeit darüber zu schreiben, wenn die Methode auf mehrstufige / multivariate Daten ausgedehnt wird.

Es ist also großartig, dass Sie Sensitivitätsanalysen durchführen möchten, aber ab sofort müssen Sie einige davon manuell durchführen. Ausgelassene Analysen lassen sich leicht mit einer einfachen for-Schleife durchführen und sorgfältig darüber nachdenken, was "eins" ist (z. B. jedes beobachtete Ergebnis, jeder Cluster / jede Studie). Sie können den Regressionstest durchführen und vielleicht vorerst Trim-and-Fill lassen. Standardisierte Residuen sind über verfügbar rstandard(), sodass Sie die Daten auf potenzielle Ausreißer untersuchen können. Sie können die Hutwerte über hatvalues()(nur die Hebel entlang der Diagonale oder der gesamten Hutmatrix) abrufen, wodurch Sie einen Hinweis darauf erhalten, welche Punkte einen starken Einfluss auf die Ergebnisse haben. Ein weiteres wirklich nützliches Maß in diesem Zusammenhang ist die Entfernung von Cook , über die Sie cooks.distance()auch für rma.mvObjekte erhalten können.

Wolfgang
quelle
2
Beeindruckend! Vielen Dank für Ihre nachdenklichen und gründlichen Antworten. Ich werde versuchen, herauszufinden, wie der for-loop-Code verwendet wird, wie Sie vorschlagen.
Chabeck
1
Schön zu hören, dass Sie dies nützlich fanden. Die verschiedenen Modellanpassungsfunktionen enthalten rma.mv()ein subsetArgument, das Sie leicht zusammen mit einer for-Schleife verwenden können, um (Sätze von) beobachteten Ergebnissen zu löschen.
Wolfgang
4
Wolfgang, das Produkt Ihrer Vorschläge kann hier beobachtet werden: aobpla.oxfordjournals.org/content/7/… Nochmals vielen Dank!
Chabeck