Fit data to lagged custom function
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Paolo
le 1 Août 2024
Modifié(e) : Walter Roberson
le 4 Août 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 commentaires
Réponse acceptée
Harsh Kumar
le 2 Août 2024
Modifié(e) : Walter Roberson
le 4 Août 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)');
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Get Started with Curve Fitting Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!