1

在 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)
}

我不是程序员,所以这可能不是一个聪明的方法......如果有人知道更好的实现,我会很高兴听到它。

4

0 回答 0