The function is aimed to be maximized, to use it with optimizers which minimize cost functions wrap the function as such: `cost = function(...)abs(likelihood(...))`
likelihood(par, data, model, ...)
a vector of parameter values, including one for the uncertainty on the target values
nested data structure with validation data included
model to run with data and par setings
extra arguments to pass to the function
single log likelihood