adfuller测试的平稳性,并使用列表中的字典返回固定时间序列

时间:2019-02-04 17:45:32

标签: pandas list dictionary statsmodels

我有一个股票价格数据框,我想做的是使用from statsmodels.tsa.stattools import adfuller对每只股票进行dickey fuller平稳性测试,然后我想建立一个由合格股票组成的清单此平稳性测试。下面是我用来执行测试的代码:

X = prices.values
X = log(X)
result = adfuller(X)
print('ADF Statistic: %f' % result[0])
print('p-value: %f' % result[1])
for key, value in result[4].items():
    print('\t%s: %.3f' % (key, value))

例如,此代码将产生如下输出:

ADF Statistic: -2.440780
p-value: 0.130556
    1%: -3.437
    5%: -2.864
    10%: -2.568

尽管打印result为我们提供了更详细的(-2.441777051823896, 0.13029053843698696, 21, 978, {'1%': -3.437054035425408, '5%': -2.8644997864059363, '10%': -2.5683459429326576}, -7710.868442126897)

您会看到结果中间有一个字典,要使股票稳定,第一个数字(result[0])必须小于字典中的3个值。所以我想做的是迭代并说出result[0]是否低于字典中键'1%''5%''10%'的值,向上result[4]返回股票名称,然后我希望将其放在单独的列表中。但是,我之前并没有真正在列表中找到字典,因此我有些困惑。我通常对循环和将内容添加到字典/列表很满意,如果我们可以想象一秒钟result[4]是一个简单的数字而不是字典,那么我尝试的代码将是这样的:

stationary_stocks = []

for stock in stocks:
   if result[0] < result[4]
   stationary_stocks.append(stock)

但是,正如我们在result[4]上面所看到的,实际上是一本字典,可以说我不确定如何进入其中。

因此,总而言之,我想创建一个包含result[0]低于result[4]中构成字典的所有值的股票的列表。任何帮助将不胜感激。干杯

0 个答案:

没有答案