У меня есть следующий код, который оценивает функцию правдоподобия для пространственной авторегрессионной модели в Юлии, например так:
function like_sar2(betas,rho,sige,y,x,W)
n = length(y)
A = speye(n) - rho*W
e = y-x*betas-rho*sparse(W)*y
epe = e'*e
tmp2 = 1/(2*sige)
llike = -(n/2)*log(pi) - (n/2)*log(sige) + log(det(A)) - tmp2*epe
end
Я пытаюсь максимизировать эту функцию, но я не уверен, как передатьвходные данные функций различного размера, так что пакет Optim.jl примет его.Я пробовал следующее:
optimize(like_sar2,[betas;rho;sige;y;x;W],BFGS())
и
optimize(like_sar2,tuple(betas,rho,sige,y,x,W),BFGS())
В первом случае матрица в скобках не соответствует из-за несоответствия размеров, а во втором пакет Optim нене разрешать кортежи.
Я хотел бы попытаться максимизировать эту функцию правдоподобия, чтобы она могла возвращать числовую матрицу Гессиана (используя параметры Optim), чтобы я мог вычислять t-статистику для параметров.
Если есть какой-либо более простой способ получить числовой гессиан для такой функции, я бы использовал это, но кажется, что пакеты, такие как FowardDiff, принимают только один вход.
Любая помощь будет принята с благодарностью!