给定序列的均值和方差,如何生成具有确定性随机游走和漂移的时间序列数据?

时间:2018-08-18 12:25:02

标签: python time-series random-walk

我得到了均值和方差。我需要根据给定的变量产生确定性的随机游动。这些是时间序列数据的预期属性:

  1. 平均值:27.57020098
  2. 中位数:27.815
  3. 标准开发:5.106888439
  4. 差异:26.08030952
  5. 最大:43.92
  6. 最低:0
  7. 范围:43.92

我尝试了以下方法,

    steps = np.random.normal(loc=0, scale=5.034, size=1000) #std =5.304
    steps[0]=0
    P = 27.50 + np.cumsum(steps) #mean =27.5
    plt.plot(P)
    plt.title("Simulated Random Walk")
    plt.show()

哪个生产

Random Walk

2 个答案:

答案 0 :(得分:0)

让我们考虑可能值的数量为n。您的函数返回一个自然数,0 <= i

i = t mod n

现在,获取第i个可能的值。您需要将最小偏移量(1000)添加到结果中并获取第i个数字。

编辑:

如果您知道最小数量为1000,而第i个元素与第(i +1)个元素之间的间隔正好是k(正态分布),则使用的公式将为

结果= 1000 + i * k

答案 1 :(得分:0)

使用标准库,您可以每次为随机函数添加相同的值,从而使序列具有确定性。我提供了一个说明原理的示例。

import random

seed = 'pseudo-random'          # Can be anything
random.seed(a=seed, version=2)  # Use the same seed every time

float_list = []    # List to contain a small sample of  values
mean =  27.57020098
dev = 5.106888439

for x in range(20):
    value = random.gauss(mean, dev)
    if value > 43.92: value = 43.92 # Limit max value
    if value < 0: value = 0         # Limit min value
    float_list.append('{:.3f}'.format(value))

print(float_list)

我不知道np是否允许这种每次使用相同种子的方式。