贝叶斯信息准则,通常缩写为BIC,是一个用来比较不同回归模型拟合程度的指标。
在实践中,我们对同一数据集拟合多个回归模型,并选择BIC值最低的模型作为最适合数据的模型。
我们使用下面的公式来计算BIC。
BIC: (RSS+log(n)dσ̂2)/n
其中
- d:预测因子的数量
- n:总观察值
- σ̂:回归模型中与每个响应测量相关的误差方差的估计值
- RSS:回归模型的残余平方和
- TSS:回归模型的总平方和
下面的例子说明了如何在R中计算回归模型的BIC值。
第1步:查看数据
在这个例子中,我们将使用内置的MTCars数据集:
#view first six rows of mtcars dataset
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
第2步:拟合几个模型
接下来,我们将使用这个数据集拟合几个不同的回归模型:
#fit three different regression models
model1 <- lm(mpg ~ disp + hp, data = mtcars)
model2 <- lm(mpg ~ disp + qsec, data = mtcars)
model3 <- lm(mpg ~ disp + wt, data = mtcars)
第3步:选择BIC最低的模型
为了计算每个模型的BIC值,我们可以使用flexmix包的BIC()函数:
library(flexmix)
#calculate BIC of model1
BIC(model1)
[1] 174.4815
#calculate BIC of model2
BIC(model2)
[1] 177.7048
#calculate BIC of model3
BIC(model3)
[1] 170.0307
我们可以看到每个模型的BIC值:
- 模型1的BIC:174.4815
- 模型2的BIC:177.7048
- 模型3的BIC:170.0307
由于模型3的BIC值最低,我们将选择它作为最适合该数据集的模型。
其他资源
下面的教程解释了如何在R中拟合常见的回归模型:
如何在R中进行简单线性回归
如何在R中进行多元线性回归
如何在R中进行Logistic回归
如何在R中进行加权最小二乘回归