Frage:
Interpretation des zweiseitigen Welch T-Tests mit zwei Stichproben
Mathias Bynens
2011-01-03 19:17:50 UTC
view on stackexchange narkive permalink

Ich schreibe Code (JavaScript) , um die Benchmark-Ergebnisse zu vergleichen. Ich verwende den Welch T-Test, da die Varianz und / oder Stichprobengröße zwischen den Benchmarks höchstwahrscheinlich unterschiedlich ist. Der kritische Wert wird mit 95% iger Sicherheit aus einer T-Verteilungstabelle gezogen. (zweiseitig) 2> ein signifikantes Ergebnis. Ich bin nicht sicher, ob der kritische Wert durch 2 geteilt werden soll oder nicht. Hilfe beim Aufräumen wird geschätzt. Außerdem sollte ich die Freiheitsgrade df runden, um den kritischen Wert nachzuschlagen, oder Math.ceil oder Math.floor besser geeignet sein?

  / ** * Legt fest, ob der Hertz des Benchmarks höher als der eines anderen ist. * @member Benchmark * @param {Object} other Der zu vergleichende Benchmark. * @returns {Number} Gibt "1" zurück, wenn höher, "-1" wenn niedriger und "0", wenn unbestimmt. * / function compare (other) {// Welch-T-Test verwenden // http://frank.mtsu.edu/~dkfuller/notes302/welcht.pdf // http://www.public.iastate.edu/~ alicia / stat328 / Regression% 20inference-part2.pdf var a = this.stats, b = other.stats, pow = Math.pow, bitA = a.variance / a.size, bitB = b.variance / b.size, df = pow (BitA + BitB, 2) / ((pow (BitA, 2) / a.size - 1) + (pow (BitB, 2) / b.size - 1)), t = (a.mean - b.mean) / Math.sqrt (BitA + BitB), c = getCriticalValue (Math.round (df)); // prüfe ob die t-Statistik signifikant ist return Math.abs (t) > c / 2? (t > 0? 1: -1): 0; }  

Update: Vielen Dank für alle bisherigen Antworten! Mein Kollege hat hier weitere Informationen gepostet, falls dies den Rat beeinflusst.

Vier antworten:
#1
+9
whuber
2011-01-03 21:45:13 UTC
view on stackexchange narkive permalink

(1a) Sie benötigen den Welch-Test nicht, um mit unterschiedlichen Stichprobengrößen fertig zu werden. Dies wird vom Student-T-Test automatisch erledigt.

(1b) Wenn Sie der Meinung sind, dass die Abweichungen in den beiden Populationen sehr unterschiedlich sind, gehen Sie von a priori , dass sich die beiden Populationen unterscheiden. Es ist vielleicht kein Standortunterschied - das bewertet ein T-Test -, aber es ist trotzdem ein wichtiger Unterschied. Überschreiben Sie es nicht, indem Sie einen Test durchführen, der diesen Unterschied ignoriert! (Varianzunterschiede treten häufig auf, wenn eine Probe mit einigen extremen Ergebnissen "kontaminiert" ist, wobei gleichzeitig der Ort verschoben und die Varianz erhöht wird. Aufgrund der großen Varianz kann es schwierig sein, die Ortsverschiebung zu erkennen ( egal wie) großartig ist es ) in einer kleinen bis mittelgroßen Stichprobe, da die Zunahme der Varianz in etwa proportional zur quadratischen Ortsänderung ist. Diese Form der "Kontamination" tritt beispielsweise auf, wenn Nur ein Bruchteil einer Versuchsgruppe spricht auf die Behandlung an.) Daher sollten Sie einen geeigneteren Test in Betracht ziehen, z. B. einen Schlupftest. Noch besser wäre ein weniger automatisierter grafischer Ansatz mit explorativen Datenanalysetechniken.

(2) Verwenden Sie bei einer Änderung des Durchschnitts einen zweiseitigen Test in beide Richtungen (größer oder kleiner) ist möglich. Andernfalls verwenden Sie einen einseitigen Test, wenn Sie nur auf eine Zunahme oder Abnahme des Durchschnitts testen.

(3) Die Rundung wäre falsch und sollte nicht erforderlich sein do it: Den meisten Algorithmen zur Berechnung von t-Verteilungen ist es egal, ob der DoF eine Ganzzahl ist. Das Runden ist keine große Sache, aber wenn Sie in erster Linie einen T-Test verwenden, sind Sie besorgt über kleine Stichprobengrößen (andernfalls funktioniert der einfachere Z-Test einwandfrei) und Selbst kleine Änderungen des DoF können ein wenig von Bedeutung sein.

Vielen Dank für all Ihre wunderbaren Ratschläge. es wird sehr geschätzt! Mein Kollege [hat hier weitere Informationen gepostet] (http://stats.stackexchange.com/questions/5913/interpreting-two-sided-two-sample-welch-t-test/5961#5961); Hat dies Auswirkungen auf irgendetwas?
#2
+6
mpiktas
2011-01-03 19:56:59 UTC
view on stackexchange narkive permalink

Teilen durch 2 gilt für p-Werte. Wenn Sie kritische Werte vergleichen, ist die Division durch 2 nicht erforderlich. Die Funktion getCriticalValue sollte die Quantilfunktion der Student-t-Verteilung sein. Daher sollten 2 Werte angenommen werden, die Wahrscheinlichkeit und die Freiheitsgrade. Wenn Sie eine zweiseitige Hypothese wünschen, wie in Ihrem Code angegeben, benötigen Sie ein Quantil von 0,975.

Für die Rundung, da die Freiheitsgrade positiv sind Math.round sieht gut aus.

+1 Um die seltsame Behandlung kritischer Werte im OP-Code zu bemerken!
Vielen Dank für all Ihre wunderbaren Ratschläge. es wird sehr geschätzt! Mein Kollege [hat hier weitere Informationen gepostet] (http://stats.stackexchange.com/questions/5913/interpreting-two-sided-two-sample-welch-t-test/5961#5961); Hat dies Auswirkungen auf irgendetwas?
@Mathias Bynens, wenn Sie wirklich die Freiheitsgrade runden wollen, besteht die einzige Lösung darin, die Division um 2 zu verringern.
#3
+6
onestop
2011-01-03 20:16:02 UTC
view on stackexchange narkive permalink

Es ist nicht unbedingt erforderlich, die Freiheitsgrade auf eine ganze Zahl zu runden. Die t -Verteilung des Schülers kann für alle positiven reellen Werte dieses Parameters definiert werden. Wenn Sie ihn auf eine positive Ganzzahl beschränken, kann der kritische Wert möglicherweise einfacher berechnet werden, je nachdem, wie Sie dies tun. Bei vernünftigen Stichprobengrößen macht dies in der Praxis kaum einen Unterschied.

Vielen Dank für all Ihre wunderbaren Ratschläge. es wird sehr geschätzt! Mein Kollege [hat hier weitere Informationen gepostet] (http://stats.stackexchange.com/questions/5913/interpreting-two-sided-two-sample-welch-t-test/5961#5961); Hat dies Auswirkungen auf irgendetwas?
Eine Stichprobengröße von 5 ist etwas niedrig. Können Sie das Minimum etwas erhöhen, sagen wir auf 10 oder 20? Es geht nicht nur darum, die d.f. Der Test reagiert empfindlicher auf Nichtnormalität bei kleinen Stichproben, und genau genommen sollte Ihre Stichprobenregel, bis die Fehlerquote unter einem bestimmten Schwellenwert liegt, die kritischen Werte des Tests beeinflussen.
@onestop: Könnten Sie bitte etwas näher erläutern? Insbesondere der Teil über die Beeinflussung der kritischen Werte des Tests. Eine größere Stichprobe ändert die Freiheitsgrade, da "df = Stichprobengröße - 1", aber darüber hinaus verstehe ich leider nicht wirklich, was Sie meinen. Danke im Voraus!
Die Eigenschaft, die die t-Verteilung von der Normalverteilung unterscheidet, besteht darin, dass die Stichprobengröße berücksichtigt wird. Siehe zum Beispiel http://www.math.unb.ca/~knight/utility/t-table.htm - beachten Sie, dass die kritischen Werte bei kleinen Freiheitsgraden wesentlich größer sind.
Oh, das ist eigentlich nicht relevant. Die Frage betraf Ihre Stichprobenregel, die sich auf den Test auswirkt. Das Problem dabei ist, dass die T-Statistiken, mit denen Sie vergleichen, unter der Annahme erstellt werden, dass aufeinanderfolgende Messungen unabhängig sind, Ihre jedoch nicht. Da Sie anhalten, nachdem eine Marge ausreichend niedrig ist, stoppen Sie alle Fälle, in denen die Marge unter den Schwellenwert fällt, aber bald wieder ansteigen würde, und übertreiben daher die Bedeutungen leicht.
@sesqu Einer der Gründe für das Stoppen nach Erreichen von 1% ist, dass Tests nicht für immer oder alle 8 Sekunden lang ausgeführt werden. Wäre es besser, nach einiger Zeit (z. B. 8 Sekunden) ohne prozentuale Schwelle anzuhalten oder die Schwelle auf unter 1% zu senken? Wir verwenden 1% auch als Grenzwert für Kalibrierungen, die verwendet werden, um den Kosten eines Testaufwands entgegenzuwirken. Eine Reduzierung auf 1% kann einige Zeit in Anspruch nehmen und mehr als 750 Probengrößen erfordern. Gibt es eine Möglichkeit, den Cutoff zu berücksichtigen, um negativen Auswirkungen auf die Signifikanz entgegenzuwirken?
Ja. Der einfache Weg wäre, jedes Mal bei 8 Sekunden anzuhalten. Um den Effekten entgegenzuwirken, würden Sie jedes p durch 0,95 ^ i-1 teilen, je nachdem, was Sie wirklich tun.
#4
+1
John-David Dalton
2011-01-04 19:04:57 UTC
view on stackexchange narkive permalink

Ich arbeite mit dem OP am Benchmarking-Projekt und möchte Ihnen allen dafür danken, dass Sie einige Dinge geklärt haben. Außerdem wollte ich ein bisschen mehr Informationen für den Fall bereitstellen, dass dies den Rat beeinflusst.

Die Stichprobengröße reicht von 5 bis 700+ (so viele wie in 8 Sekunden oder bis die Fehlergrenze erreicht ist oder unter 1%. Die kritischen Werte werden der Einfachheit halber aus einem Objekt gezogen (da andere Berechnungen die Freiheitsgrade als Stichprobengröße minus 1 bestimmen) .

  / ** * T-Distribution zweiseitige kritische Werte für 95% Vertrauen * http://www.itl.nist.gov/div898/handbook/eda/section3/eda3672.htm * / T_DISTRIBUTION = {'1': 12.706, '2': 4.303, '3': 3.182, '4': 2.776 / *, ... * /}  

Update

I. überprüft und der Unterschied zwischen den Abweichungen scheint ziemlich hoch zu sein.

  Abweichungen: 4,474,400,141.236059 3,032,977,106,8208385 226,854,226,665,14194 24,612,581.169126578  

Wir testen die Operationen pro Sekunde verschiedener Codefragmente (einige sind langsamer, niedrigere Operationen / Sek., andere schneller, höhere Operationen / Sek.) .

Wir haben auch einfach die Überlappung zwischen den Mittelwerten + - der Fehlerquote jedes einzelnen verglichen, aber es wurde vorgeschlagen, dass ein t-Test besser ist, weil er Ergebnisse mit statistischer Signifikanz finden kann.

Bitte löschen Sie die T-Tabelle: Es ist sinnlos. Es würde genügen zu sagen, dass Sie das obere 97,5-Perzentil für Ihre kritische Region verwenden. Von größerer Bedeutung ist eine Beschreibung der Funktionsweise des Tests und einige Beispiele für die Verteilung der Timings. Diese Abweichungen unterscheiden sich so stark, dass es keinen Sinn macht, die Gleichheit der Mittel zu prüfen.
@whuber, Die t-Tabelle wird verwendet, um die Fehlerquote jedes Benchmark-Ergebnisses zu berechnen (jeder Benchmark hat eine Stichprobe von Läufen). Aufgrund eines solchen Unterschieds in den Abweichungen würde ein einfacher Vergleich des Mittelwerts + der Fehlergrenze ausreichen? Sie können eine Stichprobe sehen test http://jsperf.com/benchmark-js-test-page.Testing erfolgt durch Bestimmen der Mindestzeit für die Durchführung eines Tests (in den meisten Fällen beträgt die kleinste Einheit 1 ms, sodass die für eine prozentuale Unsicherheit von 1% erforderliche Zeit 1 beträgt 50 ms ((1/2) / 0,01), daher wird ein Test wiederholt ausgeführt, bis die verstrichene Zeit> = 50 ms ist, die Zeit getaktet ist und die Ausführungen pro Sekunde berechnet werden
@John-David Sie können uns auch eine Multiplikationstabelle zeigen, um die Multiplikation zu veranschaulichen, die Sie durchführen :-). Die Beispieltestseite ist gut gemacht. Sie können es leicht verbessern, indem Sie angeben, auf wie vielen Iterationen jedes Ergebnis basiert. Sie können auch offensichtliche Ausreißer herausfiltern. Was ich immer noch unsicher bin, ist, was Sie mit was vergleichen! Wenn Sie meine Operationen / Sek. Mit denen anderer Personen für denselben Benchmark vergleichen, ist es wahrscheinlich am besten, * Logarithmen * des Timings für Ihren Vergleich zu verwenden. Das sollte die Varianzen ausgleichen und diese Komplikation beseitigen.
Ich glaube, sie vergleichen unterschiedliche Ansätze, nicht unterschiedliche Benutzer (obwohl nicht klar ist, ob Benutzer aggregiert sind). Dies könnte unterschiedliche Abweichungen rechtfertigen, da ein Algorithmus möglicherweise amortisiert oder ähnlich ist. Da die Laufzeiten jedoch möglicherweise nicht normal sind, würde ich einen kurzen Blick auf einige Daten empfehlen, um festzustellen, ob beispielsweise ein von unten versetzter und von oben zensierter Erlang-Verteilungsversatz besser passt als der Normal. Außerdem ist die Teststoppbedingung nicht unabhängig von den Daten, die idealerweise behandelt werden sollten.
@whuber Ich habe die Tabelle veröffentlicht, um zu zeigen, dass wir keine Formel verwenden, um den kritischen Wert aufzulösen, sondern eine einfache Tabelle, und um Ihnen / anderen die Werte in der Tabelle zu zeigen, falls Sie / andere Probleme mit ihnen haben oder etwas gefangen haben.
@whuber, "Sie können auch offensichtliche Ausreißer herausfiltern"> Berechnen Sie also in einem Durchgang die Standardabweichung (SD) und die Dinge, entfernen Sie Ausreißer, und berechnen Sie in einem zweiten Durchgang die SD und die Fehlerquote und die Dinge neu?
@whuber, "Ich bin mir immer noch nicht sicher, was Sie mit was vergleichen!" > Wenn Sie im Beispiel * (mit dem ich zuvor verlinkt habe) * auf "Tests ausführen" klicken und dieser beendet ist, wird jeder Test eingestuft ("Aufsteigend sortieren", "Absteigend sortieren", "Überhaupt nicht sortieren" und usw.) basierend auf ihren eigenen mittleren Ops / Sek. * (also werden verschiedene Tests miteinander verglichen) *. Die Browserscope-Ergebnisse zeigen die Ergebnisse anderer Browser, in denen Benutzer die Benchmarks ausgeführt haben.
@John-David Vielen Dank für die Erklärung. Ich war verwirrt, weil in der Überschrift des Browserscope "Ergebnisse" steht und es sich um die einzige tabellarische Zusammenfassung handelt. Ich verstehe jetzt, dass Sie (a) Standardfehler als Prozentsätze ausdrücken und (b) mittlere Geschwindigkeiten als Prozentsätze der max. Beide weisen darauf hin, dass Sie bereits an * relative * (* d. H. Proportionale) Vergleiche denken, was stark darauf hindeutet, die Analyse auf Protokollen zu basieren. (Ein Unterschied in den Logarithmen führt zu einem proportionalen Unterschied in den ursprünglichen Einheiten.)
@John-David In Bezug auf die T-Tabelle werden lediglich die Ergebnisse von 100 Berechnungen dargestellt, genau wie in einer Multiplikationstabelle 100 Multiplikationen dargestellt würden. Es spielt keine Rolle, wie Sie die t-Werte erhalten. Was zählt, ist * was sie darstellen. * Sie verwenden sie, um zweiseitige 95% -Konfidenzintervalle um den Mittelwert zu konstruieren. Das ist alles, was wir (oder irgendjemand anderes) wissen müssen.
@whuber, Vielen Dank für Ihren Rat. Würden Sie mich auf einige Ressourcen oder bestimmte Formeln zum Vergleichen von Logarithmen verweisen, die ich verwenden / kennenlernen kann?
@John-David Ich bin sicher, das Web ist voll von solchen Ressourcen. Unter http://www.quantdec.com/envstats/notes/class_03/gm_etc.htm habe ich einige statistisch relevante Materialien für Postgraduierte veröffentlicht, die möglicherweise alles über Logarithmen vergessen haben.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...