Simulation der Replikationskrise in der Psychologie

In den letzten zehn Jahren gab es einige umfangreiche Versuche, psychologische Studien zu replizieren, siehe z.B. hier. Die Ergebnisse lassen die Psychologie sehr schlecht aussehen. Ob man von Wissenschaft oder Pseudo-Wissenschaft sprechen sollte sei jedem selbst überlassen, aber Fakt ist:

  • Die Replikationsexperimente hatten eine sehr hohe Güte (Statistical Power > 90 %)
  • Nur einer von drei psychologischen Effekte konnte repliziert werden
  • Die replizierten Effektstärken waren nur halb so groß wie die Effektstärken der Originalstudien

Typische Gründe die für das Versagen angeführt werden:

  • Signifikanzniveau zu hoch (nicht korrekt)
  • Statistical Power zu klein (größtenteils nicht korrekt)
  • Publikationsbias (halb-halb)
  • Bias in individuellen Studien (korrekt)

Ohne jetzt zu sehr ins Technische gehen zu wollen: Die ersten beiden Punkte kann man als mögliche Gründe für die Replikationskrise recht leicht ausschließen. Auch bei dem gegebenen Signifikanzniveau (0,05) und typischer Statistical Power psychologischer Studien (um die 0,50) liegt die zu erwartete Replikationsrate > 80 %. Es ist immer schön durch höhere Probantenzahlen die Statistical Power einer Studie zu erhöhen, aber der Zuwachs an Replizierbarkeit ist minimal. Der Kern der Sache ist ohne Zweifel (ungewollter oder vorsätzlicher) Bias.

Es gibt Millionen Quellen für Bias (Verzerrungen) beim Durchführen von Experimenten:

  • Design schließt Störfaktoren nicht ordentlich aus
  • Probanten durchschauen das experimentelle Setup
  • Interaktionen zwischen Probanten und Versuchsleiter
  • Zufällige Stichprobe hat unglückliche Eigenheiten
  • Fehler bei der statistischen Auswertung (z.B. Fischen nach Effekten)
  • Betrug bei der statistischen Auswertung (z.B. P-Hacking)
  • Und und und …

Jede davon kann dazu führen, dass die ermittelte Effektstärke weit von der wahren Effektstärke entfernt liegt und das unabhängig von normalen statistischen Schwankungen, welche auch bei exzellentem Design & Auswertung zu erwarten sind. Bias als Zahl kann man also definieren als die Differenz von ermittelter und wahrer Effektstärke, wenn man das gegebene Experiment mit seinen Eigenheiten in Design & Auswertung in exakter Weise unendlich Mal wiederholt.

In diesem Output einer numerischen Simulation sieht man, wie die Replikationsrate sich in Abhängigkeit von Probantenzahl der Original-Studie und Bias der Original-Studie ändert. Für die wahre Effektstärke habe ich d = 0,5 gewählt, für den Umfang der Replikationsstudie n = 200 Probanten.

Der Output zeigt eine Sache, die ich schon vorher erwähnt habe: Ab einer halbwegs vernünftigen Probantenzahl (n > 80), und somit einer sub-optimalen aber akzeptablen Statistical Power, ergeben sich ohne Bias stets hohe Replikationsraten. Replikationsraten, wie sie in den letzten zehn Jahren für die Psychologie ermittelt wurden, würde man erst bei n < 20 oder gar n < 10 erwarten.

Bei einem Bias von um die 0,5 Standardabweichungen kommt man zu Replikationsraten im Bereich 30-40 %, also dorthin, wo sich die moderne Psychologie befindet. Und man sieht: Solange der Bias besteht, würde auch eine Erhöhung der Probantenzahl keine Verbesserung bringen. Interessanterweise führen höhere Probantenzahlen dann sogar zu geringeren (!) Replikationsraten, was im Nachhinein aber Sinn macht. Je umfangreicher die verzerrte Originalstudie, desto eher macht sie eine Punktlandung bei der verzerrten Effektstärke. Und desto schwieriger wird es für unverzerrte Replikationsstudien, diesen Effekt zu replizieren.

Vor allem interessant ist, wie Perfekt sich das Bild fügt, wenn man bei einer wahren Effektstärke d = 0,5 einen Bias von b = 0,5 annimmt. Der wahre Effekt ist dann d = 0,5, der gefundene Effekt d = 1,0. Replikationen würden den Effekt also nur mit einer halb so großen Effektstärke replizieren und Replikationsraten lägen gleichzeitig bei knapp 1 zu 3. Also exakt die Kombination, die das Reproducibility Project für die Psychologie ermittelt hat. Ein Bias in Größe der wahren Effektstärke erklärt die Replikationskrise ohne Bedarf zusätzlicher Annahmen mit beeindruckender Genauigkeit. Wenn man eine Sache über die Replikationskrise wissen sollte, dann das.

Ein paar technische Anmerkungen:

  • Dieses Prinzip habe ich für die numerische Simulationen genutzt: Effektstärken von kontrollierten Experimenten (Behandlungs- versus Kontrollgruppe) mit n Probanten, die Hälfte in jeder Gruppe, verteilen sich gemäß der Normalverteilung mit dem Mittelwert d + b, wahren Effektstärke plus Bias, und einer Standardabweichung 2 geteilt durch Wurzel n. Das folgt direkt aus der Normalverteilung der Effektstärken in den einzelnen Gruppen mit Mittelwert d + b für die Behandlungsgruppe und 0 für die Kontrollgruppe mit jeweils beliebigen Standardabweichungen. Es spielt also keine Rolle, ob man jede Gruppe einzeln simuliert und dann die Effektstärke berechnet oder gleich die Effektstärke der erstgenannten Normalverteilung entnimmt. Dieses Prinzip vereinfacht die Simulation enorm. Beweisen lässt es sich mit diesem Theorem.
  • Für die Replikation natürlich dasselbe Prinzip, diesmal jedoch über eine Normalverteilung mit Mittelwert d (kein Bias) und Standardabweichung 2 durch Wurzel n für Replikationsstudie.
  • Eine Replikation wurde als erfolgreich gewertet sofern die absolute Differenz der Effektstärken kleiner als 0.3 Standardabweichungen war. Warum nicht das 95 % KI einer der beiden Studien verwenden? So hatte ich es zuerst, aber das ergibt eine unangenehme Situation. Wachsende n lassen das 95 % KI enorm schrumpfen, so dass erfolgreiche Replikationen unmöglich werden. Bei sehr hohen n findet die eine Studie dann 0,50, die andere 0,55, es wird aber trotzdem nicht als erfolgreiche Replikation gewertet da das 95 % KI so klein ist. Jeder mitdenkende Betrachter würde das hingegen als erfolgreiche Replikation werten. Deshalb der Umstieg auf absolute Differenz.

Der Code zum selber experimentieren (Python 3.9):

import math
import numpy as np
from numpy import random
import matplotlib.pyplot as plt

e_replication = 0
n_replication = 200

d = 0.5
d_confirm = 0.3

cycles_2D = 500

X = []
Y = []
Z = []

e = 0

while e < 0.5:

    n = 10

    while n < 180:

        i = 0
        s = 0

        while i < cycles_2D:

            se_original = 2/math.sqrt(n)
            se_replication = 2/math.sqrt(n_replication)

            d_original = random.normal(d+e,se_original)
            d_replication = random.normal(d+e_replication,se_replication)

            diff = d_original-d_replication

            if abs(diff) < d_confirm:
                s += 1
            
            i += 1

        s_rate = 100*s/cycles_2D

        X.append(n)
        Y.append(e)
        Z.append(s_rate)

        n = n + 2

    e = e + 0.01

print()
print()
print(u'\u2022'' Original Study Sample Size and Bias:')
print()

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm

fig = plt.figure()
ax = Axes3D(fig)
surf = ax.plot_trisurf(X, Y, Z, cmap=cm.jet, linewidth=0.1)
fig.colorbar(surf, shrink=0.5, aspect=5)
ax.set_xlim(180,0)
ax.set_ylim(0.5,0)
plt.xlabel("Original Study Sample Size")
plt.ylabel("Original Study Bias")
plt.show()

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s