【问题标题】:How to compute AIC for linear regression model in Python?如何在 Python 中计算线性回归模型的 AIC?
【发布时间】:2017-12-15 11:35:06
【问题描述】:

我想计算线性模型的 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 错误。

【问题讨论】:

    标签: python linear-regression


    【解决方案1】:

    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)
    

    来源是here,如果您正在寻找另一种手动编写方式,同时仍在使用sklearn

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 2016-07-23
      • 2018-02-26
      • 2021-11-11
      • 2021-09-02
      • 2017-09-13
      • 2020-06-03
      • 2021-10-17
      相关资源
      最近更新 更多