创建合成数据集的一些标准做法是什么?

机器算法验证 造型 可重复研究 合成数据
2022-01-26 08:08:02

作为上下文:在处理非常大的数据集时,有时有人问我是否可以创建一个合成数据集,在其中我们“知道”预测变量和响应变量之间的关系,或预测变量之间的关系。

多年来,我似乎遇到过一次性的合成数据集,它们看起来像是以特别的方式制作的,或者更结构化的数据集似乎特别有利于研究人员提出的建模方法。

我相信我正在寻找创建合成数据集的标准方法。尽管自举重采样是创建合成数据集的一种常用方法,但它不满足我们先验地知道结构 的条件。此外,与他人交换引导样本本质上需要交换数据,而不是数据生成方法。

如果我们可以为数据拟合一个参数分布,或者找到一个足够接近的参数化模型,那么这就是我们可以生成合成数据集的一个例子。

还有哪些其他方法?我对高维数据、稀疏数据和时间序列数据特别感兴趣。对于高维数据,我会寻找可以生成感兴趣的结构(例如协方差结构、线性模型、树等)的方法。对于时间序列数据,来自 FFT、AR 模型或各种其他过滤或预测模型的分布似乎是一个开始。对于稀疏数据,重现稀疏模式似乎很有用。

我相信这些只是表面上的——这些是启发式的,而不是正式的做法。是否有从业者应该知道的生成合成数据的参考资料或资源?


注 1:我意识到这个问题解决了关于如何生成特定时间序列模型等数据的文献。这里的区别在于实践,特别是为了指示已知结构(我的问题),而不是与现有数据集的相似性/保真度。在我的情况下,与已知结构一样,没有必要具有相似性,尽管相似性比不相似性更受青睐。与现实模拟相比,模型显示出前景的奇异合成数据集不太受欢迎。

注 2:合成数据的 Wikipedia 条目指出 Rubin 和 Fienberg 等名人已经解决了这个问题,尽管我没有找到关于最佳实践的参考资料。知道什么会通过应用统计年鉴(或 AOS)或这些或其他期刊的评论作品会通过集合会很有趣。用简单而异想天开的话来说,有人可能会问,“(可接受的)煮熟”和“太煮熟”之间的界限在哪里?

注 3:虽然它不影响问题,但使用场景是对各种大型高维数据集进行建模,其中研究议程学习(通过人和机器;-))数据的结构。与单变量、双变量和其他低维场景不同,结构不容易推断。当我们朝着更好地理解结构迈进时,能够生成具有相似属性的数据集是很有意义的,以便了解建模方法如何与数据交互(例如检查参数稳定性)。尽管如此,关于低维合成数据的旧指南可以作为一个起点,可以扩展或适用于高维数据集。

2个回答

我不确定是否有生成合成数据的标准做法——它在研究的许多不同方面被大量使用,以至于专门构建的数据似乎是一种更常见且可以说更合理的方法。

对我来说,我的最佳标准做法是不要制作数据集,以便它可以很好地与模型配合使用。这是研究阶段的一部分,而不是数据生成阶段的一部分。相反,数据的设计应反映数据生成过程例如,对于流行病学中的模拟研究,我总是从具有已知分布的大量假设人群开始,然后从该人群中模拟研究抽样,而不是直接生成“研究人群”。

例如,根据我们下面的讨论,我制作了两个模拟数据示例:

  • 与下面您的 SIR 模型示例有些相似,我曾经使用疾病在网络上传播的数学模型通过模拟向自己展示,如果您将结果视为结果,则特定的恒定参数不一定意味着恒定的危险的一项队列研究。当我去挖掘分析解决方案时,这是一个有用的概念证明。
  • 我想探索某种抽样方案对病例对照研究的影响。我没有尝试直接生成研究,而是遍历了该过程的每个步骤。1,000,000 人的人口,具有已知的疾病流行率和已知的协变量模式。然后从模拟抽样过程 - 在这种情况下,如何从人群中提取病例和对照。直到那时,我才在收集的“模拟研究”中抛出了一个实际的统计模型。

在检查研究招募方法、控制协变量的统计方法等的影响时,像后者这样的模拟非常常见。

R 统计包有一个模拟功能,它将根据适合现有数据的模型模拟数据。这使用拟合模型作为“已知”总体关系,然后基于该模型模拟新数据。在 lme4 包中有这个函数的方法。这些拟合对象可以考虑随机和固定效应和相关性(包括时间序列的自相关)。

这可能会做你想做的事。