创建一个循环以稳定

2024-06-11 06:30:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是: 目前,我的代码运行dickey-fuller测试,如果p值大于0.05,则对数据进行差异化处理,但是我需要它重新运行dickey-fuller测试,如果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()

Tags: of数据keytestdfvalueusedfuller
1条回答
网友
1楼 · 发布于 2024-06-11 06:30:03

您可能希望检查while循环,并在一般情况下执行while循环,而不仅仅是python。您希望循环永远继续,直到diff产生测试结果<;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呢?你知道吗

进一步阅读^{} statement。你知道吗

相关问题 更多 >