修复statsmodels ols中的拦截

时间:2018-06-26 21:15:25

标签: statsmodels

在Python的i中,ols功能自动包括并估计截距:

statsmodels.formula.api

因为我在线性概率模型中使用它,有什么方法可以将截距固定为0.5?

1 个答案:

答案 0 :(得分:3)

您可以通过2个步骤来重现此行为:

  1. 从目标中减去predefined_intercept
  2. 适合OLS而无需拦截:在公式中添加“ -1”

最小示例:

from statsmodels.formula.api import ols
import pandas as pd
import numpy as np

n_samples = 100
predefined_intercept = 0.5

somedata = pd.DataFrame(np.random.random((n_samples, 3)), columns = ['x', 'y', 'z'])
somedata['s'] = somedata['x'] - 2 * somedata['y'] + 5 * somedata['z'] - predefined_intercept

results = ols(formula="s ~ x + y + z - 1", data=somedata).fit()
print(results.params)

输出:

x    0.671561
y   -2.315076
z    4.759542

有关详细说明和更多信息,请参见官方example notebook on formulas