【发布时间】:2021-02-10 18:02:44
【问题描述】:
我正在尝试确定 N 个单变量分布之和的分布。 你能推荐一个允许我动态输入任意 N 个分布的函数吗?
这行得通:
library(distr)
var1 <- Norm(mean=14, sd=1)
var2 <- Norm(mean=10, sd=1)
var3 <- Norm(mean=9, sd=1)
conv <- convpow(var1+var2+var3,1)
这(显然)不起作用,因为将列表粘贴在一起会创建一个混乱的字符串,但是这是我理想功能的框架:
convolution_multi <- function(mean_list = c(14,10,9,10,50)){
distribution_list <- lapply(X = mean_list, Norm, sd=1)
conv_out <- convpow(paste(distribution_list,collapse="+"),1)
return(conv_out)
}
感谢您的帮助!
【问题讨论】:
-
convpow是错误的函数调用。它对 N 个相同的单变量进行卷积。据我了解,您想要 N 个不同(尽管相似)单变量的总和 -
@SeverinPappadeux 当然,但他们也用 N=1 来调用它。他们真的没有做错任何事——他们只是根本没有做任何事情。我在回答中提到了这一点。
-
你为什么要为此编写程序?众所周知的分析答案是法线之和是正常的。
-
@Dason 是的,你是对的,我同意,但作者认为它正在做某事。而且调用确实是错误的函数,还有其他基于FFT的卷积包
-
@pjs - 我同意。如果这确实是实际任务,那么有更直接的方法来解决问题,但也有可能这只是手头问题的简化说明。
标签: r distribution convolution