scipy.stats.

combine_pvalues#

scipy.stats.combine_pvalues(pvalues, method='fisher', weights=None, *, axis=0, nan_policy='propagate', keepdims=False)[Quelle]#

Kombiniert p-Werte aus unabhängigen Tests, die sich auf dieselbe Hypothese beziehen.

Diese Methoden sind nur zur Kombination von p-Werten aus Hypothesentests basierend auf kontinuierlichen Verteilungen gedacht.

Jede Methode geht davon aus, dass unter der Nullhypothese die p-Werte unabhängig und gleichmäßig aus dem Intervall [0, 1] gezogen werden. Eine Teststatistik (unterschiedlich für jede Methode) wird berechnet und ein kombinierter p-Wert wird basierend auf der Verteilung dieser Teststatistik unter der Nullhypothese berechnet.

Parameter:
pvaluesarray_like

Array von p-Werten, die aus unabhängigen Tests basierend auf kontinuierlichen Verteilungen stammen sollen.

method{‘fisher’, ‘pearson’, ‘tippett’, ‘stouffer’, ‘mudholkar_george’}

Name der Methode, die zur Kombination von p-Werten verwendet werden soll.

Die verfügbaren Methoden sind (Details siehe Hinweise)

  • ‘fisher’: Fishers Methode (Fisher’s combined probability test)

  • ‘pearson’: Pearsons Methode

  • ‘mudholkar_george’: Mudholkar’s und George’s Methode

  • ‘tippett’: Tippetts Methode

  • ‘stouffer’: Stouffers Z-Score-Methode

weightsarray_like, optional

Optionales Array von Gewichten, das nur für Stouffers Z-Score-Methode verwendet wird. Von anderen Methoden ignoriert.

axisint oder None, Standard: 0

Wenn es sich um eine ganze Zahl handelt, ist dies die Achse des Eingabearrays, entlang der die Statistik berechnet wird. Die Statistik jedes Achsen-Slices (z. B. Zeile) der Eingabe erscheint dann in einem entsprechenden Element der Ausgabe. Wenn None, wird die Eingabe vor der Berechnung der Statistik geglättet.

nan_policy{‘propagate’, ‘omit’, ‘raise’}

Definiert, wie Eingabe-NaNs behandelt werden.

  • propagate: Wenn ein NaN in der Achsen-Slice (z. B. Zeile) vorhanden ist, entlang der die Statistik berechnet wird, wird der entsprechende Eintrag der Ausgabe NaN sein.

  • omit: NaNs werden bei der Berechnung weggelassen. Wenn im Achsen-Slice, entlang dem die Statistik berechnet wird, nicht genügend Daten verbleiben, wird der entsprechende Eintrag der Ausgabe NaN sein.

  • raise: Wenn ein NaN vorhanden ist, wird ein ValueError ausgelöst.

keepdimsbool, Standard: False

Wenn dies auf True gesetzt ist, bleiben die reduzierten Achsen im Ergebnis als Dimensionen mit der Größe eins erhalten. Mit dieser Option wird das Ergebnis korrekt gegen das Eingabearray gestreut (broadcasted).

Rückgabe:
resSignificanceResult

Ein Objekt, das Attribute enthält

statisticfloat

Die von der angegebenen Methode berechnete Statistik.

pvaluefloat

Der kombinierte p-Wert.

Hinweise

Wenn diese Funktion auf Tests mit diskreten Statistiken angewendet wird, wie z. B. Rangtests oder Kontingenztabellentests, liefert sie systematisch falsche Ergebnisse, z. B. Fishers Methode überschätzt systematisch den p-Wert [1]. Dieses Problem wird bei großen Stichprobengrößen weniger gravierend, wenn die diskreten Verteilungen sich kontinuierlichen annähern.

Die Unterschiede zwischen den Methoden lassen sich am besten anhand ihrer Statistiken veranschaulichen und zeigen, welche Aspekte einer Kombination von p-Werten bei der Berücksichtigung der Signifikanz betont werden [2]. Beispielsweise sind Methoden, die große p-Werte betonen, empfindlicher für starke falsche und wahre Negativen; umgekehrt sind Methoden, die sich auf kleine p-Werte konzentrieren, empfindlich für Positive.

  • Die Statistik von Fishers Methode (auch bekannt als Fisher’s combined probability test) [3] ist \(-2\sum_i \log(p_i)\), was (als Teststatistik) dem Produkt der einzelnen p-Werte entspricht: \(\prod_i p_i\). Unter der Nullhypothese folgt diese Statistik einer \(\chi^2\)-Verteilung. Diese Methode betont kleine p-Werte.

  • Pearsons Methode verwendet \(-2\sum_i\log(1-p_i)\), was \(\prod_i \frac{1}{1-p_i}\) entspricht [2]. Sie betont somit große p-Werte.

  • Mudholkar und George bilden einen Kompromiss zwischen Fishers und Pearsons Methode, indem sie ihre Statistiken mitteln [4]. Ihre Methode betont extreme p-Werte, sowohl nahe 1 als auch 0.

  • Stouffers Methode [5] verwendet Z-Scores und die Statistik: \(\sum_i \Phi^{-1} (p_i)\), wobei \(\Phi\) die CDF der Standardnormalverteilung ist. Der Vorteil dieser Methode ist, dass Gewichte einfach eingeführt werden können, was Stouffers Methode leistungsfähiger machen kann als Fishers Methode, wenn die p-Werte aus Studien unterschiedlicher Größe stammen [6] [7].

  • Tippetts Methode verwendet den kleinsten p-Wert als Statistik. (Beachten Sie, dass dieses Minimum nicht der kombinierte p-Wert ist.)

Fishers Methode kann erweitert werden, um p-Werte aus abhängigen Tests zu kombinieren [8]. Erweiterungen wie Browns Methode und Kost’s Methode sind derzeit nicht implementiert.

Hinzugefügt in Version 0.15.0.

Seit SciPy 1.9 werden np.matrix-Eingaben (für neuen Code nicht empfohlen) vor der Berechnung in np.ndarray konvertiert. In diesem Fall ist die Ausgabe eine Skalar- oder np.ndarray mit geeigneter Form anstelle eines 2D-np.matrix. Ebenso werden, während maskierte Elemente von Masked Arrays ignoriert werden, die Ausgabe eine Skalar- oder np.ndarray anstelle eines Masked Arrays mit mask=False sein.

combine_pvalues hat experimentelle Unterstützung für Python Array API Standard-kompatible Backends zusätzlich zu NumPy. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie eine Umgebungsvariable SCIPY_ARRAY_API=1 setzen und CuPy, PyTorch, JAX oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen aus Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.

Bibliothek

CPU

GPU

NumPy

n/a

CuPy

n/a

PyTorch

JAX

⚠️ kein JIT

⚠️ kein JIT

Dask

⚠️ berechnet Graph

n/a

Siehe Unterstützung für den Array API Standard für weitere Informationen.

Referenzen

[1]

Kincaid, W. M., “The Combination of Tests Based on Discrete Distributions.” Journal of the American Statistical Association 57, no. 297 (1962), 10-19.

[2] (1,2)

Heard, N. und Rubin-Delanchey, P. “Choosing between methods of combining p-values.” Biometrika 105.1 (2018): 239-246.

[4]

George, E. O., und G. S. Mudholkar. “On the convolution of logistic random variables.” Metrika 30.1 (1983): 1-13.

[6]

Whitlock, M. C. “Combining probability from independent tests: the weighted Z-method is superior to Fisher’s approach.” Journal of Evolutionary Biology 18, no. 5 (2005): 1368-1373.

[7]

Zaykin, Dmitri V. “Optimally weighted Z-test is a powerful method for combining probabilities in meta-analysis.” Journal of Evolutionary Biology 24, no. 8 (2011): 1836-1841.

Beispiele

Angenommen, wir möchten p-Werte aus vier unabhängigen Tests derselben Nullhypothese mit Fishers Methode (Standard) kombinieren.

>>> from scipy.stats import combine_pvalues
>>> pvalues = [0.1, 0.05, 0.02, 0.3]
>>> combine_pvalues(pvalues)
SignificanceResult(statistic=20.828626352604235, pvalue=0.007616871850449092)

Wenn die einzelnen p-Werte unterschiedliche Gewichte tragen, betrachten Sie Stouffers Methode.

>>> weights = [1, 2, 3, 4]
>>> res = combine_pvalues(pvalues, method='stouffer', weights=weights)
>>> res.pvalue
0.009578891494533616