在statsmodels的ols中修复截距

4
在Python的statsmodels.formula.api中,ols功能自动包括并估计截距:
results = sm.ols(formula="s ~ x + y + z", data=somedata).fit()
results.params
(* Intercept 0.632646, x -1.258761, y 0.465076, z 0.497991 *)

因为我正在使用线性概率模型,有没有办法将截距固定在0.5?

1个回答

5
您可以通过以下2个步骤重现此行为:
  1. 从您的目标值中减去predefined_intercept
  2. 在公式中包含“-1”,并拟合OLS模型,不要包含截距项

最简示例:

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

请参考官方公式示例笔记本,了解详细说明和更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接