【问题标题】:Sum of multiple distributions多个分布的总和
【发布时间】:2016-02-24 10:31:57
【问题描述】:

背景

我尝试使用空间明确的数据来估计一个地理区域内的潜在能源供应。为此,我构建了一个贝叶斯网络(HydeNet 包)并将其附加到 R 中的栅格堆栈。贝叶斯网络模型从栅格堆栈中读取每个单元位置的输入数据(例如资源供应、转换效率)并计算相应的能源供应(MCMC 模拟)。结果,我获得了一个新的栅格层,该层具有每个栅格单元的预期能量供应的特定概率分布。

但是,我对研究区域内的总能源供应同样感兴趣。这意味着我需要汇总(求和)所有栅格单元的潜在供应,以获得该区域内的整体供应潜力。

Click here for visual example

研究

我想做的数学运算叫做卷积。 R 提供了一个名为 convolve 的相应函数,该函数利用了 Fast Fourrier 变换

到目前为止,我发现的示例(例如示例 12)仅限于一次添加两个分布。但是,我想总结多个分布(数千、数百万)。

问题

如何对多个概率分布求和(卷积)?

我有多达 18,000,000 个概率分布。因此计算效率肯定是一个大问题。 此外,我主要对 R 中的解决方案感兴趣,但其他解决方案(尤其是 Python)也受到赞赏。

【问题讨论】:

    标签: python r convolution probability-density


    【解决方案1】:

    我不知道一次卷积多个分布是否会导致速度提高。不会像a123 = convolve(a1, a2, a3) 在幕后简化为a12 = convolve(a1, a2); a123 = convolve(a12, a30) 吗?无论如何,在 R 中,您可以尝试使用 foreach 包并并行执行所有卷积。在四核上可以将计算速度(理论上)提高 4 倍。如果您真的想要更快的速度,您可以尝试使用 OpenCL 包来查看是否可以在 GPU 上并行执行这些计算,但这是编程方面不容易进入。如果我是你,我会更多地关注这类解决方案,而不是尝试加速执行卷积的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多