Esempio n. 1
0
def baseline_model_billing_single_record(il_electricity_cdd_hdd_billing_monthly):
    baseline_meter_data = il_electricity_cdd_hdd_billing_monthly["meter_data"][-2:]
    temperature_data = il_electricity_cdd_hdd_billing_monthly["temperature_data"]
    blackout_start_date = il_electricity_cdd_hdd_billing_monthly["blackout_start_date"]
    baseline_data = create_caltrack_billing_design_matrix(
        baseline_meter_data, temperature_data
    )
    model_results = fit_caltrack_usage_per_day_model(
        baseline_data, use_billing_presets=True, weights_col="n_days_kept"
    )
    return model_results
Esempio n. 2
0
def reporting_model_billing(il_electricity_cdd_hdd_billing_monthly):
    meter_data = il_electricity_cdd_hdd_billing_monthly["meter_data"]
    meter_data.value = meter_data.value - 50
    temperature_data = il_electricity_cdd_hdd_billing_monthly[
        "temperature_data"]
    blackout_start_date = il_electricity_cdd_hdd_billing_monthly[
        "blackout_start_date"]
    baseline_meter_data, warnings = get_baseline_data(meter_data,
                                                      end=blackout_start_date)
    baseline_data = create_caltrack_billing_design_matrix(
        baseline_meter_data, temperature_data)
    model_results = fit_caltrack_usage_per_day_model(baseline_data,
                                                     use_billing_presets=True,
                                                     weights_col="n_days_kept")
    return model_results
Esempio n. 3
0
def reporting_model_daily(reporting_data_daily):
    model_results = fit_caltrack_usage_per_day_model(reporting_data_daily)
    return model_results
Esempio n. 4
0
def baseline_model_daily(baseline_data_daily):
    model_results = fit_caltrack_usage_per_day_model(baseline_data_daily)
    return model_results
Esempio n. 5
0
def test_total_average_metrics():
    data = pd.DataFrame(
        {
            "meter_value": [6, 1, 1, 6],
            "cdd_65": [5, 0, 0.1, 0],
            "hdd_65": [0, 0.1, 0.1, 5],
            "start": pd.date_range(start="2016-01-02", periods=4, freq="D", tz="UTC"),
        }
    ).set_index("start")

    model_results = fit_caltrack_usage_per_day_model(data, fit_intercept_only=True)
    json_result = model_results.json()
    totals_metrics = json_result["totals_metrics"]
    assert round(totals_metrics["observed_length"], 3) == 3.000
    assert round(totals_metrics["predicted_length"], 3) == 3.000
    assert round(totals_metrics["merged_length"], 3) == 3.000
    assert round(totals_metrics["num_parameters"], 3) == 0
    assert round(totals_metrics["observed_mean"], 3) == 2.667
    assert round(totals_metrics["predicted_mean"], 3) == 3.5
    assert round(totals_metrics["observed_variance"], 3) == 5.556
    assert round(totals_metrics["predicted_variance"], 3) == 0
    assert round(totals_metrics["observed_skew"], 3) == 1.732
    assert round(totals_metrics["predicted_skew"], 3) == 0
    assert round(totals_metrics["observed_cvstd"], 3) == 1.083
    assert round(totals_metrics["predicted_cvstd"], 3) == 0
    assert round(totals_metrics["rmse"], 3) == 2.5
    assert round(totals_metrics["rmse_adj"], 3) == 2.5
    assert round(totals_metrics["cvrmse"], 3) == 0.938
    assert round(totals_metrics["cvrmse_adj"], 3) == 0.938
    assert round(totals_metrics["mape"], 3) == 1.806
    assert round(totals_metrics["mape_no_zeros"], 3) == 1.806
    assert round(totals_metrics["num_meter_zeros"], 3) == 0
    assert round(totals_metrics["nmae"], 3) == 0.938
    assert round(totals_metrics["nmbe"], 3) == 0.312
    assert round(totals_metrics["confidence_level"], 3) == 0.9
    assert round(totals_metrics["single_tailed_confidence_level"], 3) == 0.95

    assert totals_metrics["observed_kurtosis"] is None
    assert totals_metrics["predicted_kurtosis"] is None
    assert totals_metrics["r_squared"] is None
    assert totals_metrics["r_squared_adj"] is None
    assert totals_metrics["autocorr_resid"] is None
    assert totals_metrics["n_prime"] is None
    assert totals_metrics["degrees_of_freedom"] is None
    assert totals_metrics["t_stat"] is None
    assert totals_metrics["cvrmse_auto_corr_correction"] is None
    assert totals_metrics["approx_factor_auto_corr_correction"] is None
    assert totals_metrics["fsu_base_term"] is None

    json_result = model_results.json()
    avgs_metrics = json_result["avgs_metrics"]
    assert round(avgs_metrics["observed_length"], 3) == 4.000
    assert round(avgs_metrics["predicted_length"], 3) == 4.000
    assert round(avgs_metrics["merged_length"], 3) == 4.000
    assert round(avgs_metrics["num_parameters"], 3) == 0
    assert round(avgs_metrics["observed_mean"], 3) == 3.5
    assert round(avgs_metrics["predicted_mean"], 3) == 3.5
    assert round(avgs_metrics["observed_variance"], 3) == 6.25
    assert round(avgs_metrics["predicted_variance"], 3) == 0
    assert round(avgs_metrics["observed_skew"], 3) == 0
    assert round(avgs_metrics["predicted_skew"], 3) == 0
    assert round(avgs_metrics["observed_cvstd"], 3) == 0.825
    assert round(avgs_metrics["predicted_cvstd"], 3) == 0
    assert round(avgs_metrics["observed_kurtosis"], 3) == -6.0
    assert round(avgs_metrics["predicted_kurtosis"], 3) == 0

    assert round(avgs_metrics["rmse"], 3) == 2.5
    assert round(avgs_metrics["rmse_adj"], 3) == 2.5
    assert round(avgs_metrics["cvrmse"], 3) == 0.714
    assert round(avgs_metrics["cvrmse_adj"], 3) == 0.714
    assert round(avgs_metrics["mape"], 3) == 1.458
    assert round(avgs_metrics["mape_no_zeros"], 3) == 1.458
    assert round(avgs_metrics["num_meter_zeros"], 3) == 0
    assert round(avgs_metrics["nmae"], 3) == 0.714
    assert round(avgs_metrics["nmbe"], 3) == 0
    assert round(avgs_metrics["confidence_level"], 3) == 0.9
    assert round(avgs_metrics["n_prime"], 3) == 12.0
    assert round(avgs_metrics["single_tailed_confidence_level"], 3) == 0.95
    assert round(avgs_metrics["autocorr_resid"], 3) == -0.5
    assert round(avgs_metrics["degrees_of_freedom"], 3) == 12.0
    assert round(avgs_metrics["t_stat"], 3) == 1.782
    assert round(avgs_metrics["cvrmse_auto_corr_correction"], 3) == 0.577
    assert round(avgs_metrics["approx_factor_auto_corr_correction"], 3) == 1.08
    assert round(avgs_metrics["fsu_base_term"], 3) == 0.794

    assert avgs_metrics["r_squared"] is None
    assert avgs_metrics["r_squared_adj"] is None