y_0 = 1.246 v_0 = 1.64 w_0 = 1 + x_0 + y_0 - v_0 r_0 = 41 ci = [x_0, y_0, v_0, w_0, r_0] #Condiciones iniciales #%% os.chdir(path_git + '/Software/Estadística/Datos/Datos_pantheon/') zcmb, zhel, Cinv, mb = leer_data_pantheon('lcparam_full_long_zhel.txt') #%% #Parametros a ajustar M_true = -19.6 omega_m_true = 0.26 b_true = -1.2 H0_true = 73 #73.48 #Unidades de (km/seg)/Mpc #%% np.random.seed(42) nll = lambda theta: params_to_chi2(ci, theta, n, zcmb, zhel, Cinv, mb) initial = np.array([M_true, omega_m_true, b_true, H0_true]) soln = minimize(nll, initial, bounds=((-20, -18), (0.2, 0.3), (None, None), (60, 80))) #,options = {'eps': 0.001}) M_ml, omega_m_ml, b_ml, H0_ml = soln.x print(M_ml, omega_m_ml, b_ml, H0_ml) os.chdir(path_git + '/Software/Estadística/Resultados_simulaciones') np.savez('valores_medios_supernovas_4params', sol=soln.x)
#Datos de Supernovas os.chdir(path_git + '/Software/Estadística/Datos/Datos_pantheon/') zcmb, zhel, Cinv, mb = leer_data_pantheon('lcparam_full_long_zhel.txt') os.chdir(path_git + '/Software/Estadística/Resultados_simulaciones/') with np.load('valores_medios_ST_SN_3params.npz') as data: sol = data['sol'] sol[0] = -19.0 print(sol) #Parametros fijos H_0 = 73.48 n = 2 params_fijos = [H_0, n] log_likelihood = lambda theta: -0.5 * params_to_chi2(theta, params_fijos, zcmb, zhel, Cinv, mb) #%% Definimos las gunciones de prior y el posterior def log_prior(theta): M, omega_m, b = theta if (-20 < M < -18.5 and 0.05 < omega_m < 0.4 and 0 < b < 2.5): return 0.0 return -np.inf def log_probability(theta): lp = log_prior(theta) if not np.isfinite(lp): #Este if creo que está de más.. return -np.inf return lp + log_likelihood(theta)
#%% Predeterminados: M_true = -19.25 omega_m_true = 0.3 b_true = 0.1 H0_true = 73.48 #Unidades de (km/seg)/Mpc n = 1 params_fijos = [H0_true, n] #Datos de Supernovas os.chdir(path_git + '/Software/Estadística/Datos/Datos_pantheon/') zcmb, zhel, Cinv, mb = leer_data_pantheon('lcparam_full_long_zhel.txt') #%% #Parametros a ajustar nll = lambda theta: params_to_chi2(theta, params_fijos, zcmb, zhel, Cinv, mb) initial = np.array([M_true, omega_m_true, b_true]) soln = minimize(nll, initial, options={'eps': 0.01}, bounds=((-19.5, -19), (0.25, 0.35), (0, 0.5))) M_ml, omega_m_ml, b_ml = soln.x print(M_ml, omega_m_ml, b_ml) os.chdir(path_git + '/Software/Estadística/Resultados_simulaciones') np.savez('valores_medios_HS_SN_3params', sol=soln.x) soln.fun / (len(zcmb) - 3) #0.9830091200848468 #%% os.chdir(path_git + '/Software/Estadística/Resultados_simulaciones/')
w_0 = 1 + x_0 + y_0 - v_0 r_0 = 41 ci = [x_0, y_0, v_0, w_0, r_0] #Condiciones iniciales #%% os.chdir(path_git+'/Software/Estadística/Datos/Datos_pantheon/') zcmb,zhel, Cinv, mb = leer_data_pantheon('lcparam_full_long_zhel.txt') os.chdir(path_git+'/Software/Estadística/Resultados_simulaciones/') with np.load('valores_medios_supernovas_3params.npz') as data: sol = data['sol'] print(sol) sol[1] = 0.23 sol[2] = 0 #Parametros a ajustar H0_true = 73.48 #Unidades de (km/seg)/Mpc log_likelihood = lambda theta: -0.5 * params_to_chi2(ci, theta, [H0_true,n], zcmb, zhel, Cinv, mb) #%% Definimos las gunciones de prior y el posterior def log_prior(theta): M, omega_m, b = theta if (-21 < M < -18.5 and 0.09 < omega_m < 0.4 and -2 < b < 2): return 0.0 return -np.inf def log_probability(theta): lp = log_prior(theta) if not np.isfinite(lp): return -np.inf return lp + log_likelihood(theta)