对 N 个正态分布求和

Summing N normal distributions

我正在尝试确定 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)
}

感谢您的帮助!

您可以使用 Reduce 将每个 RV 重复添加到另一个。之后你可以使用 convpow

new_var <- Reduce("+", distribution_list)
convpow(new_var, 1)

话虽如此,对 convpow 的调用在这里绝对没有任何作用。

> identical(convpow(new_var, 1), new_var)
[1] TRUE