在R中,我想创建一个执行以下操作的函数:
given vectors of means, variances and weights
create a function which is a mixture of normal distributions
return this function
正常密度的混合是总和
f(x) = c_1 * N(mu_1,var_1) + ... + c_n * N(mu_n,var_n).
在R中执行此操作的简单方法是什么?
修改 我想出了一个非常简单,也许是天真的方式:
gmix <- function(means,vars,weights){
n <- length(means)
f<- function(t) {
res <- 0;
for(i in 1:n) {
res <- res + weights[i]*dnorm(t,mean=means[i],sd=sqrt(vars[i]))
}
return(res)
}
return(f)
}
我不是程序员,所以这可能不是一个聪明的方法......如果有人知道更好的实现,我会很高兴听到它。