Fit data to lagged custom function

3 visualizzazioni (ultimi 30 giorni)
Paolo
Paolo il 1 Ago 2024
Hello,
I would like to ask if you can advice the correct approach I can follow to estimate the parameters of a custom lagged function
(1) y(t)=c^2*a+y(t-1)*(a-1)
where c is a known constant.
to a time series data (I can use the symbilic function to create (1) )
Thank you.
Best regards
Paolo
  2 Commenti
Torsten
Torsten il 1 Ago 2024
Modificato: Torsten il 1 Ago 2024
I would like to ask if you can advice the correct approach I can follow to estimate the parameters of a custom lagged function
You mean the parameter "a" ?
Paolo
Paolo il 2 Ago 2024
Hi Torsten,
thank you for your feedback. Yes I mean "a"; I forgot to mention that the time series of Y is already available and I know Y(0)= 0.04356
Best regards
Paolo

Accedi per commentare.

Risposta accettata

Harsh Kumar
Harsh Kumar il 2 Ago 2024
Modificato: Walter Roberson il 4 Ago 2024
Hope this may help ,
% Assuming you have your y data in a vector called 'y'
% and c is your known constant
% Step 1: Prepare data
y_lag = [NaN; y(1:end-1)]; % Create lagged y, with NaN for the first value
y = y(2:end); % Remove the first value of y to match dimensions
y_lag = y_lag(2:end);
% Step 2 & 3: Define the objective function
obj_fun = @(a) sum((y - (c^2*a + y_lag*(a-1))).^2);
% Step 4: Use optimization to find the best 'a'
options = optimset('Display', 'iter');
a_est = fminsearch(obj_fun, 0.5, options); % 0.5 is an initial guess for 'a'
% Print the result
fprintf('Estimated value of a: %f\n', a_est);
% Optional: Plot the results
y_pred = c^2*a_est + y_lag*(a_est-1);
plot(y, 'b-', 'DisplayName', 'Observed');
hold on;
plot(y_pred, 'r--', 'DisplayName', 'Predicted');
legend('show');
title('Observed vs Predicted y(t)');

Più risposte (0)

Categorie

Scopri di più su Interpolation in Help Center e File Exchange

Prodotti


Release

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by