Moje pytanie wyrosło z dyskusji z @whuber w komentarzach do innego pytania .
W szczególności komentarz @whuber był następujący:
Jednym z powodów, dla których może cię zaskoczyć, jest to, że założenia leżące u podstaw testu korelacji i testu nachylenia regresji są różne - więc nawet jeśli rozumiemy, że korelacja i nachylenie naprawdę mierzą to samo, dlaczego ich wartości p powinny być takie same? To pokazuje, jak te kwestie głębiej niż po prostu czy i powinna być same.β
To mnie zastanowiło i znalazłem wiele interesujących odpowiedzi. Na przykład znalazłem to pytanie „ Założenia współczynnika korelacji ”, ale nie widzę, jak to wyjaśniłoby powyższy komentarz.
Znalazłam bardziej interesujących odpowiedzi na temat relacji Pearsona oraz nachylenie w prostej regresji liniowej (patrz tutaj i tutaj, na przykład), ale żaden z nich nie wydaje się, aby odpowiedzieć co @whuber odnosił się w swoim komentarzu (przynajmniej nie wynika Dla mnie).β
Pytanie 1: Jakie są założenia testu korelacji i testu nachylenia regresji?
W przypadku mojego drugiego pytania rozważ następujące wyniki R
:
model <- lm(Employed ~ Population, data = longley)
summary(model)
Call:
lm(formula = Employed ~ Population, data = longley)
Residuals:
Min 1Q Median 3Q Max
-1.4362 -0.9740 0.2021 0.5531 1.9048
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.3807 4.4224 1.895 0.0789 .
Population 0.4849 0.0376 12.896 3.69e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.013 on 14 degrees of freedom
Multiple R-squared: 0.9224, Adjusted R-squared: 0.9168
F-statistic: 166.3 on 1 and 14 DF, p-value: 3.693e-09
I wynik cor.test()
funkcji:
with(longley, cor.test(Population, Employed))
Pearson's product-moment correlation
data: Population and Employed
t = 12.8956, df = 14, p-value = 3.693e-09
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.8869236 0.9864676
sample estimates:
cor
0.9603906
Jak widać na podstawie lm()
i cov.test()
, współczynnik korelacji Pearsona oraz oszacowanie nachylenia ( ) są zasadniczo różne, odpowiednio 0,96 vs. 0,485, ale wartość t i wartości p są takie same.β 1
Następnie próbowałem również sprawdzić, czy jestem w stanie obliczyć wartość t dla i , które są takie same, pomimo że i są różne. I właśnie tam utknąłem, przynajmniej dla :β 1 r β 1 r
Oblicz nachylenie ( ) w prostej regresji liniowej, używając sumy kwadratów i : x y
x <- longley$Population; y <- longley$Employed
xbar <- mean(x); ybar <- mean(y)
ss.x <- sum((x-xbar)^2)
ss.y <- sum((y-ybar)^2)
ss.xy <- sum((x-xbar)*(y-ybar))
Oblicz oszacowanie najmniejszych kwadratów nachylenia regresji, (jest na to dowód w książce Crawley R Book 1. wydanie , strona 393):
b1 <- ss.xy/ss.x
b1
# [1] 0.4848781
Oblicz błąd standardowy dla :
ss.residual <- sum((y-model$fitted)^2)
n <- length(x) # SAMPLE SIZE
k <- length(model$coef) # NUMBER OF MODEL PARAMETER (i.e. b0 and b1)
df.residual <- n-k
ms.residual <- ss.residual/df.residual # RESIDUAL MEAN SQUARE
se.b1 <- sqrt(ms.residual/ss.x)
se.b1
# [1] 0.03760029
A wartość ti wartość p dla :
t.b1 <- b1/se.b1
p.b1 <- 2*pt(-abs(t.b1), df=n-2)
t.b1
# [1] 12.89559
p.b1
# [1] 3.693245e-09
W tym momencie nie wiem, a jest to Pytanie 2 , jak obliczyć tę samą wartość t za pomocą zamiast (być może krok po kroku)?β 1
Zakładam, że skoro cor.test()
alternatywną hipotezą jest to, czy prawdziwa korelacja nie jest równa 0 (patrz cor.test()
dane wyjściowe powyżej), oczekiwałbym czegoś w rodzaju współczynnika korelacji Pearsona podzielonego przez „błąd standardowy współczynnika korelacji Pearsona” (podobny do powyżej)?! Ale jaki byłby ten standardowy błąd i dlaczego?b1/se.b1
Może ma to coś wspólnego z wyżej wymienionymi założeniami leżącymi u podstaw testu korelacji i testu nachylenia regresji ?!
EDYCJA (27 lipca 2017 r.): Chociaż @whuber dostarczył bardzo szczegółowe wyjaśnienie pytania 1 (i częściowo pytania 2 , zobacz komentarze pod jego odpowiedzią), to jednak trochę kopałem i odkryłem, że te dwa posty ( tutaj i tutaj ) pokazać konkretny błąd standardowy dla , który działa dobrze, aby odpowiedzieć na pytanie 2 , czyli odtworzyć daną wartość t- :r
r <- 0.9603906
# n <- 16
r.se <- sqrt((1-r^2)/(n-2))
r/r.se
# [1] 12.8956