######################################### #Fit scales to logistic function L_0 = max(scales) k_0 = 1 x_0 = 1995 L_MLE_scale, k_MLE_scale, x_MLE_scale = util.logistic_est(scales, L_0, k_0, x_0, years, smooth, datatype='fertility', param='Scale', flip=True) scale_params = L_MLE_scale, k_MLE_scale, x_MLE_scale, np.min(scales) #Transition graphs util.plot_data_transition_gen_gamma_estimates(beta_params, alpha_params, m_params, scale_params, start, end, ages, smooth, datatype='fertility') util.plot_data_transition(fert_data, start, end, ages, smooth, datatype='fertility') util.plot_data_transition_gen_gamma_overlay_estimates(fert_data, beta_params, alpha_params, m_params, scale_params, start, end, ages, smooth, datatype='fertility') #Graph comparison between 2014 and 2100 util.plot_2100(beta_params, alpha_params, m_params, scale_params, ages, smooth, datatype='fertility') ############################################## alphas = [] betas = [] ms = [] scales = [] for year in range(start, end + 1): #Take 'smooth' years rolling average mort_yr = util.rolling_avg_year(mort_data, year, smooth) alpha, beta, m, scale = util.gen_gamma_est(mort_yr, year, smooth, datatype='mortality') alphas.append(alpha) betas.append(beta)
ages, smooth, datatype='fertility') util.plot_data_transition(fert_data, start, end, ages, smooth, datatype='fertility') util.overlay_estimates(fert_data, a_params, b_params, p_params, q_params, scale_params, start, end, ages, smooth, datatype='fertility') #Graph comparison between 2014 and 2100 util.plot_2100(a_params, b_params, p_params, q_params, scale_params, ages, smooth, datatype='fertility')
k_0 = 1.5 x_0 = 1995 L_MLE_alpha, k_MLE_alpha, x_MLE_alpha = util.logistic_est(alphas, L_0, k_0, x_0, years, smooth, datatype='population', param='Alpha') alpha_params = L_MLE_alpha, k_MLE_alpha, x_MLE_alpha, np.min(alphas) ######################################### #Fit ms to logistic function L_0 = 5#max(ms) k_0 = 0.2#1e-50 x_0 = 1995 L_MLE_m, k_MLE_m, x_MLE_m = util.logistic_est(ms, L_0, k_0, x_0, years, smooth, datatype='population', param='M') m_params = L_MLE_m, k_MLE_m, x_MLE_m, np.min(ms) ######################################### #Fit scales to log function a_0 = 2e6 b_0 = np.min(years) - 1 c_0 = 1.9 d_0 = np.min(scales) e_0 = 1 a_MLE_scale, b_MLE_scale, c_MLE_scale, d_MLE_scale, e_MLE_scale = util.poly_est(scales, a_0, b_0, c_0, d_0, e_0, years, smooth, datatype='population', param='Scale', print_params=True) scale_params = a_MLE_scale, b_MLE_scale, c_MLE_scale, d_MLE_scale, e_MLE_scale #Transition graphs util.plot_data_transition_gen_gamma_estimates(beta_params, alpha_params, m_params, scale_params, start, end, ages, smooth, datatype='population') util.plot_data_transition(pop_data, start, end, ages, smooth, datatype='population') util.plot_data_transition_gen_gamma_overlay_estimates(pop_data, beta_params, alpha_params, m_params, scale_params, start, end, ages, smooth, datatype='population') #Graph comparison between 2014 and 2100 util.plot_2100(beta_params, alpha_params, m_params, scale_params, ages, smooth, datatype='population')
ages, smooth, datatype='population') util.plot_data_transition(pop_data, start, end, ages, smooth, datatype='population') util.overlay_estimates(pop_data, a_params, b_params, p_params, q_params, scale_params, start, end, ages, smooth, datatype='population') #Graph comparison between 2014 and 2100 util.plot_2100(a_params, b_params, p_params, q_params, scale_params, ages, smooth, datatype='population')
p_params = L_MLE_p, k_MLE_p, x_MLE_p, np.min(p_list) ######################################### #Fit q_list to logistic function L_0 = 0.55 k_0 = 0.31 x_0 = 1995 L_MLE_q, k_MLE_q, x_MLE_q = util.logistic_est(q_list, L_0, k_0, x_0, years, smooth, datatype='mortality', param='q', flip=True) q_params = L_MLE_q, k_MLE_q, x_MLE_q, np.min(q_list) ######################################### #Fit scales to logistic function L_0 = max(scales) k_0 = 1.5 x_0 = 1995 L_MLE_scale, k_MLE_scale, x_MLE_scale = util.logistic_est(scales, L_0, k_0, x_0, years, smooth, datatype='mortality', param='Scale') scale_params = L_MLE_scale, k_MLE_scale, x_MLE_scale, np.min(scales) non_infant_params = a_params, b_params, p_params, q_params, scale_params ages = np.linspace(0, 99, 100) #Transition graphs util.plot_forecast_transition( (non_infant_params, infant_params), ages, start, end, smooth, datatype='mortality') util.plot_data_transition(non_infant_mort, ages, start, end, smooth, datatype='mortality') util.overlay_estimates(non_infant_mort, (non_infant_params, infant_params), ages, start, end, smooth, datatype='mortality') #Graph comparison between 2014 and 2100 util.plot_2100( (non_infant_params, infant_params), ages, smooth, datatype='mortality') pickle.dump( (non_infant_params, infant_params), open('data/demographic/parameters/mort.p', 'wb') )
f = 1.1 # Increase estimate by 10% else: f = 1 # Keep estimate constant else: f = 1 # Keep estimate constant a = 1 / 30 * (1e-20 / (f * last_val - g) - b ) if age == -1: b = - b / 5 age_params.append([constant, beta, a, b, c, g]) forecast = e ** (a * forecast_vals ** 2 + b * forecast_vals + c) + g plt.plot(forecast_years, forecast, label='Forecast') plt.plot(years, estline, label='OLS Estimate') plt.plot(imm_age, label='Age ' + str(age)) plt.xlabel(r'Year $t$') plt.ylabel(r'Immigration Rate $i_{s,t}$') plt.grid(b=True, which='major', color='0.65', linestyle='-') plt.tight_layout() plt.legend() plt.savefig('graphs/' + datatype + '/age_forecasts/' + str(age)) plt.close() # Transition graphs util.plot_forecast_transition(age_params, ages, start, end, smooth=0, datatype='immigration', options={'transition_year': 2015}) util.plot_data_transition(imm_rate, ages, start, end, smooth=0, datatype='immigration') util.overlay_estimates(imm_rate, age_params, ages, start, end, smooth=0, datatype='immigration', options={'transition_year': 2015}) #Graph comparison between 2014 and 2030 util.plot_2100(age_params, ages, smooth=0, datatype='immigration', options={'transition_year': 2015}) pickle.dump( age_params, open('data/demographic/parameters/imm.p', 'wb') )
flip=True) scale_params = L_MLE_scale, k_MLE_scale, x_MLE_scale, np.min(scales) params = a_params, b_params, p_params, q_params, scale_params #Transition graphs util.plot_forecast_transition(params, ages, start, end, smooth, datatype='fertility') util.plot_data_transition(fert_data, ages, start, end, smooth, datatype='fertility') util.overlay_estimates(fert_data, params, ages, start, end, smooth, datatype='fertility') #Graph comparison between 2014 and 2100 util.plot_2100(params, ages, smooth, datatype='fertility') pickle.dump(params, open('data/demographic/parameters/fert.p', 'wb'))