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