如何使用收集的数据集为模拟研究生成输入参数?

时间:2019-07-03 12:05:56

标签: python simulation sampling resampling input-parameters

假设我有一个数据集S,其中包含不同工作的服务时间,例如S={t1,t2,t3,...,tn},其中ti是第i个工作的服务时间;和n我数据集中的总数。这个S只是一个总体样本。 n这是30万。我想研究长时间服务的影响,因为有些工作需要很长时间,有些则不需要。我的直觉是根据从真实系统收集的数据来研究这种影响。研究中的系统有数以亿计的工作,这个数字每几秒钟增加100个新工作。而且,服务时间是通过基准测试本地计算机上的作业来衡量的。因此,实际上,继续扩展数据集非常昂贵。因此,我决定随机提取300k。

我正在进行模拟实验,其中我必须根据其服务时间生成大量工作(例如数百万个),然后进行其他一些计算。

如何在模拟中使用S作为总体,我遇到了以下问题:

1-使用S本身。我可以使用引导程序“有替换的样本”或“无替换的样本”。

2-将理论分布模型拟合到S,然后从中提取。

我正确吗?哪种方法最好(利弊)?第一种方法似乎很简单,因为每次仅从S中选择一个随机服务时间?可靠吗?由于我还没有统计信息,因此可以提出任何建议。

1 个答案:

答案 0 :(得分:1)

this tutorial上的2007年冬季模拟会议上的报价:

  

乍一看,跟踪驱动的仿真似乎很有吸引力。那是   历史数据直接用作输入。很难争论   关于真实数据的分布有效性   模型中使用了实际系统。不过实际上   出于多种原因,它往往是一个糟糕的解决方案。历史数据可能   昂贵或无法提取。它肯定不会可用   数量无限,这大大减少了统计数据   分析是可能的。存储要求很高。最后,但不是   至少,不可能评估“假设”策略或尝试   模拟一个预期系统,即一个尚不存在的系统。

  1. 模拟的主要用途之一是研究替代配置或策略,而跟踪数据不适合该模拟或跟踪策略,它只能向您显示当前的运行方式。跟踪数据不能用于研究正在考虑但尚不存在的系统。
  2. 引导程序将对现有数据进行重新采样。这消除了数据量限制,但有潜在的成本。自举的前提是您的数据具有代表性和独立性。前者对于30万观察值可能不是问题,但由于成本或可用性问题而导致样本量较小时,通常会出现这种情况。如果您的数据来自观测值是串行相关或非均匀的时间序列,那么后者就很重要。在这种情况下,独立的随机采样(而不是顺序播放)可能会丢失有关正在研究的行为的大量信息。
  3. 如果需要顺序播放,您将回到限于30万个观测值,而数据量可能不如您认为的统计量那么多。方差估计对于计算置信区间的误差范围至关重要,而序列相关性对样本均值的方差有很大的影响。与独立数据相比,获得有效的置信区间估计可能需要多几个数量级的数据。

总而言之,分布拟合需要花更多的精力,但从长远来看通常更有用。