【问题标题】:Find the sum of the residuals求残差之和
【发布时间】:2020-01-23 08:26:30
【问题描述】:

我正在 Fresco Play 中使用 Python 练习 Poissons Regression of Stats。 问题陈述如下: 从 MASS 包中加载 R 数据集 Insurance。 将数据捕获为 pandas 数据框。 使用自变量的对数构建泊松回归模型 持有人和因变量索赔。 用数据拟合模型,求残差之和。

我坚持最后一行,即残差总和

我使用了np.sum(model.resid)。但不接受答案

这是我的代码

import statsmodels.api as sm
import statsmodels.formula.api as smf
import numpy as np

INS_data = sm.datasets.get_rdataset('Insurance','MASS').data
model = smf.poisson('Claims ~ np.log(Holders)', INS_data).fit()
print(np.sum(model.resid))

【问题讨论】:

  • 你在使用np.sum的时候有没有报错?还是没有给出正确的答案?
  • @cenh 我得到了答案。没有错误。但不接受答案。
  • 你需要一个总和还是一个累积总和?
  • @Dalen 根据问题,应该是总和。
  • model.resid 采用什么形式?什么样的数据容器及其值类型和范围?你看了吗?尝试 np.cumsum() 而不是 np.sum(),以防万一。

标签: python regression statsmodels poisson


【解决方案1】:

我在 Python2 中运行的代码给出了错误的答案,但在 Python3 中运行它给出了正确的答案。我不知道原因,但代码在 Python3 中完美运行

【讨论】:

  • @这对我不起作用。我在 Python 3 环境中尝试过。我低于输出,是否正确?优化成功终止。当前函数值:3.468160 Iterations 7 6.679101716144942e-13
【解决方案2】:

对于残差,您可以使用残差的基本概念,即实际 - 预测

这里是代码sn-p。

import statsmodels.api as sm
import numpy as np
import statsmodels.formula.api as smf
Insurance = sm.datasets.get_rdataset('Insurance','MASS')
data = Insurance.data
data['Holders_'] = np.log(data['Holders'])
model = smf.poisson('Claims ~ Holders_',data).fit()
y_predicted = p.predict(data['Holders_'])
residual = (data['Claims']-y_predicted)
print(sum(residual))

output

【讨论】:

    【解决方案3】:

    经过多次搜索后,我才知道它期望累积总和,所以使用 np.cumsum(model.resid) 它将在 Frescoplay 中通过

    【讨论】:

    • 请更新你答案的语法,很难理解
    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 2020-03-25
    • 2018-01-11
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多