我正在尝试编写一段给出两个数字列表的代码,找到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
答案 0 :(得分:0)
在阅读WikiPedia page on simple regression时,很明显
beta = cov(x,y)/ var(x)
您只计算cov(x,y),但不除以var(x)
一个解决方案是
bmreturns.cov(stockreturns) / bmreturns.var()