我的问题是: 当前,我的代码运行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()
答案 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。