如何计算两个列表的协整?

时间:2010-05-24 09:39:10

标签: python statistics scipy

提前感谢您的帮助!

我有两个股票价格列表,例如:

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 :(得分:8)

我不相信scipy已经实施了协整检验。你可能最好用using rpy2将Python与R接口.R在urca package中提供协整检验。

例如:

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:

中定义ab
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 

答案 1 :(得分:0)

请参阅此statsmodels拉取请求http://github.com/statsmodels/statsmodels/pull/453

答案 2 :(得分:0)