【问题标题】:Python: Compare Histograms with different bin sizePython:比较具有不同 bin 大小的直方图
【发布时间】:2019-03-07 12:20:53
【问题描述】:

我想比较来自评估板的 2 个直方图,该评估板已经在直方图中对计数事件进行了分箱。我正在从具有不同事件数量的 2 个通道中获取数据(实际上,一个是仅背景,一个是背景 + 信号,一个非常常见的实验设置),并且具有不同数量的 bin、不同的 bin 宽度和不同的 bin 中心位置.

数据文件如下所示:

HSlice [CH1]
...
  44.660      46.255    6
  46.255      47.850    10
  47.850      49.445    18
  49.445      51.040    8
  51.040      52.635    28
  52.635      54.230    4
  54.230      55.825    18
  55.825      57.421    183
  57.421      59.016    582
  59.016      60.611    1786
...
HSlice [CH2]
...
  52.022      53.880    0
  53.880      55.738    9
  55.738      57.596    213
  57.596      59.454    728
  59.454      61.312    2944
  61.312      63.170    9564
...

前两列给出了各个 bin 的边界(即时间),最后一列表示此时间范围内的事件数。

现在我想做一种背景减少,也就是说从“背景+信号”直方图中减去背景直方图,以获得实际信号的时间轨迹。由于直方图完全不同,我无法按行执行此操作。 python中是否有一个简单的函数或一个优雅的解决方案如何使数据具有可比性(例如,通过在一个直方图中的两个数据点之间进行插值以适应另一个直方图的bin的位置)而不会弄乱由实验(既不要让它变得更糟,也不要假装更好的时间分辨率)。

谢谢,

雷帕克

【问题讨论】:

    标签: python matplotlib histogram


    【解决方案1】:

    通道 2 的 bin 大小比通道 1 大(1.858 对 1.595)。所以我会将值从较小的箱子转移到较大的箱子中。这会导致分辨率下降,但我认为这比从更大的 bin 转移到更小的 bin 更诚实,从而提高分辨率。

    现在我的方法是从通道 1 中的 bin 中获取所有值,并将它们分配给它们 time bin 中心的点。你并不确切知道它们最初是在哪里测量的,所以这就是你作弊的地方。

    现在根据新的时间值将通道 1 的值填充到通道 2 的 bin 中。

    这将是我的第一个方法。

    【讨论】:

    • 感谢您的意见。这也是我的第一种方法,将一个直方图作为一种时间参考,尽管从一个 bin 到另一个 bin 的“移动”事件似乎有点问题。你知道,如果有一个现成的函数可以做到这一点,还是我必须从头开始编写代码?
    • 我不知道有什么功能可以做到这一点。不过,实施将是直截了当的。另一个想法是获取一个 bin 中的点,并为每个点分配一个位于它们 bin 中的随机时间值。之后,您将它们放入另一个通道的垃圾箱中。坚持我之前的帖子,那将在频道 2 的垃圾箱中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多