多个分布的总和
Sum of multiple distributions
背景
我尝试使用空间明确的数据来估计地理区域内的潜在能源供应。为此,我构建了一个贝叶斯网络(HydeNet 包)并将其附加到 R 中的栅格堆栈。贝叶斯网络模型从栅格堆栈中读取每个像元位置的输入数据(例如资源供应、转换效率)并计算相应的能源供应(MCMC 模拟)。结果,我获得了一个新的光栅层,其中每个光栅单元的预期能量供应具有特定的概率分布。
不过,我对研究区域内的总能源供应同样感兴趣。这意味着我需要聚合(求和)所有栅格单元的潜在供应,以获得区域内的整体供应潜力。
Click here for visual example
研究
我想做的数学运算叫做卷积。 R 提供了一个名为 convolve 的相应函数,它利用了 Fast Fourrier Transfomration。
目前我找到的示例(例如示例 , 2)仅限于一次添加两个分布。但是,我想总结多个分布(数千,数百万)。
问题
如何求和(卷积)多个概率分布?
我有多达 18,000,000 个概率分布。因此计算效率肯定会是一个大问题。
此外,我主要对 R 中的解决方案感兴趣,但其他解决方案(特别是 Python)也很受欢迎。
我不知道一次对多个分布进行卷积是否会导致速度提高。幕后 a123 = convolve(a1, a2, a3)
之类的东西不会简化为 a12 = convolve(a1, a2); a123 = convolve(a12, a30)
吗?无论如何,在 R 中,您可以尝试使用 foreach
包并并行执行所有卷积。在四核上(理论上)可以将计算速度提高 4 倍。如果你真的想要更快的速度,你可以尝试使用 OpenCL
包来查看是否可以在 GPU 上并行进行这些计算,但是这是编程方面不容易进入的。如果我是你,我会更多地关注这类解决方案,而不是试图加速执行卷积的函数。
背景
我尝试使用空间明确的数据来估计地理区域内的潜在能源供应。为此,我构建了一个贝叶斯网络(HydeNet 包)并将其附加到 R 中的栅格堆栈。贝叶斯网络模型从栅格堆栈中读取每个像元位置的输入数据(例如资源供应、转换效率)并计算相应的能源供应(MCMC 模拟)。结果,我获得了一个新的光栅层,其中每个光栅单元的预期能量供应具有特定的概率分布。
不过,我对研究区域内的总能源供应同样感兴趣。这意味着我需要聚合(求和)所有栅格单元的潜在供应,以获得区域内的整体供应潜力。
Click here for visual example
研究
我想做的数学运算叫做卷积。 R 提供了一个名为 convolve 的相应函数,它利用了 Fast Fourrier Transfomration。
目前我找到的示例(例如示例
问题
如何求和(卷积)多个概率分布?
我有多达 18,000,000 个概率分布。因此计算效率肯定会是一个大问题。 此外,我主要对 R 中的解决方案感兴趣,但其他解决方案(特别是 Python)也很受欢迎。
我不知道一次对多个分布进行卷积是否会导致速度提高。幕后 a123 = convolve(a1, a2, a3)
之类的东西不会简化为 a12 = convolve(a1, a2); a123 = convolve(a12, a30)
吗?无论如何,在 R 中,您可以尝试使用 foreach
包并并行执行所有卷积。在四核上(理论上)可以将计算速度提高 4 倍。如果你真的想要更快的速度,你可以尝试使用 OpenCL
包来查看是否可以在 GPU 上并行进行这些计算,但是这是编程方面不容易进入的。如果我是你,我会更多地关注这类解决方案,而不是试图加速执行卷积的函数。