МНК статмоделей не работает с обратно пропорциональными данными?

Я пытаюсь выполнить обычную регрессию методом наименьших квадратов с некоторыми обратно пропорциональными данными, но мне кажется, что результат подгонки неверен?

import statsmodels.formula.api as sm
import numpy as np
import matplotlib.pyplot as plt

y = np.arange(100, 0, -1)
x = np.arange(0, 100)

result = sm.OLS(y, x).fit()
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(20, 4), sharey=True)
ax.plot(x, result.fittedvalues, 'r-')
ax.plot(x, y, 'x')

fig.show()

сюжет


person Andy Li    schedule 13.07.2014    source источник


Ответы (1)


Вы не добавляете константу, как предполагает документация, поэтому он пытается уместить все это как y = m x. Вы получаете m, который примерно равен 0,5, потому что он делает все возможное, учитывая, что вы должны быть 0 в 0 и т. д.

Следующий код (обратите внимание на изменение импорта)

import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt

y = np.arange(100, 0, -1)
x = np.arange(0, 100)
x = sm.add_constant(x)

result = sm.OLS(y, x).fit()
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(10, 8), sharey=True)
ax.plot(x[:,1], result.fittedvalues, 'r-')
ax.plot(x[:,1], y, 'x')

plt.savefig("out.png")

производит

график, показывающий совпадение

с коэффициентами [ 100. -1.].

person DSM    schedule 13.07.2014