贝叶斯信息准则,通常缩写为BIC,是一个用来比较不同回归模型拟合程度的指标。
在实践中,我们对同一数据集拟合多个回归模型,并选择BIC值最低的模型作为最适合数据的模型。
我们使用下面的公式来计算BIC:
BIC: (RSS+log(n)dσ̂2)/n
其中
- d:预测因子的数量
- n:总观察值
- σ̂:回归模型中与每个响应测量相关的误差方差的估计值
- RSS:回归模型的残余平方和
- TSS:回归模型的总平方和
要在Python中计算几个回归模型的BIC,我们可以使用statsmodels.regression.linear_model.OLS()函数,它有一个叫做bic的属性,告诉我们一个给定模型的BIC值。
下面的例子显示了如何使用这个函数来计算和解释Python中各种回归模型的BIC。
例子:在Python中计算回归模型的BIC
假设我们想用mtcars数据集中的变量来拟合两个不同的多元线性回归模型。
首先,我们要加载这个数据集:
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
import pandas as pd
#define URL where dataset is located
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"
#read in data
data = pd.read_csv(url)
#view head of data
data.head()
model mpg cyl disp hp drat wt qsec vs am gear carb
0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
接下来,我们将拟合以下两个回归模型:
- 模型1:mpg = β0 + β1(disp)+ β2(qsec)
- 模型2:MPG = β0 + β1(disp)+ β2(wt)
下面的代码显示了如何拟合第一个模型并计算BIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'qsec']]
#add constant to predictor variables
x = sm.add_constant(x)
#fit regression model
model = sm.OLS(y, x).fit()
#view BIC of model
print(model.bic)
174.23905634994506
这个模型的BIC结果是174.239。
接下来,我们将拟合第二个模型并计算BIC:
#define response variable
y = data['mpg']
#define predictor variables
x = data[['disp', 'wt']]
#add constant to predictor variables
x = sm.add_constant(x)
#fit regression model
model = sm.OLS(y, x).fit()
#view BIC of model
print(model.bic)
166.56499196301334
这个模型的BIC结果是166.565。
由于第二个模型的BIC值较低,它是更好的拟合模型。
一旦我们确定这个模型是最好的,我们就可以继续拟合模型并分析结果,包括R平方值和β系数,以确定一组预测变量和响应变量之间的确切关系。
其他资源
另外两个常用于比较回归模型拟合度的指标是AIC和调整后的R-squared。
下面的教程解释了如何在Python中计算这些回归模型的每个指标: