def solve_best_params_and_predict(optimal_params): # Variables Initialization for the ODE system alpha, days, r_s, r_dth, p_dth, r_dthdecay, k1, k2, jump, t_jump, std_normal = optimal_params optimal_params = [ max(alpha, 0), days, max(r_s, 0), max(min(r_dth, 1), 0.02), max(min(p_dth, 1), 0), max(r_dthdecay, 0), max(k1, 0), max(k2, 0), max(jump, 0), max(t_jump, 0), max(std_normal, 1) ] x_0_cases = get_initial_conditions( params_fitted=optimal_params, global_params_fixed=GLOBAL_PARAMS_FIXED) x_sol_best = solve_ivp( fun=model_covid, y0=x_0_cases, t_span=[t_predictions[0], t_predictions[-1]], t_eval=t_predictions, args=tuple(optimal_params), ).y return x_sol_best
def residuals_totalcases(params): """ Wanted to start with solve_ivp because figures will be faster to debug params: (alpha, days, r_s, r_dth, p_dth, k1, k2), fitted parameters of the model """ # Variables Initialization for the ODE system alpha, days, r_s, r_dth, p_dth, r_dthdecay, k1, k2, jump, t_jump, std_normal = params params = ( max(alpha, 0), days, max(r_s, 0), max(min(r_dth, 1), 0.02), max(min(p_dth, 1), 0), max(r_dthdecay, 0), max(k1, 0), max(k2, 0), max(jump, 0), max(t_jump, 0),max(std_normal, 1) ) x_0_cases = get_initial_conditions( params_fitted=params, global_params_fixed=GLOBAL_PARAMS_FIXED ) x_sol = solve_ivp( fun=model_covid, y0=x_0_cases, t_span=[t_cases[0], t_cases[-1]], t_eval=t_cases, args=tuple(params) ).y weights = list(range(1, len(fitcasesnd) + 1)) weights = [(x/len(fitcasesnd))**2 for x in weights] # weights[-15:] =[x + 50 for x in weights[-15:]] residuals_value = sum( np.multiply((x_sol[15, :] - fitcasesnd) ** 2, weights) + balance * balance * np.multiply((x_sol[14, :] - fitcasesd) ** 2, weights)) + sum( np.multiply((x_sol[15, 7:] - x_sol[15, :-7] - fitcasesnd[7:] + fitcasesnd[:-7]) ** 2, weights[7:]) + balance * balance * np.multiply((x_sol[14, 7:] - x_sol[14, :-7] - fitcasesd[7:] + fitcasesd[:-7]) ** 2, weights[7:]) ) # residuals_value = sum( # np.multiply((x_sol[15, :] - fitcasesnd) ** 2, weights) # + balance * balance * np.multiply((x_sol[14, :] - fitcasesd) ** 2, weights)) return residuals_value
def solve_best_params_and_predict(optimal_params): # Variables Initialization for the ODE system x_0_cases = get_initial_conditions( params_fitted=optimal_params, global_params_fixed=GLOBAL_PARAMS_FIXED) x_sol_best = solve_ivp( fun=model_covid, y0=x_0_cases, t_span=[t_predictions[0], t_predictions[-1]], t_eval=t_predictions, args=tuple(optimal_params), ).y return x_sol_best