SIR model parameter fitting
Afficher commentaires plus anciens
I want to find appropriate parameter i.e. beta.
First I have confirmed data for Jan.23~Dec.18.
I try to find best beta but result is same with inital guess beta. So I can't find how to do.
Here is my code.
I attach the data.
%% Data and current figure
clear; clc;
data_inc = readtable('inc_data2.csv','PreserveVariableNames',true);
date_inc = table2array(data_inc(:,1),'InputFormat','yyyy-MM-dd');
inc = table2array(data_inc(:,2));
% figure of incidence
figure(1)
bar(date_inc,inc)
%% data fitting
clc;
global beta gamma
beta = 0.01; gamma = 1/14;
parameter = [beta gamma];
IC1 = [880 10 0];
[t,y] = ode45(@SIR,[0,329],IC1);
plot(t,y);
%%
xdata = [1:1:329]';
ydata = inc;
x0 = parameter;
p = lsqcurvefit(@SIR,x0,[0,329],xdata,y,[0,0],[1,1]);
p
beta = 0.00001; % will change by lsqcurvefit result
gamma = 1/14;
IC2 = [beta gamma];
[t,y] = ode45(@SIR,[0,329],IC);
bar(xdata,inc)
hold on
plot(xdata,y(:,2));
hold off
%% plot
bar(xdata,inc)
hold on
plot(xdata,ydata,'r')
hold off
%% function
function dy = SIR(t,y)
global beta gamma
S = y(1); I = y(2);
dy = zeros(3,1);
dy(1) = -beta*S*I;
dy(2) = beta*S*I-gamma*I;
dy(3) = gamma*I;
end
Réponses (1)
yeongju han
le 19 Mai 2021
0 votes
Heejin, Can I ask u something?
How did you success this code..? I am studying the SEIRDV model considering the introduction of vaccines.
l want update 'beta' by using lsqcurvefit. But, I can't update 'beta'.. Can you review my code..? or,, Can you share me the complete code? I'm so desperate.
(I'm Korean, too ^_^)
Catégories
En savoir plus sur Matrix Computations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!