如何调试数据分析?


10

我遇到了以下问题,我很典型地进行侦察。

我有一些大数据,例如几百万行。我对它进行了一些非平凡的分析,例如,由几个子查询组成的SQL查询。我得到一些结果,例如,说明属性X随时间增加。

现在,有两种可能的结果可能导致这种情况:

  1. X确实随着时间增加
  2. 我的分析中有错误

如何测试第一次发生而不是第二次发生?逐步调试器(即使存在)也无济于事,因为中间结果仍然可以包含数百万行。

我唯一能想到的就是以某种方式生成一个小的合成数据集,该数据集具有我要测试的属性,并将其作为单元测试进行分析。有工具可以做到这一点吗?特别是但不限于SQL。


好问题!我认为这是一个重要且不平凡的问题。
2014年

Answers:


4

这是一个建议:

  • 以可以在子样本上运行的方式对分析进行编码。
  • 编写一个互补例程,该例程可以随机,按时间,按区域或...进行采样。这可能是特定于域的。这就是您的知识所在。
  • 将两者结合起来,看看结果在各个子样本中是否稳定。

这是否还意味着我的错误在子样本中是稳定的?
小鲍比桌子

这是可能的结果,但是您只有在尝试后才会知道。如果是这样,您至少可以在较小的数据集上进行调试。
Dirk Eddelbuettel 2014年

1

这是我通常要做的-占用最重要的变量(根据您的业务理解和假设-您以后可以随时对其进行修改),对这些属性进行分组以减少行数,然后可以将其导入到Pivot中。您应该在每行上包括相关指标的总和和计数。

确保在上一步中没有放置任何过滤器。一旦获得了汇总级别的全部数据,您就可以在数据透视表中进行操作,并查看发生了什么变化/增加或减少。

如果数据太大,即使是重要参数也无法汇总,则需要将其划分为3-4个子集,然后再次进行。

希望能帮助到你。


1

首先,您需要验证算法的实现是否正确。为此,请使用少量数据样本,然后检查结果是否正确。在此阶段,样本不需要代表总体。

验证实现后,您需要验证尝试预测的变量之间是否存在重要关系。为此,定义了原假设,并尝试以显着的置信度拒绝原假设。(线性回归的假设检验

您的SQL发行版可能会有单元测试框架。但是使用像R这样的编程语言将更易于实现。


1

我喜欢多步策略:

  1. 编写简洁易懂的代码,而不是简短的代码。我知道统计学家喜欢棘手的代码,但是发现棘手的代码中的问题很危险。(我之所以这样说是因为我的主管喜欢无记录的500行python脚本-调试混乱很有趣,而且我看到了很多这种模式,尤其是那些不是IT领域的人)

  2. 将代码分解为较小的功能,可以在较小的stes中对其进行测试和评估。

  3. 查找连接的元素,例如条件X的情况数为Y-因此此查询必须返回Y。通常,这更复杂,但可行。

  4. 首次运行脚本时,请使用一个小的子样本对其进行测试,并仔细检查是否一切正常。尽管我喜欢IT中的单元测试,但统计脚本中的错误通常如此明显,以至于在仔细检查后很容易看到它们。或者它们是有条不紊的错误,可能不会被单元测试捕获。

这足以确保干净的“一次性”工作。但是对于您似乎拥有的时间序列,我要补充一点,您应该检查值是否超出范围,不可能的组合等。对于我来说,大多数达到第4步的脚本可能没有错误-除非您保持这种状态,否则有些变化。通常,数据在变化-这是每次运行都应检查的内容。为此编写代码可能既耗时又烦人,但由于数据输入错误,它克服了细微的错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.