Automating the derivation of sensitivity indices
2 次查看(过去 30 天)
显示 更早的评论
I am currently reviewing some papers on mathematical epidemiology and trying to replicate certain results on those papers. I want to calculate the sensitivity indices of model parameters (of the paper https://pubmed.ncbi.nlm.nih.gov/32834653/) with respect to the basic reproduction number using the formula where p is a parameter and is the sensitivity index of p. I have already calculated the indices manually, but I would like to know how to automate this process using MATLAB. The formula for and the parameter values are given below. The sensitivity index values given in the paper are . Thank you in advance!
beta_s = 0.274;
alpha_a = 0.4775;
alpha_u = 0.695;
mu = 0.062;
q_i = 0.078;
gamma_a = 0.29;
eta_i = 0.009;
eta_u = 0.05;
R0 = (beta_s*alpha_a)/(gamma_a+mu) + (beta_s*alpha_u*gamma_a*(1-q_i))/((gamma_a+mu)*(eta_u+mu))
回答(1 个)
Torsten
2022-12-29
编辑:Torsten
2022-12-29
You could use
syms beta_s alpha_a alpha_u mu q_i gamma_a eta_i eta_u
beta_s_num = 0.274;
alpha_a_num = 0.4775;
alpha_u_num = 0.695;
mu_num = 0.062;
q_i_num = 0.078;
gamma_a_num = 0.29;
eta_i_num = 0.009;
eta_u_num = 0.05;
R0 = (beta_s*alpha_a)/(gamma_a+mu) + (beta_s*alpha_u*gamma_a*(1-q_i))/((gamma_a+mu)*(eta_u+mu));
%S_beta_s as an example
dR0dbeta_s = diff(R0,beta_s)
S_beta_s = beta_s_num/subs(R0,[beta_s alpha_a alpha_u mu q_i gamma_a eta_i eta_u],[beta_s_num alpha_a_num alpha_u_num mu_num q_i_num gamma_a_num eta_i_num eta_u_num])*subs(dR0dbeta_s,[beta_s alpha_a alpha_u mu q_i gamma_a eta_i eta_u],[beta_s_num alpha_a_num alpha_u_num mu_num q_i_num gamma_a_num eta_i_num eta_u_num])
6 个评论
Torsten
2022-12-30
I don't see a difference between MATLAB and MATHEMATICA code.
If the results are different, I'd compare intermediate results, e.g. R0 and dR0dbeta_s, in both programs.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Earth and Planetary Science 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!