Yığın testleri nedir?


13

Bir soruya yanıt olarak çoklu doğrusal varlığında model seçimi , Frank Harrell önerdi :

Tüm değişkenleri modele koyun ancak rakip değişkenlerin etkilerine göre ayarlanmış bir değişkenin etkisini test etmeyin ... Rakip değişkenlerin yığın testleri güçlüdür, çünkü eş değişkenler genel olarak çoklu serbestlik derecesi ilişkilendirme testinde güçlerini birleştirir. değişkenleri tek tek test ettiğinizde birbirleriyle rekabet etmek.

Nelerdir yığın testleri ? Uygulamalarına bir örnek verebilir misiniz r?


3
Bunun, bir blok içinde tüm potansiyel eşdoğrusallığın -test veya olabilirlik oranı testi gibi omnibus testlerini etkilemediği bir zamanda test bloklarına atıfta bulunduğunu düşünürdüm , ama hiç terim duymadım " yığın testi ". F
Makro

2
Onları önerdiğimi gördüğüm (ve kendim yaptım) bir durum, birbirini dışlayan çok sayıda sahte değişkenin (örneğin, birçok potansiyel kategoriye sahip nominal bağımsız bir değişkenin) bir serisine sahip olduğunuzdur. Herhangi bir tek kukla değişkenle ilişkili herhangi bir tek katsayının testi, temel olarak seçtiğiniz herhangi bir şeyle belirli bir kontrastı test ettiğinden çok ilginç değildir. Bu nedenle, daha bilgilendirici bir test, tüm kukla değişkenleri atlayan kısıtlı modelin olabilirlik oranı testidir.
Andy W

2
@FrankHarrell ...
fmark

Bu işe yaramıyor, fmark. :)
kardinal

1
Utanç, gerekir :)
fmark

Yanıtlar:


13

@ mark999 mükemmel bir cevap verdi. Polinom terimlerini birlikte test etmeye ek olarak, herhangi bir değişken grubunu birlikte test edebilirsiniz ("yığın testi"). Farzedin ki, koşut doğrusal değişkenler tricep çevresi, bel, kalça çevresi, tüm vücut ölçüsü ölçümlerine sahip bir modeliniz var. Genel vücut ölçüsü yığın testi almak için şunları yapabilirsiniz:

require(rms)
f <- ols(y ~ age + tricep + waist + pol(hip,2))
anova(f, tricep, waist, hip)  # 4 d.f. test

Aynı testi yalnızca yaş içeren ( NAiçinde s yoksa) bir model takarak tricep, waist, hipve " testinde fark" yaparak yapabilirsiniz . Bu eşdeğer testler, üç değişken arasında aşırı doğrudaşlıktan bile etkilenmez.R2


1
Frank'i işaret ettiğin için teşekkürler. Bunu yapabileceğini bilmiyordum.
mark999

12

Macro'nun yorumu, Andy'ninki gibi doğrudur. İşte bir örnek.

> library(rms)
> 
> set.seed(1)
> d <- data.frame(x1 = rnorm(50), x2 = rnorm(50))
> d <- within(d, y <- 1 + 2*x1 + 0.3*x2 + 0.2*x2^2 + rnorm(50))
> 
> ols1 <- ols(y ~ x1 + pol(x2, 2), data=d) # pol(x2, 2) means include x2 and x2^2 terms
> ols1

Linear Regression Model

ols(formula = y ~ x1 + pol(x2, 2), data = d)

                Model Likelihood     Discrimination    
                   Ratio Test           Indexes        
Obs       50    LR chi2     79.86    R2       0.798    
sigma 0.9278    d.f.            3    R2 adj   0.784    
d.f.      46    Pr(> chi2) 0.0000    g        1.962    

Residuals

    Min      1Q  Median      3Q     Max 
-1.7463 -0.4789 -0.1221  0.4465  2.2054 

          Coef   S.E.   t     Pr(>|t|)
Intercept 0.8238 0.1654  4.98 <0.0001 
x1        2.0214 0.1633 12.38 <0.0001 
x2        0.2915 0.1500  1.94 0.0581  
x2^2      0.2242 0.1163  1.93 0.0602  


> anova(ols1)
                Analysis of Variance          Response: y 

 Factor     d.f. Partial SS MS          F      P     
 x1          1   131.894215 131.8942148 153.20 <.0001
 x2          2    10.900163   5.4500816   6.33 0.0037
  Nonlinear  1     3.196552   3.1965524   3.71 0.0602
 REGRESSION  3   156.011447  52.0038157  60.41 <.0001
 ERROR      46    39.601647   0.8609054              

x2Ve x2^2terimlerini ayrı ayrı düşünmek yerine , "yığın testi", bu terimlerin katsayılarının her ikisinin de sıfır olduğuna dair sıfır hipotezini test eden 2-df testidir. ). Bu test için p değeri, tarafından verilen 0.0037'dir anova(ols1).

O Not rmspakette, belirttiğiniz zorunda x2gibi terimler pol(x2, 2)için anova.rms()birlikte test edilecek olduğunu bilmek.

anova.rms()örneğin, rcs(x2, 3)kategorik öngörücü değişkenler kullanılarak kısıtlı kübik spline olarak temsil edilen öngörücü değişkenler için benzer testler yapacaktır . Ayrıca "parçalara" etkileşim terimlerini de içerecektir.

Alıntıda belirtildiği gibi genel "rakip" öngörücü değişkenler için bir yığın testi yapmak isterseniz, iki modeli ayrı ayrı takarak ve sonra kullanarak manuel olarak yapmanız gerekeceğine inanıyorum anova(model1, model2). [Düzenle: bu yanlış - Frank Harrell'in cevabına bakınız.]


2
(+1) Ayrı ayrı polinom terimlerini test etmenin sorunlu olabileceğine de dikkat etmek gerekir, çünkü özel durumlar dışında (tahminci, , sıfır etrafında simetrik olduğunda, ), diğer polinom terimleriyle (genellikle çok yüksek oranda) eşdeğerdirler. c o r ( X , X 2 ) = 0Xcor(X,X2)=0
Makro

Anlaşılır olması açısından, bunu bir veya daha fazla ortak anlamlılık açısından test ettiğiniz bir "Kısmi F testi" olarak öğretildiğimi düşünüyorum. Veya modelinizdeki bir değişken alt kümesinin daha kısıtlı model üzerinde gelişip gelişmediği (tıpkı bir olasılık oranı testi gibi). Doğrumuyum?
C. Pieters

@ C.Pieters Doğru olup olmadığını bilmiyorum, ama kulağa mantıklı geliyor.
mark999
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.