#########################################
#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')
Beispiel #3
0
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')
Beispiel #5
0
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') )
Beispiel #6
0
            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') )
Beispiel #7
0
                                                          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'))