Sorum, @whuber ile farklı bir sorunun yorumunda yapılan bir tartışmadan kaynaklandı .
Özellikle, @whuber adlı kullanıcının yorumu şöyle:
Sizi şaşırtabilmesinin bir nedeni, bir korelasyon testi ve regresyon eğimi testi altında yatan varsayımların farklı olmasıdır - bu yüzden korelasyon ve eğimin gerçekten aynı şeyi ölçtüğünü anlasak bile, p değerleri neden aynı olmalıdır? Bu, bu sorunların basitçe ve sayısal olarak eşit olması gerekip gerekmediğinden daha derine indiğini gösteriyor .
Bu benim düşünceme kaptı ve çeşitli ilginç cevaplarla karşılaştım. Örneğin, bu soruyu " Korelasyon katsayısının varsayımları " olarak buldum, ancak bunun yukarıdaki yorumu nasıl netleştireceğini göremiyorum.
Ben Pearson ilişkisi hakkında daha ilginç cevaplar buldum ve eğim basit doğrusal regresyonda (bkz burada ve burada örneğin) ama bunların hiçbiri (onun yorumunda için en az belirgin değil atıfta bulundu @whuber neyi cevap görünmektedir ben mi).
Soru 1: Bir korelasyon testi ve regresyon eğimi testi altında yatan varsayımlar nelerdir?
2. sorum için aşağıdaki çıktıları göz önünde bulundurun 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
Ve cor.test()
fonksiyonun çıktısı :
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()
Ve cov.test()
çıktısının görebileceği gibi , Pearson korelasyon katsayısı ve eğim tahmini ( β 1 ) sırasıyla büyük ölçüde farklıdır, sırasıyla 0,96 ve 0,485'tir, fakat t değeri ve p değerleri aynıdır.
Sonra , r ve β 1'in farklı olmasına rağmen aynı olan ve β 1 için t-değerini hesaplayabiliyor muydum . Ve burada sıkışıp kaldım, en azından r :
Eğriyi ( ), x ve y toplam karelerinin toplamını kullanarak basit bir doğrusal regresyonda hesaplayın :
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))
Regresyon eğiminin en küçük kareler tahminini hesaplayın, ( Crawley R Book 1st edition , sayfa 393'te bunun bir kanıtı var ):
b1 <- ss.xy/ss.x
b1
# [1] 0.4848781
İçin standart hatayı hesaplamak :
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
Ve için t değeri ve p değeri :
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
Ne bu noktada bilmiyorum ve bu Soru 2 , nasıl kullanarak aynı t-değerini hesaplamak için olan, yerine p 1 (belki bebek adımlarla)?
cor.test()
Alternatif hipotezin gerçek korelasyonun 0'a eşit olmadığı ( cor.test()
yukarıdaki çıktıya bakınız) olmadığı için , "Pearson korelasyon katsayısının standart hatası" olarak bölü Pearson korelasyon katsayısı gibi bir şey bekleyeceğimi farz ediyorum (benzer ile elde edilmiş) ?! Ama bu standart hata ne olurdu ve neden?b1/se.b1
Belki bunun, yukarıda belirtilen varsayımlarla bir korelasyon testi ve bir regresyon eğimi testi ile ilgisi vardır ?!
EDIT (27-Temmuz-2017): @whuber Soru 1 için çok detaylı bir açıklama yaparken (ve kısmen Soru 2 , cevabının altındaki yorumları görün), biraz daha kazı yaptım ve bu iki mesajın ( burada ve burada ) yaptığını gördüm. belirli göstermek standart hatayı için cevap iyi çalışıyor, Soru 2 t-değeri verilmiş çoğaltmak olduğunu, r :
r <- 0.9603906
# n <- 16
r.se <- sqrt((1-r^2)/(n-2))
r/r.se
# [1] 12.8956