ttest_ind_from_stats#
- scipy.stats.ttest_ind_from_stats(mean1, std1, nobs1, mean2, std2, nobs2, equal_var=True, alternative='two-sided')[Quelle]#
T-Test für Mittelwerte zweier unabhängiger Stichproben aus deskriptiven Statistiken.
Dies ist ein Test für die Nullhypothese, dass zwei unabhängige Stichproben identische Durchschnittswerte (Erwartungswerte) haben.
- Parameter:
- mean1array_like
Der/die Mittelwert(e) der Stichprobe 1.
- std1array_like
Die korrigierte Stichprobenstandardabweichung von Stichprobe 1 (d.h.
ddof=1).- nobs1array_like
Die Anzahl der Beobachtungen von Stichprobe 1.
- mean2array_like
Der/die Mittelwert(e) der Stichprobe 2.
- std2array_like
Die korrigierte Stichprobenstandardabweichung von Stichprobe 2 (d.h.
ddof=1).- nobs2array_like
Die Anzahl der Beobachtungen von Stichprobe 2.
- equal_varbool, optional
Wenn True (Standard), wird ein Standard-unabhängiger 2-Stichproben-Test durchgeführt, der gleiche Populationsvarianzen annimmt [1]. Wenn False, wird der t-Test nach Welch durchgeführt, der keine gleichen Populationsvarianzen annimmt [2].
- alternative{‘zweiseitig’, ‘kleiner’, ‘größer’}, optional
Definiert die alternative Hypothese. Die folgenden Optionen sind verfügbar (Standard ist ‚two-sided‘)
‘two-sided’: die Mittelwerte der Verteilungen sind ungleich.
‘less’: der Mittelwert der ersten Verteilung ist kleiner als der Mittelwert der zweiten Verteilung.
‘greater’: der Mittelwert der ersten Verteilung ist größer als der Mittelwert der zweiten Verteilung.
Hinzugefügt in Version 1.6.0.
- Rückgabe:
- statisticfloat oder array
Die berechneten t-Statistiken.
- pvaluefloat oder array
Der zweiseitige p-Wert.
Siehe auch
Hinweise
Die Statistik wird als
(mean1 - mean2)/seberechnet, wobeiseder Standardfehler ist. Daher wird die Statistik positiv sein, wenn mean1 größer als mean2 ist, und negativ, wenn mean1 kleiner als mean2 ist.Diese Methode prüft nicht, ob einige der Elemente von std1 oder std2 negativ sind. Wenn bei einem Aufruf dieser Methode negative Elemente der Parameter std1 oder std2 vorhanden sind, gibt die Methode dasselbe Ergebnis zurück, als wären stattdessen
numpy.abs(std1)undnumpy.abs(std2)übergeben worden; es werden keine Ausnahmen oder Warnungen ausgegeben.ttest_ind_from_statsunterstützt neben NumPy experimentell auch Backends, die mit dem Python Array API Standard kompatibel sind. Bitte erwägen Sie, diese Funktionen zu testen, indem Sie die UmgebungsvariableSCIPY_ARRAY_API=1setzen und CuPy-, PyTorch-, JAX- oder Dask-Arrays als Array-Argumente bereitstellen. Die folgenden Kombinationen von Backend und Gerät (oder anderer Fähigkeit) werden unterstützt.Bibliothek
CPU
GPU
NumPy
✅
n/a
CuPy
n/a
✅
PyTorch
✅
⛔
JAX
✅
✅
Dask
✅
n/a
Siehe Unterstützung für den Array API Standard für weitere Informationen.
Referenzen
Beispiele
Angenommen, wir haben die zusammenfassenden Daten für zwei Stichproben, wie folgt (wobei die Stichprobenvarianz die korrigierte Stichprobenvarianz ist)
Sample Sample Size Mean Variance Sample 1 13 15.0 87.5 Sample 2 11 12.0 39.0
Wenden Sie den t-Test auf diese Daten an (unter der Annahme, dass die Populationsvarianzen gleich sind)
>>> import numpy as np >>> from scipy.stats import ttest_ind_from_stats >>> ttest_ind_from_stats(mean1=15.0, std1=np.sqrt(87.5), nobs1=13, ... mean2=12.0, std2=np.sqrt(39.0), nobs2=11) Ttest_indResult(statistic=0.9051358093310269, pvalue=0.3751996797581487)
Zum Vergleich sind hier die Daten, aus denen diese zusammenfassenden Statistiken stammen. Mit diesen Daten können wir das gleiche Ergebnis mit
scipy.stats.ttest_indberechnen>>> a = np.array([1, 3, 4, 6, 11, 13, 15, 19, 22, 24, 25, 26, 26]) >>> b = np.array([2, 4, 6, 9, 11, 13, 14, 15, 18, 19, 21]) >>> from scipy.stats import ttest_ind >>> ttest_ind(a, b) TtestResult(statistic=0.905135809331027, pvalue=0.3751996797581486, df=22.0)
Angenommen, wir haben stattdessen binäre Daten und möchten einen t-Test anwenden, um den Anteil von 1en in zwei unabhängigen Gruppen zu vergleichen
Number of Sample Sample Size ones Mean Variance Sample 1 150 30 0.2 0.161073 Sample 2 200 45 0.225 0.175251
Der Stichprobenmittelwert \(\hat{p}\) ist der Anteil von Einsen in der Stichprobe, und die Varianz für eine binäre Beobachtung wird durch \(\hat{p}(1-\hat{p})\) geschätzt.
>>> ttest_ind_from_stats(mean1=0.2, std1=np.sqrt(0.161073), nobs1=150, ... mean2=0.225, std2=np.sqrt(0.175251), nobs2=200) Ttest_indResult(statistic=-0.5627187905196761, pvalue=0.5739887114209541)
Zum Vergleich könnten wir die t-Statistik und den p-Wert mit Arrays von 0en und 1en und scipy.stat.ttest_ind berechnen, wie oben.
>>> group1 = np.array([1]*30 + [0]*(150-30)) >>> group2 = np.array([1]*45 + [0]*(200-45)) >>> ttest_ind(group1, group2) TtestResult(statistic=-0.5627179589855622, pvalue=0.573989277115258, df=348.0)