繁体   English   中英

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

[英]Specifying a Constant in Statsmodels Linear Regression?

我想使用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值中减去常量,并创建一个自定义对象,该对象在每次我想进行预测或拟合,首先从Y变量中减去常数,然后使用预测。

谢谢!

如果将formula API用于statsmodels,则可以将其作为Patsy设计矩阵规范的一部分更简洁地指定一个常量截距。 这仍然有点怪异-基本上只是表达您提出的解决方案的一种更简洁的方式-但至少它更短。 例如:

>>> 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。

暂无
暂无

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

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