Что такое чанк-тесты?

13

В ответ на вопрос о выборе модели в наличии мультиколлинеарности , Франк Харрелл предложил :

Поместите все переменные в модель, но не проверяйте влияние одной переменной, скорректированной с учетом влияния конкурирующих переменных ... Кусочные тесты конкурирующих переменных являются мощными, потому что коллинеарные переменные объединяют силы в общем тесте ассоциации множественной степени свободы вместо конкурировать друг с другом, как при тестировании переменных по отдельности.

Что такое чанк-тесты ? Можете ли вы привести пример их применения в r?

fmark
источник
3
Я предполагаю, что это относится к тестированию блоков переменных одновременно, когда вся потенциальная коллинеарность происходит внутри блока, что не влияет на комплексные тесты, такие как -тест или тест отношения правдоподобия, но я никогда не слышал термин " чанк тест ". F
Макро
2
Одна ситуация, которую я видел, как они предлагали (и сделал это сам), - это когда у вас есть серия из множества взаимоисключающих фиктивных переменных (например, номинальная независимая переменная со многими потенциальными категориями). Проверка любого отдельного коэффициента, связанного с любой фиктивной переменной, не очень интересна, поскольку она проверяет определенный контраст с тем, что вы выбираете в качестве базовой линии. Следовательно, более информативным тестом является тест отношения правдоподобия ограниченной модели, в котором пропущены все фиктивные переменные.
Энди У
2
Пейджинг @FrankHarrell ...
fmark
Это не работает, Фрэнк. :)
кардинал
1
Позор, это должно быть :)
Fmark

Ответы:

13

@ mark999 предоставил отличный ответ. В дополнение к совместному тестированию полиномиальных терминов, вы можете совместно протестировать («chunk test») любой набор переменных. Предположим, у вас была модель с конкурирующими коллинеарными переменными: окружность трицепса, талия, окружность бедра, все измерения размера тела. Чтобы получить общий тест на размер тела, вы можете сделать

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

NAtricep, waist, hipR2

Фрэнк Харрелл
источник
1
Спасибо, что указал на это, Фрэнк. Я не знал, что ты мог сделать это.
mark999
12

Комментарий Макроса правильный, как и Энди. Вот пример.

> 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              

Вместо того , чтобы рассматривать x2и x2^2термины по отдельности, «тест кусок» является тест 2-ДФ , который проверяет нулевую гипотезу о том , что коэффициенты этих терминов равны нулю (я считаю , что это чаще называют что - то вроде «общего линейного F-тест» ). Значение p для этого теста равно 0,0037, заданному как anova(ols1).

Обратите внимание , что в rmsпакете, вы должны определить x2условия , как pol(x2, 2)для , anova.rms()чтобы знать , что они должны быть проверены вместе.

anova.rms()проведет аналогичные тесты для переменных-предикторов, которые представлены как ограниченные кубические сплайны с использованием, например rcs(x2, 3), и для категориальных переменных-предикторов. Это также будет включать в себя термины взаимодействия в «кусках».

Если вы хотите выполнить тестовый блок для общих «конкурирующих» переменных предиктора, как упомянуто в цитате, я считаю, что вам придется делать это вручную, подбирая две модели по отдельности, а затем используя anova(model1, model2). [Редактировать: это неверно - см. Ответ Фрэнка Харрелла.]

mark999
источник
2
Xcor(X,X2)=0
Для ясности, я думаю, что меня учили этому как «Частичный F-тест», где вы проверяете 2 или более переменных на совместную значимость. Или улучшится ли подмножество переменных в вашей модели по сравнению с более ограниченной моделью (как тест отношения правдоподобия). Я прав?
С. Питерс
@ C.Pieters Я не знаю, правы ли вы, но звучит разумно.
mark999