如何计算两个列表的协整?
提前感谢你的帮助!
我有两个股票价格的列表,比如:
a = [10.23, 11.65, 12.36, 12.96]
b = [5.23, 6.10, 8.3, 4.98]
我可以用以下方法计算这两个列表的相关性:
import scipy.stats
scipy.stats.pearsonr(a, b)[0]
但是,我没有找到计算这两个列表的协整的方法。
你能给我一些建议吗?
非常感谢!
3 个回答
0
这里有一个很不错的关于检验协整的例子,你可以在这个链接找到:http://nbviewer.jupyter.org/github/mapsa/seminario-doc-2014/blob/master/cointegration-example.ipynb
0
请查看这个关于statsmodels的请求:http://github.com/statsmodels/statsmodels/pull/453
8
我觉得在scipy里没有实现协整测试。你可以考虑使用用rpy2
来让Python和R进行连接。R里面有提供协整测试的功能,属于urca
包。
比如说:
import rpy2.robjects as ro
r=ro.r
a = [10.23, 11.65, 12.36, 12.96]
b = [5.23, 6.10, 8.3, 4.98]
在R里定义a
和b
:
ro.globalEnv['a']=ro.FloatVector(a)
ro.globalEnv['b']=ro.FloatVector(b)
调用R的cor
(相关性)函数:
print(r('cor(a,b,method="pearson")'))
# [1] 0.2438518
调用R的ca.po
(Phillips & Ouliaris协整测试)
r('library(urca)')
print(r('ca.po(cbind(a,b))'))
# ########################################################
# # Phillips and Ouliaris Unit Root / Cointegration Test #
# ########################################################
# The value of the test statistic is: 0
不过我对协整不是很熟悉,所以如果我用ca.po
的方式不对,请见谅。
另外要注意,R是一个独立的编程语言,目前它的统计函数库比scipy
要丰富。你也可以直接运行R(不需要Python)。这样调用的方式会简单一些:
> a = c(10.23, 11.65, 12.36, 12.96)
> b = c(5.23, 6.10, 8.3, 4.98)
> z = cbind(a,b)
> z
a b
[1,] 10.23 5.23
[2,] 11.65 6.10
[3,] 12.36 8.30
[4,] 12.96 4.98
> ca.po(z)
########################################################
# Phillips and Ouliaris Unit Root / Cointegration Test #
########################################################
The value of the test statistic is: 0