簡體   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