O comentário da macro está correto, assim como o de Andy. Aqui está um exemplo.
> 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
Em vez de considerar os termos x2
e x2^2
separadamente, o "teste de chunk" é o teste de 2 df que testa a hipótese nula de que os coeficientes desses termos são zero (acredito que é mais comumente chamado de "teste F linear geral" ) O valor de p para esse teste é o 0,0037 dado por anova(ols1)
.
Observe que no rms
pacote, você precisa especificar os x2
termos pol(x2, 2)
para anova.rms()
saber que eles devem ser testados juntos.
anova.rms()
fará testes semelhantes para variáveis preditivas que são representadas como splines cúbicos restritos usando, por exemplo rcs(x2, 3)
, e para variáveis preditivas categóricas. Também incluirá termos de interação nos "chunks".
Se você quisesse fazer um teste de chunk para variáveis preditivas gerais "concorrentes", como mencionado na citação, acredito que você precisaria fazê-lo manualmente, ajustando os dois modelos separadamente e depois usando anova(model1, model2)
. [Editar: isso está incorreto - veja a resposta de Frank Harrell.]