Коментар Макрона правильний, як і Енді. Ось приклад.
> 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 df, який перевіряє нульову гіпотезу про те, що коефіцієнти цих термінів є і нульовими (я вважаю, що це частіше називають чимось на кшталт "загального лінійного F-тесту" ). Значення р для цього тесту - 0,0037, задане anova(ols1)
.
Зверніть увагу , що в rms
пакеті, ви повинні визначити x2
умови , як pol(x2, 2)
для , anova.rms()
щоб знати , що вони повинні бути перевірені разом.
anova.rms()
зроблять аналогічні тести для змінних предиктора, які представлені у вигляді обмежених кубічних сплайнів, використовуючи, наприклад rcs(x2, 3)
, та для категоричних змінних провісника. Він також буде включати терміни взаємодії в "шматки".
Якщо ви хотіли зробити тестовий фрагмент для загальних "конкуруючих" змінних прогнозів, як згадується у цитаті, я вважаю, що вам доведеться зробити це вручну, встановивши дві моделі окремо, а потім використовуючи anova(model1, model2)
. [Редагувати: це неправильно - див. Відповідь Френка Гаррелла.]