Python hat auch ein Paket namens PythonMeta, das eine Metaanalyse durchführt. Zum Zweck des Studiums werde ich diesmal eine Metaanalyse mit Pandas implementieren. Ich tat.
Es gibt zwei Haupttypen von Metaanalysemodellen: ** Modell mit festem Effekt ** und ** Modell mit zufälligen Effekten **. Implementieren wir also jedes Modell.
Dieses Mal werde ich mit den folgenden Daten experimentieren.
import pandas as pd
import numpy as np
data = pd.DataFrame({
"g": [0.12, 0.23, 0.34, 0.45, 0.42, 0.39, 0.49, 0.65, 0.76, 0.87],
"V": [0.01, 0.04, 0.03, 0.02, 0.01, 0.02, 0.03, 0.04, 0.02, 0.01]
})
Hier ist g Hedges'g (= Effektmenge) und V ist die Streuung der Effektmenge.
Im Modell mit festem Effekt ist das Gewicht des Gegenstands einfach umgekehrt zur Verteilung der Effektmenge. Daher wird der zu berechnende durchschnittliche Effektbetrag als der Effektbetrag jedes gewichteten und durch das Gesamtgewicht dividierten Gegenstands berechnet. Die Berechnungsformel lautet wie folgt. Auch in Python kann es in 3 Zeilen geschrieben werden.
#Festeffektmodell
data['W'] = 1 / data.V
data['Wg'] = data['g'] * data['W']
result = data['Wg'].sum() / data['W'].sum()
result
>> 0.4776
Der Gewichtsberechnungsteil ist im variablen Effektmodell etwas kompliziert. Um die Variation der Effektmenge zwischen den Studien zu berücksichtigen, wird nach der Mittelung der Effektmenge die Abweichung jedes Elements in Bezug auf diese in die Gewichtsberechnung einbezogen. Die Berechnungsformel lautet wie folgt.
g_hat = data.g.mean()
Q = (data.W * (data.g - g_hat)**2).sum()
data['W2'] = data.W ** 2
C = data.W.sum() - (data.W2.sum()/data.W.sum())
d = len(data) - 1
#Streuung zwischen Studien
if (Q-d) > 0:
V_between = (Q - d) / C
else:
V_between = 0
data['V_str'] = data.V + V_between
data['W_str'] = 1 / data.V_str
result = (data.g * data.W_str).sum() / data.W_str.sum()
result
Sowohl Modelle mit festem als auch mit variablem Effekt können aus der Summe der berechneten Gewichte ein 95% -Konfidenzintervall berechnen.
std_err = np.sqrt(1/data.W_str.sum())
lwr = result - 1.96 * std_err
upr = result + 1.96 * std_err
[lwr, upr]
["Einführung in die Metaanalyse zur systematischen Überprüfung von Psychologie / Bildungsforschung", herausgegeben von Takeshi Yamada und Toshiya Inoue](https://www.amazon.co.jp/%E3%83%A1%E3%82%BF% E5% 88% 86% E6% 9E% 90% E5% 85% A5% E9% 96% 80-% E5% BF% 83% E7% 90% 86% E3% 83% BB% E6% 95% 99% E8 % 82% B2% E7% A0% 94% E7% A9% B6% E3% 81% AE% E7% B3% BB% E7% B5% B1% E7% 9A% 84% E3% 83% AC% E3% 83 % 93% E3% 83% A5% E3% 83% BC% E3% 81% AE% E3% 81% 9F% E3% 82% 81% E3% 81% AB-% E5% B1% B1% E7% 94% B0-% E5% 89% 9B% E5% 8F% B2 / dp / 4130420720)
Recommended Posts