gpt4 book ai didi

python-2.7 - 手动计算的 AIC 与 statsmodel AIC 不同

转载 作者:行者123 更新时间:2023-11-30 09:04:22 28 4
gpt4 key购买 nike

我尝试手动编写 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

你能看出我的手动实现有缺陷吗?

最佳答案

我认为这只是定义上的差异。

statsmodels 在 aic 的定义中使用对数似然,而不是 rssstatsmodels.tools.eval_measures 具有两种定义。

信息标准通常仅用于比较同一模型的不同版本,特别是不同数量的解释变量。在这种情况下,模型版本中不变的项通常会被删除。然而,statsmodels 在信息标准的计算中使用完整的对数似然定义。这还允许跨模型进行比较。

aic 定义的第二个问题是它是否除以观测值的数量。这也因统计包而异。

关于python-2.7 - 手动计算的 AIC 与 statsmodel AIC 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261765/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com