R-如何在ANOVA输出中显示空模型

问题描述

假设您已在R中拟合了具有截距项的模型。当您在模型上调用anova函数时,在添加拦截项之前,它甚至不会显示空模型,甚至不会显示仅包含拦截的模型。下面是使用简单线性回归的示例。

#Generate random dataset
set.seed(1)
n   <- 100
b0  <- 10
b1  <- 3
sig <- 4
xx  <- 10*runif(n)
ee  <- sig*rnorm(n)
DATA <- data.frame(x = xx,y = b0 + b1*xx + ee)

#Fit a linear model
MODEL <- lm(y ~ 1 + x,data = DATA)

#Show the ANOVA
anova(MODEL)

Analysis of Variance Table

Response: y
          Df Sum Sq Mean Sq F value    Pr(>F)    
x          1 6922.1  6922.1  488.52 < 2.2e-16 ***
Residuals 98 1388.6    14.2                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

我想为模型生成ANOVA表,其中包含两个额外的预备行,从使用空模型没有截取的第一行开始,然后使用该模型显示第二行与拦截。然后,上面显示的其余输出将从ANOVA表的第三行开始。

最简单的方法是什么?

解决方法

MODEL1 <- lm(y ~ -1,data = DATA)
MODEL2 <- lm(y ~  1,data = DATA)
MODEL3 <- lm(y ~  x,data = DATA)
anova(MODEL1,MODEL2,MODEL3)