Моє запитання виріс із обговорення з @whuber в коментарях до іншого питання .
Зокрема, коментар @whuber був такий:
Однією з причин, яка може вас здивувати, є те, що припущення, що лежать в основі тесту кореляції та тесту регресійного нахилу, різні - тож навіть коли ми розуміємо, що кореляція та нахил дійсно вимірюють одне і те ж, чому їхні р-значення повинні бути однаковими? Це показує, як ці питання йдуть глибше, ніж просто, чи повинні та бути чисельними рівними.
Це задумалося про це, і я натрапив на різноманітні цікаві відповіді. Наприклад, я знайшов це питання " Припущення про коефіцієнт кореляції ", але не можу зрозуміти, як це пояснить коментар вище.
Я знайшов більш цікаві відповіді про взаємозв'язок Пірсона та нахилу у простій лінійній регресії (див. Тут і тут, наприклад), але жодна з них, схоже, не відповідає тому, на що посилається @whuber у своєму коментарі (принаймні, не очевидно, що мене).
Питання 1: Які припущення лежать в основі кореляційного тесту та тесту регресійного нахилу?
Для мого 2-го питання розгляньте такі результати у 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
І вихід cor.test()
функції:
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
Як видно з результатів lm()
та cov.test()
результатів, коефіцієнт кореляції Пірсона та оцінка нахилу ( β 1 ) значною мірою відрізняються, 0,96 проти 0,485 відповідно, але значення t і p-значення однакові.
Потім я також спробував побачити, чи зможу я обчислити значення t для та β 1 , які однакові, незважаючи на те, що r і β 1 відрізняються. І ось там я застряг, принаймні, за r :
Обчисліть нахил ( ) за простою лінійною регресією, використовуючи загальні суми квадратів 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))
Обчисліть оцінку найменшого квадрату нахилу регресії, (це є доказом цього в книзі Кроулі R Book 1-е видання , стор. 393):
b1 <- ss.xy/ss.x
b1
# [1] 0.4848781
Обчисліть стандартну помилку для :
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
І t-значення і p-значення для :
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
Що я не знаю на даний момент, і це питання 2 , як обчислити одне і те ж значення, використовуючи замість β 1 (можливо, у кроковій формі)?
Я припускаю, що оскільки cor.test()
альтернативна гіпотеза полягає в тому, чи справжня кореляція не дорівнює 0 (див. cor.test()
Вихідний результат), я б очікував щось подібне на коефіцієнт кореляції Пірсона поділене на "стандартну помилку коефіцієнта кореляції Пірсона" (подібно до вище) ?! Але що це за стандартна помилка і чому?b1/se.b1
Може, це має щось спільне з вищезгаданими припущеннями, що лежать в основі кореляційного тесту та тесту регресійного нахилу ?!
EDIT (27 липня 2017 р.): Хоча @whuber дав дуже детальне пояснення до питання 1 (і частково питання 2 , див. Коментарі під його відповіддю), я здійснив подальше копання і виявив, що ці два повідомлення ( тут і тут ) роблять показати конкретну стандартну помилку для , яка добре відповідає на питання 2 , тобто відтворити значення t, задане r :
r <- 0.9603906
# n <- 16
r.se <- sqrt((1-r^2)/(n-2))
r/r.se
# [1] 12.8956