繁体   English   中英

Python statsmodels返回值丢失

[英]Python statsmodels return values missing

我试图在简单的xy数据测试集上使用来自statsmodels的稳健线性模型。 但是,作为带有model.params的返回值,我只能得到一个单一值。 如何获得拟合的斜率和截距? 最小示例(其中我试图从拟合中排除异常值,因此从rlm中排除):

import statsmodels.api as sm
a = np.array([1,2,3,4,5,6,7,8,9])
b = 2. * np.array([1,2,9,4,5,6,7,13,9])
model = sm.RLM(b, a, M=sm.robust.norms.HuberT()).fit()
model.params

最后一行仅返回array([2.]) 我使用来自同一软件包的ols尝试了相同的操作,但确实得到了拦截和倾斜。

如果使用数组,则statsmodels不会自动添加常量或拦截。 有一个辅助函数add_constant来添加一个常量。

>>> import statsmodels.api as sm
>>> a = np.array([1,2,3,4,5,6,7,8,9])
>>> b = 2. * np.array([1,2,9,4,5,6,7,13,9])
>>> model = sm.RLM(b, a, M=sm.robust.norms.HuberT()).fit()
>>> model.params
array([ 2.])

用一个常数

>>> a2 = sm.add_constant(a)
>>> model = sm.RLM(b, a2, M=sm.robust.norms.HuberT()).fit()
>>> model.params
array([  2.85893087e-10,   2.00000000e+00])
>>> print model.summary()
...

除某些时间序列模型可以选择添加常数或趋势外,所有模型都相同。

在公式界面中,默认情况下会添加一个常量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM