我在使用Statsmodel在python中运行健壮的回归模型时遇到麻烦。
以下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
谢谢。
答案 0 :(得分:1)
如果ols
为sm
,则statsmodels.api
版本不起作用。 statsmodels.api
仅具有OLS
(类名的大写字母)
公式函数是小写字母,即rlm
是从statsmodels.formula.api
导入的。这只是类方法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