Ich habe einen Beispieldatensatz mit 31 Werten. Ich habe einen zweiseitigen t-Test mit R durchgeführt, um zu testen, ob der wahre Mittelwert gleich 10 ist:
t.test(x=data, mu=10, conf.level=0.95)
Ausgabe:
t = 11.244, df = 30, p-value = 2.786e-12
alternative hypothesis: true mean is not equal to 10
95 percent confidence interval:
19.18980 23.26907
sample estimates:
mean of x
21.22944
Jetzt versuche ich dasselbe manuell zu machen:
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(lengths-1))
Der mit dieser Methode berechnete t-Wert entspricht der Ausgabe der Funktion t-test R. Der p-Wert ergibt sich jedoch zu 3.025803e-12.
Irgendwelche Ideen, was ich falsch mache?
Vielen Dank!
BEARBEITEN
Hier ist der vollständige R-Code, einschließlich meines Datensatzes:
# Raw dataset -- 32 observations
data = c(21.75, 18.0875, 18.75, 23.5, 14.125, 16.75, 11.125, 11.125, 14.875, 15.5, 20.875,
17.125, 19.075, 25.125, 27.75, 29.825, 17.825, 28.375, 22.625, 28.75, 27, 12.825,
26, 32.825, 25.375, 24.825, 25.825, 15.625, 26.825, 24.625, 26.625, 19.625)
# Student t-Test
t.test(x=data, mu=10, conf.level=0.95)
# Manually calculate p-value
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(data) - 1)
r
statistical-significance
t-test
p-value
herbps10
quelle
quelle
abs
.Ich habe dies als Kommentar gepostet, aber als ich beim Bearbeiten etwas mehr hinzufügen wollte, wurde es zu lang, sodass ich es hierher verschoben habe.
Edit : Deine Teststatistik und df sind korrekt. In der anderen Antwort wird das Problem mit der Berechnung der Schwanzfläche im Anruf für
pt()
und der Verdopplung für zwei Schwänze zur Kenntnis genommen, wodurch Ihre Differenz behoben wird. Trotzdem werde ich meine frühere Diskussion / Bemerkung verlassen, weil sie relevante Punkte allgemeiner über p-Werte in extremen Schwänzen macht:Es ist möglich, dass Sie nichts falsch machen und trotzdem einen Unterschied machen, aber wenn Sie ein reproduzierbares Beispiel posten, ist es möglich, weiter zu untersuchen, ob Sie einen Fehler haben (sagen wir im df).
Diese Dinge werden aus Näherungen berechnet, die im extremen Heck möglicherweise nicht besonders genau sind.
Wenn die zwei Dinge nicht identische Näherungen verwenden, stimmen sie möglicherweise nicht genau überein, aber das Fehlen einer Übereinstimmung sollte keine Rolle spielen (für den exakten Heckbereich, der für eine aussagekräftige Zahl ausschlaggebend ist, müssten die erforderlichen Annahmen erstaunlich hoch sein Richtigkeit). Haben Sie wirklich exakte Normalität, exakte Unabhängigkeit, genau konstante Varianz?
quelle
Die beste Methode zur manuellen Berechnung ist:
quelle
Mir gefällt die Antwort von @Aaron sehr gut, zusammen mit den
abs
Kommentaren. Ich finde eine handliche bestätigung zum laufenpt(1.96, 1000000, lower.tail = F) * 2
was ergibt
0.04999607
.Hier verwenden wir die bekannte Eigenschaft, dass 95% der Fläche unter der Normalverteilung bei ~ 1,96 Standardabweichungen auftreten und die Ausgabe von ~ 0,05 unseren p-Wert ergibt. Ich habe 1000000 verwendet, da wenn N sehr groß ist, die t-Verteilung fast dieselbe ist wie die Normalverteilung. Wenn ich das laufen lasse, habe ich mich in der @ Aaron-Lösung wohl gefühlt.
quelle