Исправление перехвата в statsmodels ols - PullRequest
0 голосов
/ 27 июня 2018

В 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 Ответ

0 голосов
/ 27 июня 2018

Вы можете воспроизвести это поведение в 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

См. Официальный пример тетради по формулам для подробных объяснений и др.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...