如何在Python中计算线性回归模型的AIC?

时间:2017-07-11 11:58:25

标签: python linear-regression

我想为线性模型计算AIC以比较它们的复杂性。我这样做了:

regr = linear_model.LinearRegression()
regr.fit(X, y)

aic_intercept_slope = aic(y, regr.coef_[0] * X.as_matrix() + regr.intercept_, k=1)

def aic(y, y_pred, k):
   resid = y - y_pred.ravel()
   sse = sum(resid ** 2)

   AIC = 2*k - 2*np.log(sse)

return AIC

但我收到divide by zero encountered in log错误。

1 个答案:

答案 0 :(得分:8)

sklearn LinearRegression statsmodels.regression.linear_model.OLS对预测有好处,但是你已经发现了很好的准系统。 AIC具有属性属性X和许多其他预先设定的属性。

但是,请注意,您需要手动将单位向量添加到from statsmodels.regression.linear_model import OLS from statsmodels.tools import add_constant regr = OLS(y, add_constant(X)).fit() print(regr.aic) 矩阵,以在模型中包含截距。

sklearn

如果您正在寻找另一种在使用ui->tableView_visitRep->model()->rowCount()时手动编写的方式,则来源为here