2017-08-24 93 views
0

我試圖適應截短正態分佈使用最大似然5000個根據權利要求大小的數據集:錯誤:參數「s_x」不是一個真正的矢量

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

出於某種原因,函數不接受序列。這工作對我來說:

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