Apa itu tes chunk?

13

Sebagai jawaban atas pertanyaan tentang pemilihan model di hadapan multikolinieritas , Frank Harrell menyarankan :

Masukkan semua variabel dalam model tetapi jangan menguji efek dari satu variabel yang disesuaikan untuk efek variabel yang bersaing ... Tes chunk dari variabel yang bersaing kuat karena variabel collinear bergabung dalam keseluruhan uji derajat kebebasan berganda, bukannya bersaing satu sama lain seperti ketika Anda menguji variabel secara individual.

Apa itu tes chunk ? Bisakah Anda memberikan contoh aplikasi mereka r?

fmark
sumber
3
Saya membayangkan ini mengacu pada pengujian blok variabel pada suatu waktu, di mana semua collinearity potensial terjadi dalam sebuah blok, yang tidak memengaruhi tes omnibus seperti uji atau uji rasio kemungkinan, tetapi saya belum pernah mendengar istilah " uji potong ". F
Makro
2
Satu situasi yang saya lihat disarankan oleh mereka (dan telah saya lakukan sendiri) adalah ketika Anda memiliki serangkaian banyak variabel dummy yang saling eksklusif (misalnya variabel independen nominal dengan banyak kategori potensial). Tes koefisien individu apa pun yang terkait dengan variabel dummy tunggal tidak terlalu menarik, karena menguji kontras tertentu dengan apa pun yang Anda pilih sebagai baseline. Oleh karena itu tes yang lebih informatif adalah uji rasio kemungkinan model terbatas menghilangkan semua variabel dummy.
Andy W
2
Paging @FrankHarrell ...
fmark
Itu tidak berhasil, fmark. :)
kardinal
1
Sayang

Jawaban:

13

@ mark999 memberikan jawaban yang sangat baik. Selain menguji bersama istilah polinomial, Anda dapat bersama-sama menguji ("chunk test") serangkaian variabel apa pun. Misalkan Anda memiliki model dengan variabel collinear yang bersaing, lingkar tricep, pinggang, lingkar pinggul, semua ukuran ukuran tubuh. Untuk mendapatkan potongan tes ukuran tubuh secara keseluruhan, Anda bisa melakukannya

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

NAtricep, waist, hipR2

Frank Harrell
sumber
1
Terima kasih telah menunjukkannya pada Frank. Saya tidak tahu Anda bisa melakukan itu.
mark999
12

Komentar makro benar, seperti juga Andy. Ini sebuah contoh.

> 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              

Alih-alih mempertimbangkan x2dan x2^2istilah secara terpisah, "chunk test" adalah tes 2-df yang menguji hipotesis nol bahwa koefisien dari istilah-istilah tersebut sama-sama nol (saya percaya itu lebih umum disebut sesuatu seperti "uji-linear umum" ). Nilai p untuk tes tersebut adalah 0,0037 yang diberikan oleh anova(ols1).

Perhatikan bahwa dalam rmspaket, Anda harus menentukan x2persyaratan pol(x2, 2)untuk anova.rms()mengetahui bahwa mereka harus diuji bersama.

anova.rms()akan melakukan tes serupa untuk variabel prediktor yang direpresentasikan sebagai spline kubik terbatas menggunakan, misalnya rcs(x2, 3),, dan untuk variabel prediktor kategoris. Ini juga akan memasukkan istilah interaksi dalam "potongan".

Jika Anda ingin melakukan chunk test untuk variabel prediktor "pesaing" umum, seperti yang disebutkan dalam kutipan, saya yakin Anda harus melakukannya secara manual dengan memasang kedua model secara terpisah dan kemudian menggunakan anova(model1, model2). [Sunting: ini salah - lihat jawaban Frank Harrell.]

mark999
sumber
2
XcHair(X,X2)=0
Demi kejelasan, saya pikir saya diajarkan ini sebagai "F-test parsial" di mana Anda menguji 2 atau lebih variabel untuk signifikansi bersama. Atau apakah subset variabel dalam model Anda meningkat dari model yang lebih terbatas (seperti tes rasio kemungkinan). Apakah saya benar?
C. Pieters
@ C.Pieters Saya tidak tahu apakah Anda benar, tetapi kedengarannya masuk akal.
mark999