Наклон линии регрессии с использованием numpy / pandas - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь написать кусок кода, который, учитывая два списка чисел, находит коэффициент бета . Это можно сделать, найдя наклон линии или используя ковариацию двух списков. Я попытался np.cov(), но это дало мне результаты, отличные от ожидаемых (значение должно быть близко к 1). Функция slope в Excel вычисляет правильно, но я пытаюсь сделать то же самое в numpy. Как я могу рассчитать наклон со многими точками, похожими на то, что делает функция Excel?

# both of these are lists (same size) of numbers 
bmreturns = merged['Close-bm'].pct_change()
stockreturns = merged['Close-s'].pct_change()

# incorrect value (too small) - maybe because it's normalized
print(bmreturns.cov(stockreturns))

##=SLOPE({2,4,6}, {10,20,30}) = 0.2

1 Ответ

0 голосов
/ 08 мая 2019

При чтении страницы WikiPedia по простой регрессии становится ясно, что

бета = cov (x, y) / var (x)

Вы вычисляете только cov (x, y), но не делите на var (x)

Решение будет

bmreturns.cov(stockreturns) / bmreturns.var()

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