【问题标题】:Fixing the intercept in statsmodels ols修复 statsmodels ols 中的截距
【发布时间】:2018-12-05 16:20:54
【问题描述】:

在 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?

【问题讨论】:

    标签: statsmodels


    【解决方案1】:

    您可以通过 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

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 2020-11-23
      • 2023-02-15
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-02
      • 2021-09-20
      • 2021-10-05
      相关资源
      最近更新 更多