背景
我尝试使用空间显性数据估算一个地理区域内的潜在能源供应。为此,我构建了一个贝叶斯网络(HydeNet软件包)并将其附加到R中的栅格堆栈。贝叶斯网络模型从栅格堆栈读取每个单元位置的输入数据(例如资源供应,转换效率)并计算相应的能源供应(MCMC模拟)。结果,我获得了一个新的raste层,其中包含每个栅格单元的预期能量供应的特定概率分布。
但是,我对研究区内的总能量供应同样感兴趣。这意味着我需要聚合(总和)所有栅格单元的潜在供应,以便获得该区域内的整体供应潜力。
研究
我想要做的数学运算叫做卷积。 R提供了一个名为 convolve 的相应函数,它利用快速傅里叶变换。
我到目前为止找到的示例(例如示例1,2)仅限于一次添加两个发行版。但是,我想总结多个发行版(数千,数百万)。
问题
如何总结(卷积)多个概率分布?
我有多达18,000,000个概率分布。因此,计算效率肯定是一个大问题。 此外,我主要对R中的解决方案感兴趣,但其他解决方案(尤其是Python)也受到赞赏。
答案 0 :(得分:0)
我不知道如果一次卷积多个分布会导致速度增加。在幕后function FullName(props) {
return (
<span>
<FirstName id={props.id} />
<LastName id={props.id} />
</span>
);
}
之类的东西不会简化为a123 = convolve(a1, a2, a3)
吗?无论如何,在R中您可以尝试使用a12 = convolve(a1, a2); a123 = convolve(a12, a30)
包并且并行执行所有卷积。在四核上可以加速计算(理论上)4倍。如果你真的想要更快的速度,你可以尝试使用foreach
包来看看你是否可以在GPU上并行进行这些计算,但是这在编程方面不容易进入。如果我是你,我会更多地关注这些解决方案而不是试图加速进行卷积的函数。