2017-01-06 14 views
5

Zrobiłem regresję liniową dla testu dwustronnego z 178 stopniami swobody. Funkcja summary daje mi dwie wartości p dla moich dwóch wartości t.Jak ręcznie obliczyć wartość p statystyki t w regresji liniowej

t value Pr(>|t|) 
5.06 1.04e-06 *** 
10.09 < 2e-16 *** 
... 
... 
F-statistic: 101.8 on 1 and 178 DF, p-value: < 2.2e-16 

Chcę ręcznie obliczyć wartość p t-wartości z tego wzoru:

p = 1 - 2*F(|t|) 

p_value_1 <- 1 - 2 * pt(abs(t_1), 178) 
p_value_2 <- 1 - 2 * pt(abs(t_2), 178) 

nie dostać te same wartości p jak w opisie modelu. Dlatego chcę wiedzieć, jak funkcja summary jest inna niż moja formuła, ponieważ nie mogę znaleźć definicji Pr(>|t|).

Czy możesz mi pomóc? Wielkie dzięki!

+1

Yeah! Obie odpowiedzi mi pomogły! Obaj ich głosowaliśmy :-) Ale twoja odpowiedź przekonała mnie nieco bardziej, ponieważ zrobiła dokładnie to, co chciałem i była tak krótka. Dzięki jeszcze raz! – Frosi

Odpowiedz

3

Jest

2 * pt(-abs(t_value), df) 

Na przykład:

2 * pt(-5.06, 178) 
#[1] 1.038543e-06 

2 * pt(-10.09, 178) 
#[1] 3.223683e-19 

Alternatywnie, użyj

2 * pt(abs(t_value), df, lower.tail = FALSE) 
3

Możemy obliczyć p wartość Pr (> | t |) w następujących sposobów:

tval <- 5.06 
df <- 178 

# compute area under the t-pdf 
integrate(function(x) dt(x, df), -Inf, -tval)$value + integrate(function(x) dt(x, df), tval, Inf)$value # sum of two areas 
# [1] 1.038543e-06 
1-integrate(function(x) dt(x, df), -tval, tval)$value 
# [1] 1.038543e-06 
# 2-sided t-test: Pr_T(|t|>|tval|) = 2*(1 - F_T(|tval|)) = 2*F_T(-|tval|), where T~t(df=178) 
2*(1 - pt(tval, df)) 
# [1] 1.038543e-06 
2*pt(tval, df, lower.tail = FALSE) 
# [1] 1.038543e-06 
1 - (pt(tval, df) - pt(-tval, df)) 
# [1] 1.038543e-06 
2*pt(-tval, df) 
# [1] 1.038543e-06 

Poniżej przedstawiono ten sam geometrycznie z innym (mniej ekstremalnych) wartości statystyki t, jak widzimy, istnieją dwa (symetryczne) niebieskie regiony, które razem reprezentują odpowiednie prawdopodobieństwo, w ramach dwustronnego testu t.

df <- 178 
x <- seq(-6, 6,0.01) 
y <- dt(x, df) 
tval <- 1.25 
plot(x, y, type='l', main='t-distribution and p-value (5% significance level, 2-sided t-test)') 
abline(h=0) 
abline(v = c(tval, -tval), col='red') 
index1 <- which(x >= -tval)[1] 
index2 <- which(x >= tval)[1] 
polygon(x = c(x[1:index1], x[index1], x[1]), 
     y = c(y[1:index1], 0, 0), 
     col = "blue") 
polygon(x = c(x[index2], x[index2], x[index2:length(x)]), 
     y = c(0, y[index2], y[index2:length(y)]), 
     col = "blue") 

enter image description here

Powiązane problemy