Заранее спасибо за помощь!
У меня есть два списка с некоторыми ценами запасов, примером:
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]
Но, я не сделал нашел, что метод вычислил коинтеграцию двух списков.
Вы могли дать мне некоторые советы?
Большое спасибо!
Я не верю, что для 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]
Определите a
и b
в R:
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