使用dtruncnorm时出错:参数's_x'不是真正的向量

时间:2017-08-24 09:39:15

标签: r statistics

我正在尝试使用最大似然度将截断的正态分布拟合到5000个声明大小的数据集:

l1 = function(theta)
{
  -sum(dtruncnorm(x=size, a=0, b=Inf, mean = theta[1], sd=theta[2]))
}
mle1=optim(par=c(4,4), fn=l1)

然而,当我运行optim(par=c(4, 2), fn=l1)行时,我收到错误:

Error in dtruncnorm(x = size, a = 0, b = Inf, mean = theta[1], sd = theta[2]) : 
Argument 's_x' is not a real vector. 

我知道它与size变量有关,但据我所知,它是一个整数向量,因为当我运行typeof(size)时,我得到"integer"作为输出

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

由于某种原因,该功能不接受序列。这对我有用:

-sum(sapply(size, function(v){
 dtruncnorm(x=as.numeric(v), a=0, b=Inf, mean = theta[1], sd=theta[2])
}))