Мой вопрос возник из обсуждения с @whuber в комментариях к другому вопросу .
В частности, комментарий @whuber был следующим:
Одна из причин, по которой вас это может удивить, заключается в том, что допущения, лежащие в основе теста корреляции и теста наклона регрессии, различны - поэтому даже когда мы понимаем, что корреляция и наклон действительно измеряют одно и то же, почему их значения p должны быть одинаковыми? Это показывает, как эти проблемы глубже, чем просто то, должны ли и быть численно равными.β
Это заставило меня задуматься, и я наткнулся на множество интересных ответов. Например, я нашел этот вопрос « Допущения коэффициента корреляции », но не вижу, как это пояснит комментарий выше.
Я нашел более интересные ответы о взаимосвязи Пирсона и наклона в простой линейной регрессии (см. Здесь и здесь, например), но ни один из них, похоже, не отвечает на то, на что ссылался @whuber в своем комментарии (по крайней мере, не очевидно мне).β
Вопрос 1: Какие предположения лежат в основе теста корреляции и теста на наклон регрессии?
Для моего второго вопроса рассмотрим следующие выводы 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()
, коэффициент корреляции Пирсона и оценка наклона ( ) в значительной степени различаются: 0,96 против 0,485 соответственно, но значения t и p одинаковы.β 1
Затем я также попытался выяснить, могу ли я рассчитать значение 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))
Вычислите оценку наименьших квадратов наклона регрессии, (тому есть подтверждение в 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 : как рассчитать одно и то же t-значение, используя вместо β 1 (возможно, по шагам ребенка)?
Я предполагаю, что поскольку cor.test()
альтернативная гипотеза заключается в том, что истинная корреляция не равна 0 (см. cor.test()
Вывод выше), я ожидал бы что-то вроде коэффициента корреляции Пирсона деленного на «стандартную ошибку коэффициента корреляции Пирсона» (аналогично над)?! Но что это за стандартная ошибка и почему?b1/se.b1
Может быть, это как-то связано с вышеупомянутыми предположениями, лежащими в основе теста корреляции и теста на наклон регрессии ?
РЕДАКТИРОВАТЬ (27-Jul-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