Mam przykładowy zestaw danych z 31 wartościami. Przeprowadziłem dwustronny test t za pomocą R, aby sprawdzić, czy prawdziwa średnia jest równa 10:
t.test(x=data, mu=10, conf.level=0.95)
Wynik:
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
Teraz próbuję zrobić to samo ręcznie:
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(lengths-1))
Wartość t obliczona przy użyciu tej metody jest taka sama, jak wynik uzyskany za pomocą funkcji t-testu R. Okazuje się jednak, że wartość p wynosi 3,025803e-12.
Jakieś pomysły, co robię źle?
Dzięki!
EDYTOWAĆ
Oto pełny kod R, w tym mój zestaw danych:
# 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
zioła 10
źródło
źródło
abs
.Opublikowałem to jako komentarz, ale kiedy chciałem dodać trochę więcej w edycji, stało się to zbyt długie, więc przeniosłem to tutaj.
Edycja : Twoje statystyki testowe i df są poprawne. Druga odpowiedź zwraca uwagę na problem z obliczeniem powierzchni ogona w wezwaniu do
pt()
i podwojeniem dla dwóch ogonów, co rozwiązuje różnicę. Niemniej jednak zostawię moją wcześniejszą dyskusję / komentarz, ponieważ zawiera bardziej ogólne uwagi na temat wartości p w skrajnych ogonach:Możliwe, że nie robisz nic złego i nadal odczuwasz różnicę, ale jeśli opublikujesz powtarzalny przykład, możliwe będzie dalsze zbadanie, czy masz jakiś błąd (powiedzmy w df).
Te rzeczy są obliczane na podstawie przybliżeń, które mogą nie być szczególnie dokładne w skrajnym ogonie.
Jeśli te dwie rzeczy nie używają identycznych przybliżeń, mogą się nie zgadzać ściśle, ale ten brak porozumienia nie powinien mieć znaczenia (dla dokładnego obszaru ogona, który jest tak daleko, aby być znaczącą liczbą, wymagane założenia musiałyby przyjąć zdumiewające stopnie precyzja). Czy naprawdę masz dokładną normalność, dokładną niezależność, dokładnie stałą wariancję?
źródło
Najlepszym sposobem na obliczenie go ręcznie jest:
źródło
Bardzo podoba mi się odpowiedź udzielona przez @Aaron wraz z
abs
komentarzami. Przydatnym potwierdzeniem jest uruchomieniept(1.96, 1000000, lower.tail = F) * 2
co daje
0.04999607
.Wykorzystujemy tutaj dobrze znaną właściwość polegającą na tym, że 95% powierzchni w rozkładzie normalnym występuje przy ~ 1,96 odchyleń standardowych, a zatem wydajność ~ 0,05 daje naszą wartość p. Użyłem 1000000, ponieważ gdy N jest ogromne, rozkład t jest prawie taki sam jak rozkład normalny. Uruchomienie tego dało mi komfort w rozwiązaniu @ Aaron.
źródło