Error in lsqnonlin() - "Failure in initial objective function evaluation."
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm building a script to generate a non-linear least squares estimation, after prepping my data, I was able to generate the correct results into an array with the following function:
for x = 1:1000
fun = @(x)((leis_psi_minus(x)*(mu*cons_phi(x)+(1-mu)*poll_negphi(x)))/(cons_phi_minus(x)*(rho*leis_psi(x)+(1-rho)*poll_negpsi(x))));
w2(x) = fun(x);
end
where leis_psi_minus, cons_phi, poll_negphi, cons_phi_minus, leis_psi, poll_negpsi are all arrays of data. But when I try to do lsqnonlin(fun,x0), I get:
Error in lsqnonlin (line 196) initVals.F = feval(funfcn{3},xCurrent,varargin{:});
Caused by: Failure in initial objective function evaluation. LSQNONLIN cannot continue.
I haven't used lsqnonlin before, so I'm trying to research if I need to adjust options, but any insight or advice would be greatly appreciated!
0 comentarios
Respuestas (1)
Star Strider
el 13 de Ag. de 2016
For the optimisation functions, the argument of the objective function is the vector of parameters you want to optimise. (Your anonymous function objective function will get your data vectors from your workspace. It is not necessary to include them as arguments.)
What function did you start with, and what do you want to do with it?
10 comentarios
Star Strider
el 16 de Ag. de 2016
Delete the observations with NaN values. That’s what the Statistics and Machine Learning Toolbox functions do.
Providing your own Jacobian function can speed the regression considerably for large data sets. I don’t know if it improves the ability of the regression to find the global minimum if there are many local minima. The Jacobian you supply is not an objective function. You can include it within your objective function, as described in the lsqnonlin documentation for fun.
You can only fit one objective function at a time, but you can fit as many models (objective functions) as you want. There are ways to compare two models to see which is the best fit, but that requires that both models describe the actual process that created your data with reasonable accuracy. (When I did that, I used the likelihood ratio test to determine if there was a significant difference between them. You have to determine if that is appropriate for your application.) Comparing multiple models (more than two) requires that you take the statistics of multiple comparisons into consideration. This varies with the test you’re doing, so I’ll leave that to you to research.
Ver también
Categorías
Más información sobre Nonlinear Least Squares (Curve Fitting) en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!