Metaanalyse in Python

Einführung

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.

Beispieldaten

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.

Festeffektmodell

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

Modell mit variablem Effekt

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

Andere

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]

Verweise

["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

Metaanalyse in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
SendKeys in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python
Lesen Sie DXF mit Python
Täglicher AtCoder # 53 in Python
Tastenanschlag in Python
Verwenden Sie config.ini mit Python
Täglicher AtCoder # 33 in Python
Löse ABC168D in Python
Logistische Verteilung in Python
Täglicher AtCoder # 7 in Python