【发布时间】:2019-10-09 05:36:49
【问题描述】:
我尝试为 AIC 手动编写公式。我想将它与 scikit learn 结合使用。为了测试我是否正确编码,我比较了给定相同数据集的 statsmodels 的 AIC 值。但是如果我比较模型 M1 和模型 M2,我的实现和 statsmodels 会产生不同的结果;不仅在数字上,而且 statsmodels AIC 更喜欢我的 AIC 之外的另一个模型。
我使用手动实现的残差平方和,并将其放入 AIC 公式中。 ols 是 scikit 的普通最小二乘估计器。索引 n 在数据集上运行,y_run(n) 是具有响应变量的第 n 个数据集,X_run(n) 是第 n 个输入训练数据集。最后一段代码是 statsmodel 的 AIC,其中 regr 是 statsmodels 普通最小二乘估计器。
def rss(n):
return ((y_run(n)-ols(n).predict(X_run(n)))**2).sum()
def AIC (n):
return len(X_run(n))*np.log(rss(n)/len(X_run(n)))+2*p
def AIC_regr (n):
return regr(n).aic
你能看出我的手动实现哪里有缺陷吗?
【问题讨论】:
标签: python-2.7 machine-learning scikit-learn statistics statsmodels