Nonlinear Estimation with Fminunc
Nonlinear Estimation Inputs LHS and RHS
Estimate this equation:
. We have data from multiple t, and want to estimate the
, and
coefficients mainly, but also
is good as well. This is an estimation problem with 3 unknowns. t ranges from ar_w = [-1.7349,-1.5559,-1.4334,-1.3080,-1.1791,-1.0462,-0.9085,-0.7652,-0.6150,-0.4564,-0.2874,-0.1052,0.0943];
ar_t = [0,3,5,7,9,11,13,15,16,19,21,23,25];
% actual parameters, estimation checks if gets actual parameters back
ar_a = [-1.8974, 0.0500];
Prediction and MSE Equations
Objective function for prediction and mean-squared-error.
obj_ar_predictions = @(a) (v_0 + a(1) + a(2).*ar_t - log(1 - exp(a(1) + a(2).*ar_t)));
obj_fl_mse = @(a) mean((obj_ar_predictions(a) - ar_w).^2);
Evaluate given ar_a vectors.
ar_predict_at_actual = obj_ar_predictions(ar_a);
fl_mse_at_actual = obj_fl_mse(ar_a);
mt_compare = [ar_w', ar_predict_at_actual'];
tb_compare = array2table(mt_compare);
tb_compare.Properties.VariableNames = {'lhs-outcomes', 'evaluate-rhs-at-actual-parameters'};
disp(tb_compare);
lhs-outcomes evaluate-rhs-at-actual-parameters
____________ _________________________________
-1.7349 -1.2349
-1.5559 -1.056
-1.4334 -0.93353
-1.308 -0.80813
-1.1791 -0.67928
-1.0462 -0.54641
-0.9085 -0.40877
-0.7652 -0.26546
-0.615 -0.19133
-0.4564 0.043211
-0.2874 0.21214
-0.1052 0.39429
0.0943 0.59369
Unconstrained Nonlinear Estimation
Estimation to minimize mean-squared-error.
options = optimset('display','on');
[ar_a_opti, fl_fval] = fminunc(obj_fl_mse, ar_a_init, options);
Local minimum found.
Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.
<stopping criteria details>
Compare results.
mt_compare = [ar_a_opti', ar_a'];
tb_compare = array2table(mt_compare);
tb_compare.Properties.VariableNames = {'estimated-best-fit', 'actual-parameters'};
disp(tb_compare);
estimated-best-fit actual-parameters
__________________ _________________
-2.3541 -1.8974
0.057095 0.05