在Statsmodels中指定常量线性回归?

时间:2014-10-23 18:26:28

标签: python regression linear-regression statsmodels

我想使用statsmodels.regression.linear_model.OLS 包进行预测,但具有指定的常量。

目前,我可以使用参数指定常量的存在:

(来自文档:http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLS.html

class statsmodels.regression.linear_model.OLS(endog,exog = None,missing ='none',hasconst = None),其中 hasconst 是布尔值。

我想要做的是明确指定一个常量C,然后在它周围拟合一个线性回归模型。从使用该OLS,我想生成一个然后访问所有属性,如resid等。

当前次优的解决方法是指定没有常量的OLS,从Y值中减去常量,并创建一个自定义对象,包含指定的常量和OLS w / o常量,每次我想要做预测或拟合,首先从Y变量中减去常数,然后使用预测。

谢谢!

1 个答案:

答案 0 :(得分:-1)

如果对statsmodel使用formula API,则可以更简洁地指定常量截距作为Patsy设计矩阵规范的一部分。这仍然有点hacky - 它基本上只是表达你提出的解决方案的一种更清洁的方式 - 但至少它更短。 E.g:

>>> import statsmodels.formula.api as smf
>>> import pandas as pd
>>> import numpy as np
>>> c = 3.1416
>>> df = pd.DataFrame(np.random.rand(10, 2), columns=['x', 'y'])
>>> ols = smf.ols('y - c ~ 0 + x', data=df)
>>> result = ols.fit()
>>> print result.summary()
...
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
x              0.7404      0.230      3.220      0.010         0.220     1.261
==============================================================================

如您所见,截距没有系数,x的最佳斜率不是1.