提前感谢您的帮助!
我有两个股票价格列表,例如:
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]
但是,我没有找到计算两个列表的协整的方法。
你能给我一些建议吗?
非常感谢!
答案 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:
中定义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
答案 1 :(得分:0)
请参阅此statsmodels拉取请求http://github.com/statsmodels/statsmodels/pull/453
答案 2 :(得分:0)