使 likelihood return 成为向量而不是数字,R

Make likelihood return a vector insted of number, R

我想让我的似然函数 return 多于一个值。 我有以下可能性

loglike <- function(x,mu,tau,u){

logl <- sum(-0.5*log(2*pi) -.5*log(tau^2+u^2) * (1/(2*(tau^2+u^2)))*((x-mu)**2) )

return(-logl)
}

x <- c(3.3569,1.9247,3.6156,1.8446,2.2196,6.8194,2.0820,4.1293,0.3609,2.6197)
u <- c(1,3,0.5,0.2,2,1.7,0.4,1.2,1.1,0.7)  
tau=2

mu <- seq(0,10,length=1000)

我希望在插入 mu 向量时生成向量的可能性,但它 return 只是一个数字。我怎样才能使向量中每个 mu 的可能性 return 为 -logl?

您可以尝试 vapply 以便 运行 每个 mu:

的函数
loglike <- function(x, mu, tau, u){

  logl <- vapply(mu, function(m) {
    logl <- sum(-0.5*log(2*pi) -.5*log(tau^2+u^2) * (1/(2*(tau^2+u^2)))*((x-m)**2) )
  }, FUN.VALUE = numeric(1))

  return(-logl)
}

loglike(x, mu, tau, u)