用随机游动生成时间序列的合成数据

来源:DeepHub IMBA 本文约1300字,建议阅读5分钟 本文带你利用一维随机游走为时间序列算法生成数据。
随机游走是随机过程。它们由数学空间中的许多步骤组成。最常见的随机游走从值 0 开始,然后每一步都以相等的概率加或减 1。
生成数据
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport randomDATE_START = '2019-01-01'DATE_END = '2019-12-31'dates = pd.date_range(DATE_START, DATE_END)df = pd.DataFrame({'date': dates,'value': np.random.normal(0,1,dates.size)})df.set_index('date', inplace=True)plt.plot(df['value'])plt.ylabel('Value')plt.xlabel('Date')plt.title('Random Values')plt.show()

随机游走
def random_walk(df, start_value=0, threshold=0.5,step_size=1, min_value=-np.inf, max_value=np.inf):previous_value = start_valuefor index, row in df.iterrows():if previous_value < min_value:previous_value = min_valueif previous_value > max_value:previous_value = max_valueprobability = random.random()if probability >= threshold:df.loc[index, 'value'] = previous_value + step_sizeelse:df.loc[index, 'value'] = previous_value - step_sizeprevious_value = df.loc[index, 'value']return df

修改随机游走

随着时间的推移增加波动性是通过在每个步骤后增加少量步长来实现的。因此,随着时间的推移,步长会慢慢变大。 平滑行走也可以通过修改步长来实现,但也可以通过在正步之后增加大小并在负步之后将大小减小一个小值来实现。

总结
编辑:黄继彦
评论
