模拟正态分布的数据均值遵循 Arctan 曲线超时

Simulating data of a normal distribution that's mean follows Arctan curve overtime

我想创建一个正态分布列表列表,其中包含给定的开始均值、样本大小和标准差,但均值动态遵循反正切曲线在随后的 iterations/lists.

考虑:

np.random.normal(5, 1.5, size=(52, 400))

array([[5.91413507, 6.03442582, 5.13545575, ..., 4.70864259, 4.46786696,
        5.907657  ],
       [5.96475187, 2.78293757, 6.6995019 , ..., 6.75333878, 4.40617338,
        5.78887913],
       [2.24474929, 4.86493468, 4.81687713, ..., 4.64654325, 4.52163674,
        3.65247517],
       ...,
       [8.26692519, 4.17375668, 6.53084905, ..., 3.52156159, 2.81350621,
        5.1208226 ],
       [2.1335012 , 3.84207539, 4.5672884 , ..., 5.86160579, 1.59491514,
        2.31374464],
       [4.28164175, 5.30687236, 3.32682318, ..., 6.54310196, 2.36919655,
        6.23774753]])

以上输出一个包含 52 个列表的数组,每个列表有 400 个数据点,每个 52 个数据点的平均值为 5,标准差为 1.5。

但我希望能够仅在 start 处获得平均值,然后在这 52 次迭代中按照反正切函数动态增加,同时保持样本大小和每个后续列表的标准偏差常数。

如何做到这一点?

arctan-pi/2+pi/2,所以如果我理解正确的话,你希望平均值从 55 + pi .如果是这样你可以做到

mean = 5
sd = 1.5
means = np.arctan(np.linspace(-4, 4, 52)) + np.pi/2 + mean
a = np.random.normal(means, sd, size=(400, 52)).T

这为您提供了一个包含 52 行和 400 列的数组,行的平均值从第 0 行的 5 开始,并根据 arctan 函数增加到第 51 行的 5 + pi。每行的标准偏差为 1.5.