使用numpy / pandas的回归线的斜率

时间:2019-05-08 15:58:12

标签: python numpy

我正在尝试编写一段给出两个数字列表的代码,找到beta coefficient。这可以通过找到直线的斜率或使用两个列表的协方差来完成。我尝试了np.cov(),但它给了我与预期不同的结果(该值应接近1)。 Excel的slope function正在正确地计算它,但是我试图在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 :(得分:0)

在阅读WikiPedia page on simple regression时,很明显

beta = cov(x,y)/ var(x)

您只计算cov(x,y),但不除以var(x)

一个解决方案是

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