【问题标题】:Trouble shooting robust regression model created from a OLS model in Statsmodel对从 Statsmodel 中的 OLS 模型创建的稳健回归模型进行故障排除
【发布时间】:2019-02-06 01:07:36
【问题描述】:

我无法在 python 中使用 Statsmodel 运行稳健的回归模型。

以下 OLS 模型有效:

model_name = sm.ols(formula="depenent ~ var1 * var2 + var3", data=data).fit()

我试过跑步:

model_name= sm.RLM(formula="depenent ~ var1 * var2 + var3", data=data).fit()

但我收到以下类型错误:

TypeError: __init__() missing 2 required positional arguments: 'endog' and 'exog'

我通读了这份文档: https://www.statsmodels.org/dev/rlm.html 但我仍在为代码苦苦挣扎。我愿意使用其他软件包,例如 Scikit

谢谢。

【问题讨论】:

  • 你应该包含错误信息——或者更多地解释你所说的“但它不起作用”的意思
  • 已修复,感谢提醒

标签: python statistics regression statsmodels robust


【解决方案1】:

如果smstatsmodels.api,则ols 版本将不起作用。 statsmodels.api 只有OLS(类名大写)

公式函数是小写的,即从statsmodels.formula.api导入的rlm。这只是类方法RLM.from_formula 的别名。

大写字母的 RLM 是类的名称,它不直接支持公式,需要 numpy 数组或 pandas DataFrames 或 Series。

例如见http://www.statsmodels.org/devel/examples/notebooks/generated/formulas.html

注意the formula.api 小写对象被简单地定义为别名,例如对于 OLS/ols 和 RLM/rlm

import statsmodels.regression.linear_model as lm_
import statsmodels.robust.robust_linear_model as roblm_

ols = lm_.OLS.from_formula
rlm = roblm_.RLM.from_formula

【讨论】:

  • 如何打印出 r^2、调整后的 r^2 和 f 检验数据?谢谢。
  • (这是一个不同的问题。)statsmodels RLM 没有这些。 wald_test 可用于计算斜率系数的联合假设检验。我从来没有为 RLM 看过 Rsquared,但我想它可以类似于 WLS 来定义,但目前还没有计算出来。
猜你喜欢
  • 2015-12-12
  • 2019-11-03
  • 2017-05-03
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 2020-12-08
相关资源
最近更新 更多