İstatistiksel olarak anlamlı bir sabit terimi çıkarılması arttırır


101

Açıklayıcı değişkenli basit bir doğrusal modelde,

αi=β0+β1δi+ϵi

Kesişim terimini kaldırmanın uyumu büyük ölçüde iyileştirdiğini buldum ( değeri 0.3'ten 0.9'a gidiyor). Bununla birlikte, kesişme terimi istatistiksel olarak anlamlı görünmektedir.R2

Müdahale ile:

Call:
lm(formula = alpha ~ delta, data = cf)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.72138 -0.15619 -0.03744  0.14189  0.70305 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.48408    0.05397    8.97   <2e-16 ***
delta        0.46112    0.04595   10.04   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.2435 on 218 degrees of freedom
Multiple R-squared: 0.316,    Adjusted R-squared: 0.3129 
F-statistic: 100.7 on 1 and 218 DF,  p-value: < 2.2e-16

Kesişmeden:

Call:
lm(formula = alpha ~ 0 + delta, data = cf)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.92474 -0.15021  0.05114  0.21078  0.85480 

Coefficients:
      Estimate Std. Error t value Pr(>|t|)    
delta  0.85374    0.01632   52.33   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 0.2842 on 219 degrees of freedom
Multiple R-squared: 0.9259,   Adjusted R-squared: 0.9256 
F-statistic:  2738 on 1 and 219 DF,  p-value: < 2.2e-16

Bu sonuçları nasıl yorumlarsınız? Bir engelleme terimi modele dahil edilmeli mi, edilmemeli mi?

Düzenle

İşte kalan kareler toplamı:

RSS(with intercept) = 12.92305
RSS(without intercept) = 17.69277

14
nin SADECE kesişim dahil edildiyse açıklanan toplam varyansa oranı olduğunu hatırlıyorum . Aksi takdirde türetilemez ve yorumunu kaybeder. R2
Momo

@Momo: Güzel nokta. Her model için kalan karelerin toplamını hesapladım; bu, kesişim terimi olan modelin, söylediklerinden bağımsız olarak daha uygun olduğunu göstermektedir. R2
Ernest,

4
Ek bir parametre eklediğinizde, RSS'nin düşmesi (veya en azından artmaması) gerekir. Daha önemlisi, doğrusal modellerde standart çıkarımın çoğu, kesmeyi bastırdığınızda uygulanmaz (istatistiksel olarak anlamlı olmasa bile).
Makro

14
Ne bir kesişim olduğunda o ölçmesidir yapar R, 2 = 1 - Σ i ( y ıR
R2=1i(yiy^i)2iyi2
yerine (bildirim, payda bakımından ortalama bir çıkarma). Bu, aynı ya da benzer MSE neden için olan payda büyük hale geliştirmek için. R2
kardinal

5
değildir mutlaka daha büyüktür. Her iki durumda da uygunluğun MSE'si benzer olduğu sürece, ancak herhangi bir engelsiz kalmaktadır. Ancak, @Macro'nun belirttiği gibi, paytörün deR2 durumlarda daha ve bu nedenle hangisinin kazanacağına bağlı olduğunu unutmayın! Onların birbirleriyle karşılaştırılmaması gerektiği konusunda haklısın ama kesişen SSE'nin kesişmeden SSE'den daima daha küçük olacağını da biliyorsunuz . Bu, regresyon teşhisi için örneklem içi önlemlerin kullanılmasında problemin bir parçasıdır. Bu modelin kullanımındaki nihai hedefiniz nedir?
kardinal

Yanıtlar:


131

Öncelikle R, modelde herhangi bir engel bulunmadığında yazılımın ne yaptığını anlamamız gerekir . Olağan hesaplama hatırlayın , bir kesişim mevcut olduğu R, 2 = Σ i ( y ı -R2 İlk eşitlikancak, muhtemelen yazmanın iki yolu arasında daha popülerolmasına rağmen, kesişmenin modele dahil edilmesi nedeniyle oluşur. İkincieşitlik aslında daha genel bir yorumunu sunuyor! Bu nokta aynı zamandabu ilgili soruyada değinmektedir.

R2=i(y^iy¯)2i(yiy¯)2=1i(yiy^i)2i(yiy¯)2.

Ancak, modelde herhangi bir müdahale yoksa ne olur?

De, bu durumda, R( sessizce! ) Modifiye edilmiş bir formu kullanan

R02=iy^i2iyi2=1i(yiy^i)2iyi2.

Bu ne hatırlamak için yardımcı olur ölçmeye çalışıyor. Eski durumda, şu anki modelinizi yalnızca bir kesişim içeren (yani sabit terim) referans modeliyle karşılaştırıyor . İkinci durumda, kesişme yoktur, bu yüzden böyle bir modelle karşılaştırmak çok mantıklı değildir. Yani, yerine R 2R2 dolaylı karşılık gelen bir referans modeli kullanır, hesaplanansadece gürültü.R02

Aşağıda sonra gelende, ben her ikisi için ikinci ifadenin odaklanmak ve R 2 0 bu ifade başka bağlamlarda ile genelleştirildiğinde beri ve genellikle maddeler anlamında şeyler düşünmek daha doğal.R2R02

Ama nasıl farklılar ve ne zaman?

y^y~

R2R02

R2=1yy^22yy¯122,
R02=1yy~22y22,

Şimdi, , ardından ise ve sadece y22=yy¯122+ny¯2R02>R2

y-y~22y-y^22<1+y¯21ny-y¯122.

Sol taraf birden büyüktür, çünkü karşılık gelen model kendi içinde iç içe geçmiş demektir.y~y^ . Sağ taraftaki ikinci terim, yalnızca bir engelleme modelinin ortalama kare hatası ile bölünen tepkilerin kare ortalamasıdır. Bu nedenle, diğer varyasyona göre cevabın ortalaması büyüdükçe, daha fazla " " olur ve hakim şansı .R,02R,2

Tüm modele bağlı malzemelerin sol tarafta olduğuna ve modele bağlı olmayan malzemelerin sağda olduğuna dikkat edin.

Tamam, peki sol taraftaki oran nasıl küçük?

Hatırlayın ve burada ve alt uzay karşılık gelen çıkıntı matrisleridir ve şekilde .y~=P0yy^=P1yP0P1S0S1S0S1

Bu nedenle, oranın bire yakın olması için, ve alt alanlarının birbirine çok benzer olması gerekir. Şimdi ve yalnızca in bir temel vektör olup olmamasına göre farklılık gösterir , bu nedenle çok yakın bir alt alan olması daha iyi olur .S0S1S0S11S01

Temelde, bu, öngörücümüzün güçlü bir ortalama dengelemesinin daha iyi olması anlamına gelir ve bu ortalama dengelemesinin yordayıcının değişkenliğine egemen olması gerektiği anlamına gelir.

Bir örnek

Burada modelde açıkça bir kesişme noktası olan ve söz konusu duruma yakın davranan bir örnek oluşturmaya çalışıyoruz. Aşağıda göstermek için bazı basit bir Rkod.

set.seed(.Random.seed[1])

n <- 220
a <- 0.5
b <- 0.5
se <- 0.25

# Make sure x has a strong mean offset
x <- rnorm(n)/3 + a
y <- a + b*x + se*rnorm(x)

int.lm   <- lm(y~x)
noint.lm <- lm(y~x+0)  # Intercept be gone!

# For comparison to summary(.) output
rsq.int <- cor(y,x)^2
rsq.noint <- 1-mean((y-noint.lm$fit)^2) / mean(y^2)

Bu aşağıdaki çıktıyı verir. Biz modelle başlamak ile kesişmesine.

# Include an intercept!
> summary(int.lm)

Call:
lm(formula = y ~ x)

Residuals:
      Min        1Q    Median        3Q       Max
-0.656010 -0.161556 -0.005112  0.178008  0.621790

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.48521    0.02990   16.23   <2e-16 ***
x            0.54239    0.04929   11.00   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2467 on 218 degrees of freedom
Multiple R-squared: 0.3571,     Adjusted R-squared: 0.3541
F-statistic: 121.1 on 1 and 218 DF,  p-value: < 2.2e-16

O zaman , engellemeyi dışladığımızda ne olacağını görün .

# No intercept!
> summary(noint.lm)

Call:
lm(formula = y ~ x + 0)

Residuals:
     Min       1Q   Median       3Q      Max
-0.62108 -0.08006  0.16295  0.38258  1.02485

Coefficients:
  Estimate Std. Error t value Pr(>|t|)
x  1.20712    0.04066   29.69   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.3658 on 219 degrees of freedom
Multiple R-squared: 0.801,      Adjusted R-squared: 0.8001
F-statistic: 881.5 on 1 and 219 DF,  p-value: < 2.2e-16

Aşağıda kırmızı ile kesişen model ve mavi ile kesişmeyen model verilerinin bir grafiğidir.

Regresyon çizgileri ile veri arsa


4
Bu gerçekten muhteşem, +1. Soru: sık sık b / t 2 modellerini ayarlamak istediğimizde, iç içe model testi yaparız, bu bunu engeller mi, yoksa hala tam bir modele karşı kesişme durumunda azaltılmış bir modeli test etmek için geçerli olur mu? ?
gung

5
@gung: Hayır, tipik testinden bizden ayrı bir şey olduğuna inanmıyorum . Test, bir kesişimin varlığına bağlı değildir ve gerçekten istatistikinin bu durumda işe yarayacağına inanıyorum . Bu bize, eğer gerçekten ise elbette, eğer doğru cebir yaptık varsayarak. FFR 2 0 >R 2 1 F<(n-2) ˉ y 2
F=(n-2)(\ y-\ ytilde22\ y-\ yhat22-1)
R,02>R,12
F<(n-2)y¯2n-1\ y-y¯\bir22,
kardinal

1
ifadesini tercih ediyorumR,02=Y~2Y2
Stéphane Laurent

3
@ naught101: Daha doğru olduğunu söyleyemem , ama genel olarak konuşursak, eşit derecede makul bir bakış açısıdır. Mevcut açıklama için, sonuçta ve alt uzayları arasındaki . İkisi arasındaki fark, temel vektör in varlığı veya eksikliğidir . S 0 1S1S01
kardinal

1
Bir şey özlüyorum. R ne, doğru mu? Yani, rapor edilen R ^ 2 değeri, kesişen vakalarla olan ve olmayan vakalar arasında uzaktan karşılaştırılabilir olsa da mı?
Andy Clifton

1

Kararımı, R ^ 2 yerine Akaike veya Bayes-Schwarz kriterleri gibi bir bilgi kriterine dayandırırdım; o zaman bile bunları mutlak olarak görmezdim.

Eğimin sıfıra yakın olduğu ve tüm verilerin kaynağından uzak olduğu bir işleminiz varsa, verilerdeki varyasyonun çoğunun gürültüden kaynaklanacağından doğru R ^ 2'niz düşük olmalıdır. Böyle bir veriyi kesişmeyen bir modele sığdırmaya çalışırsanız, kesişme serbest sürümü kullanılıyorsa büyük ve yanlış bir eğim terimi ve muhtemelen daha iyi görünümlü bir R ^ 2 oluşturacaksınız.

Aşağıdaki grafik, bu aşırı durumlarda ne olduğunu göstermektedir. Burada üretim süreci, x = 100,100.1, .... ve y, ortalama 0 ve standart sapma olan, sadece 100 + rasgele gürültüdür. Noktalar siyah dairelerdir, kesişimsiz uyum mavi çizgidir ve kesişimdeki uyum (eğimi sıfırlama) kırmızı çizgidir:

[Üzgünüm grafiği göndermeme izin vermiyor; oluşturmak için aşağıdaki R kodunu çalıştırın. Orijini sol alt köşede, nokta kümesini sağ üst köşede gösterir. Kötü kesişmeyen fit, sol alttan üst sağa doğru gider ve doğru uyum x eksenine paralel bir çizgidir]

Bunun için doğru modelin sıfırdan R ^ olması gerekir --- sabit artı rasgele bir gürültü olması. R, size ve .99'dan R ^ 2 değerini, kesişmeyen fit için verecektir. Modeli yalnızca eğitim verileri aralığında x değerleriyle tahmin yapmak için kullanırsanız bu önemli olmaz, ancak x, eğitim setinin dar aralığının dışına çıkarsa veya doğru bilgiler edinmeye çalışıyorsanız, sefil bir şekilde başarısız olur sadece tahminin ötesinde.

AIC, kesişen modelin tercih edildiğini doğru bir şekilde göstermektedir. Bunun için R kodu:

 Nsamp=100
x=seq(1,100,1)*.1+100 # x=101.1,101.2,....
y=rnorm(n=length(x))+100 # random noise +100 (best model is constant)

model_withint=lm(y~x)
print(summary(model_withint))
flush.console()
model_noint=lm(y~x+0) 
print(summary(model_noint))
print (AIC(model_withint))
print(sprintf ('without intercept  AIC=%f',AIC(model_noint)))
print(sprintf ('with intercept  AIC=%f',AIC(model_withint)))
print(sprintf ('constant model  AIC=%f',AIC(lm(y~1))))
plot(x,y,ylim=c(0,105),xlim=c(0,105))
lines( c(0,105),c(0,105)*model_noint$coefficients['x'],col=c('blue'))
lines( c(0,105),c(1,1)*(lm(y~1)$coefficients['(Intercept)']),col=c('red'))

AIC çıkışı

   "without intercept  AIC=513.549626"
    "with intercept  AIC=288.112573"
    "constant model  AIC=289.411682"

Gerçek model sabit model olduğu için, AIC'nin bu durumda hala yanlış model aldığını unutmayın; fakat diğer rasgele sayılar, AIC'nin sabit model için en düşük olduğu verileri verecektir. Eğimi atarsanız, modeli onsuz yeniden takmalısınız, modelin kesişimini kullanmaya çalışmayın ve eğimi yok sayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.