Manuelle Berechnung des p-Werts für den t-Test: Wie vermeide ich Werte größer als ?


8

Diese beiden Methoden zur Berechnung des p-Werts sollten äquivalent sein:

t.test(rats.drug,mu=1.2)$p.value
2*pt((mean(rats.drug)-1.2)*sqrt(n)/sd(rats.drug),df=n-1)

Das Problem bei der zweiten Methode besteht darin, dass das Risiko besteht, dass Werte größer als (tatsächlich bis zu ) erhalten werden:12

2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1)
[1] 2

Dies kann natürlich durch behoben werden

2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1,lower=F)
[1] 3.245916e-08

Meine Frage
Offensichtlich ist der Algorithmus der t-Test-Funktion intelligent genug, um diese beiden Fälle zu unterscheiden (unabhängig davon, ob der Stichprobenmittelwert größer oder kleiner als der angegebene Mittelwert ist). Gibt es eine einfache Methode, um die Berechnung des p-Werts manuell zu replizieren, wie dies durch die t-Test-Funktion erfolgt?

Meine derzeitige Lösung ist eine if-Anweisung, die prüft, ob der resultierende Wert größer als und in diesem Fall dieselbe Berechnung erneut mit der Option lower = F durchführt, aber vielleicht gibt es einen besseren Weg.1


8
Schauen Sie sich den Code an : getAnywhere(t.test.default). Sie finden pval <- 2 * pt(-abs(tstat), df)dort.
Roland

Antworten:



0

Glen_b hat absolut Recht mit dem abs, ich habe jedoch festgestellt, dass in bestimmten Datensätzen die Werte -absden gewünschten Effekt haben müssten . Ich kann nicht erklären, warum, aber ich lasse diese Codezeile hier, falls jemand, der ein ähnliches Problem hat, diesen Thread findet.

  t.value <- betacoeff/standard error of the beta coefficients
  p.value <- 2 * pt(-abs(t.value), df = nrow(data)-2)

Erweiterte Antwort auf Anfrage von mdewey.


1
Können Sie näher erläutern, wie dies Ihrer Meinung nach zu den bereits vorhandenen Kommentaren und Antworten beiträgt?
Mdewey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.