# Now calibrate the forecast ensemble using the calibrate() method: X_t_cal_params, X_t_cal = taqminst.calibrate( X_ta_params, Y_ta_params, X_t_params, X_ta, Y_ta, X_t, trust_sharp_fcst) # Next, we’re going to compute the SIP quantity for the raw and calibrated forecast, plot all cumulative distributions, and calculate the continuous rank probability score (CRPS) for the raw and calibrated forecast. # First, evaluate the cdf for each of these using the cdf_eval() method in the beinf class. This method handles instances when a and b aren’t known (and given the value np.inf), in which case the cdf over (0,1) is computed using the ecdf() method. When a and b are known (as is the case in this example), cdf_eval() evaluates the cdf using the cdf() method. We can also use the cdf_eval() method to compute SIP. x = np.linspace(0, 1, 1000) x_c = 0.15 # Evaluate cdf for the TAMH distribution at x cdf_x_ta = beinf.cdf_eval(x, X_ta_params, X_ta) # Evaluate cdf for the TAOH distribution at x cdf_y_ta = beinf.cdf_eval(x, Y_ta_params, Y_ta) # Evaluate cdf for the forecast distribution at x and calculate SIP cdf_x_t = beinf.cdf_eval(x, X_t_params, X_t) sip_x_t = 1.0 - beinf.cdf_eval(x_c, X_t_params, X_t) p_x_t = X_t_params[2] # raw forecast p_x_ta = X_ta_params[2] # TAMH climatology p_y_ta = Y_ta_params[2] # TAOH climatology # Evaluate cdf for the calibrated forecast distribution at x and calculate SIP if trust_sharp_fcst == True and p_x_t == 1.0: # go with the original forecast data/distribution when any of the p parameters are one
a_x_t, b_x_t, p_x_t, q_x_t = X_t_params[0], X_t_params[1], X_t_params[ 2], X_t_params[3] a_x_t_cal, b_x_t_cal, p_x_t_cal, q_x_t_cal = X_t_cal_params[0], X_t_cal_params[ 1], X_t_cal_params[2], X_t_cal_params[3] # freeze distribution objects rv_x_ta = beinf(a_x_ta, b_x_ta, p_x_ta, q_x_ta) #TAMH rv_y_ta = beinf(a_y_ta, b_y_ta, p_y_ta, q_y_ta) #TAOH rv_x_t = beinf(a_x_t, b_x_t, p_x_t, q_x_t) #Raw forecast ensemble rv_x_t_cal = beinf(a_x_t_cal, b_x_t_cal, p_x_t_cal, q_x_t_cal) #Calibrated forecast ensemble x = np.linspace(0, 1, 1000) # Evaluate cdf for the TAMH distribution at x cdf_x_ta = beinf.cdf_eval(x, X_ta_params, X_ta) # Evaluate cdf for the TAOH distribution at x cdf_y_ta = beinf.cdf_eval(x, Y_ta_params, Y_ta) # Evaluate cdf for the forecast distribution at x cdf_x_t = beinf.cdf_eval(x, X_t_params, X_t) # Evaluate cdf for the calibrated forecast distribution at x if trust_sharp_fcst == True and p_x_t == 1: cdf_x_t_cal = beinf.cdf_eval(x, X_t_params, X_t) else: if p_x_t == 1.0: cdf_x_t_cal = beinf.cdf_eval(x, Y_ta_params, Y_ta) else: cdf_x_t_cal = beinf.cdf_eval(x, X_t_cal_params, X_t_cal)