返回概率密度混合的函数

时间:2013-03-25 10:30:47

标签: r functional-programming

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

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

0 个答案:

没有答案