[英]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.