创建循环以平稳处理数据

时间:2018-12-19 15:00:56

标签: python

我的问题是: 当前,我的代码运行dickey fuller测试,并且如果p值大于0.05,则对数据进行差分,但是我需要它重新运行dickey-fuller test,如果p值仍然大于,则再次对数据进行差分。 0.05,然后继续执行直到满足p值小于0.05的条件

我有一个时序数据的数据框。为了确定它是否静止,我使用以下代码执行了dickey fuller测试:

print("Results of Dickey Fuller Test")
dftest=adfuller(df['I'],autolag='AIC' )
dfoutput=pd.Series(dftest[0:4], index=['Test statistic', 'p-value', '# Lags    Used', 'Number of Observations Used'])
for key, value in dftest[4].items():
dfoutput['Critical Value (%s)' %key ]=value

在迪基·富勒(Dickey Fuller)测试中,如果p值大于0.05,则表示数据不稳定,可以对数据进行求差以使其稳定。 我想创建一个循环,以运行dickey-fuller测试,如果p值大于0.05,则数据会有所不同,并且一直持续到p值小于0.05。

这是我到目前为止写的:

if dfoutput['p-value']>0.05:
   df.diff()

1 个答案:

答案 0 :(得分:1)

您可能想检查一般的while循环和do-while循环,而不仅仅是python。您希望循环一直持续下去,直到差异导致测试<0.05。

dftest=adfuller(df['I'], autolag='AIC')
while True:
    dfoutput=pd.Series(dftest[0:4], index=['Test statistic', 'p-value', '# Lags    Used', 'Number of Observations Used'])
    if dfoutput['p-value'] > 0.05:
        df.diff()
    else:
        break

如果正好是0.05,该怎么办?

进一步阅读break statement