I have a log likelihood function I’m trying to maximize and as part of the computation of the log likelihood I call a function ScalcAll
which performs the following calcs, including inverting a matrix. up
and down
are data and the other inputs are the parameters for which I’m trying to find an an argmin numerically.
function ScalcAll(up::SVector{2,Float64},dn::SVector{2,Float64},rΣ,θ_0,θ_1,θ_2)
ats = SVector{2, Float64}
ats = [up'*(θ_0 + θ_1)*dn ; up'*(θ_0 + θ_2)*dn]
0.5*ats'*((hcat(ats,ats)+rΣ)\ats)
end
The issue is that for some sets of parameter values, I get a singular matrix error, ending my optimization routine. Given that I have no apriori idea which parameter values might do this, what’s the best way to efficiently (speed-wise) avoid this crashing my program?