如何记录具有大量零的转换数据

机器算法验证 数据转换
2022-03-29 21:17:03

我有一个由连续值组成的数据集,这些值具有大约 30-50% 的零和很大的范围 (10^3 - 10^10)。我相信这些零点不是数据丢失的结果,而是机器进行测量的灵敏度的结果。我想对这些数据进行 log10 转换,以便查看分布,但我不确定如何处理零

我做了很多搜索,发现以下内容

  1. 向数据添加一个小常数,例如 0.5,然后对数变换
  2. 一种叫做boxcox变换的东西

我查找了 boxcox 转换,我只发现它与制作回归模型有关。我只想可视化分布,看看它是如何分布的。

目前,当我绘制数据直方图时,它看起来像这样

在此处输入图像描述

当我添加一个小的常数 0.5 和 log10 变换时,它看起来像这样

在此处输入图像描述

有没有更好的方法来可视化这些数据的分布?我只是想了解数据的样子,以便找出适合它的测试类型。

2个回答

你知道机器的灵敏度是多少吗?如果它不能可靠地记录任何小于 100 的值(因此将它们报告为 0),那么这意味着您的所有 0 都是介于 0(或负无穷大)和 100 之间的值,添加 0.5 会低估这一点,50 将是一个更合理的值,或者可能是 100。根据机器精度选择附加值(并且可能只将其添加到 0,而不是所有值)是最有意义的。

还有一些方法可以估计要添加的值,从而在数据中给出“最佳”正态近似值(我认为原始 Box-Cox 论文中有一些),或者可以使用对数样条拟合来估计分布您的零被视为间隔删失值。

在您的情况下,我会将零与其他数据点分开处理。您可以为非零元素制定模型。添加一个小值ε至少适用于数据可视化目的。顺便提一句。这里之前有一个几乎类似的讨论:

我应该如何转换包括零在内的非负数据?