La mia domanda è nata da una discussione con @whuber nei commenti di un'altra domanda .
Nello specifico, il commento di @whuber è stato il seguente:
Uno dei motivi per cui potrebbe sorprenderti è che le ipotesi alla base di un test di correlazione e di un test di pendenza di regressione sono diverse - quindi anche quando comprendiamo che la correlazione e la pendenza misurano davvero la stessa cosa, perché i loro valori p dovrebbero essere gli stessi? Ciò mostra come questi problemi vanno più in profondità rispetto al semplice se e debbano essere numericamente uguali.
Questo mi ha fatto pensare e mi sono imbattuto in una varietà di risposte interessanti. Ad esempio, ho trovato questa domanda " Ipotesi del coefficiente di correlazione " ma non riesco a vedere come questo chiarirebbe il commento sopra.
Ho trovato risposte più interessanti sul rapporto di di Pearson e la pendenza in una semplice regressione lineare (vedi qui e qui , per esempio), ma nessuno di loro sembra di rispondere a ciò che @whuber si riferiva al suo commento (almeno non apparente me).
Domanda 1: quali sono i presupposti alla base di un test di correlazione e di un test di pendenza della regressione?
Per la mia seconda domanda considerare le seguenti uscite in 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
E l'output di cor.test() funzione:
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
Come si può vedere dall'output lm()e cov.test()dall'output, il coefficiente di correlazione di Pearson e la stima della pendenza ( β ) sono ampiamente diversi, rispettivamente 0,96 vs 0,485, ma il valore t e i valori p sono gli stessi.
Poi ho anche provato a vedere se sono in grado di calcolare il valore t per e β 1 , che sono gli stessi nonostante r e β 1 siano diversi. Ed è lì che rimango bloccato, almeno per :
Calcola la pendenza ( ) in una semplice regressione lineare usando la somma totale dei quadrati di x e 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))
Calcola la stima dei minimi quadrati della pendenza di regressione, (ne è una prova nella prima edizione del libro R di Crawley , pagina 393):
b1 <- ss.xy/ss.x
b1
# [1] 0.4848781
Calcola l'errore standard per :
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
E il valore t e il valore p per :
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
Quello che non so a questo punto, e questa è la domanda 2 , è, come calcolare lo stesso valore t usando invece di β 1 (forse in baby-step)?
Suppongo che, poiché cor.test()l'ipotesi alternativa è se la vera correlazione non è uguale a 0 (vedi l' cor.test()output sopra), mi aspetterei qualcosa di simile al coefficiente di correlazione di Pearson diviso per "l'errore standard del coefficiente di correlazione di Pearson" (simile alsopra)?! Ma quale sarebbe questo errore standard e perché?b1/se.b1
Forse questo ha qualcosa a che fare con il suddetto assunzioni di cui alla base di un test di correlazione e un test di pendenza della regressione ?!
EDIT (27-lug-2017): Mentre @whuber ha fornito una spiegazione molto dettagliata per la domanda 1 (e in parte la domanda 2 , vedi commenti sotto la sua risposta), ho fatto qualche ulteriore scavo e ho scoperto che questi due post ( qui e qui ) fanno mostra un errore standard specifico per , che funziona bene per rispondere alla domanda 2 , ovvero riprodurre il valore t dato r :
r <- 0.9603906
# n <- 16
r.se <- sqrt((1-r^2)/(n-2))
r/r.se
# [1] 12.8956