繁体   English   中英

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

[英]How to compute AIC for linear regression model in Python?

我想为线性模型计算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错误中divide by zero encountered in log

sklearnLinearRegression非常适合预测,但是您已经发现了相当准系统。 (通常说sklearn远离所有统计推断。)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM