numpy 如何使用PYTHON生成类似Covid案例的虚拟数据?

ttcibm8c  于 2022-11-10  发布在  Python
关注(0)|答案(1)|浏览(91)

我想生成一个具有可变增量速率的随机数据,而不是固定的,这样它就像真实世界一样。

提前谢谢你
我不能得到像上面这样的分发

vxqlmq5t

vxqlmq5t1#

  • 就如此敏感的主题生成简明的数据并非易事。我用一个纯粹的示例性例子来回答这个问题,但我建议你阅读科学出版物,这些出版物很好地解释了这类研究背后的基本统计标准
  • 一个好方法是根据真实的大流行数据训练一个机器学习模型,然后让它产生时间序列预测。*

如果我们想要构建一个玩具数据集,基于我们对Covid的了解,我们可以使它类似于具有任意峰值的高斯趋势。我们可以使用numpy.random.normal来生成此数据。
某些参数必须强制设置:
1.生成数据的天数。
1.最大值可以达到峰值(我们不想有100亿次传染!)
1.峰值数量(可选)。
我举的例子真的很简单,但我认为它可以代表我们在这次大流行期间所经历的不可预测性,以满足“可变增量不固定”的要求。

import numpy as np
import matplotlib.pyplot as plt
import datetime
import random

base = datetime.datetime.today()

numdays = 100
date_list = [base - datetime.timedelta(days=x) for x in range(numdays)]

num_of_peaks = 5
max_of_peak = 5000
peaks = [random.randint(0, max_of_peak) for x in range(num_of_peaks)]

all_data = []
for p in peaks:
    all_data.extend(np.random.normal(p, p//10, size=numdays//num_of_peaks))

print(all_data)
plt.plot(date_list, all_data)
plt.show()

以下是几乎完全随机生成的3个可能结果的图像:

对我手工输入的参数进行干预可能是有意义的,以使高斯图更平滑一点,得到更像鼻窦状的图案。但再说一次,这完全是一个玩具数据集。

相关问题