def reporting_model_hourly(il_electricity_cdd_hdd_hourly): meter_data = il_electricity_cdd_hdd_hourly["meter_data"] temperature_data = il_electricity_cdd_hdd_hourly["temperature_data"] blackout_end_date = il_electricity_cdd_hdd_hourly["blackout_end_date"] reporting_meter_data, warnings = get_reporting_data( meter_data, start=blackout_end_date) preliminary_hourly_design_matrix = create_caltrack_hourly_preliminary_design_matrix( reporting_meter_data, temperature_data) segmentation = segment_time_series(preliminary_hourly_design_matrix.index, "three_month_weighted") occupancy_lookup = estimate_hour_of_week_occupancy( preliminary_hourly_design_matrix, segmentation=segmentation) occupied_temperature_bins, unoccupied_temperature_bins = fit_temperature_bins( preliminary_hourly_design_matrix, segmentation=segmentation, occupancy_lookup=occupancy_lookup, ) design_matrices = create_caltrack_hourly_segmented_design_matrices( preliminary_hourly_design_matrix, segmentation, occupancy_lookup, occupied_temperature_bins, unoccupied_temperature_bins, ) segmented_model = fit_caltrack_hourly_model( design_matrices, occupancy_lookup, occupied_temperature_bins, unoccupied_temperature_bins, ) return segmented_model
def test_segment_time_series_drop_zero_weight_segments(index_8760): weights = segment_time_series(index_8760[:100], segment_type="one_month", drop_zero_weight_segments=True) assert list(weights.columns) == ["jan"] assert weights.shape == (100, 1) assert weights.sum().sum() == 100.0
def test_segment_time_series_three_month(index_8760): weights = segment_time_series(index_8760, segment_type="three_month") assert list(weights.columns) == [ "dec-jan-feb", "jan-feb-mar", "feb-mar-apr", "mar-apr-may", "apr-may-jun", "may-jun-jul", "jun-jul-aug", "jul-aug-sep", "aug-sep-oct", "sep-oct-nov", "oct-nov-dec", "nov-dec-jan", ] assert weights.shape == (8760, 12) assert weights.sum().sum() == 26280.0
def test_segment_time_series_one_month(index_8760): weights = segment_time_series(index_8760, segment_type="one_month") assert list(weights.columns) == [ "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec", ] assert weights.shape == (8760, 12) assert weights.sum().sum() == 8760.0
def test_segment_time_series_three_month_weighted(index_8760): weights = segment_time_series(index_8760, segment_type="three_month_weighted") assert list(weights.columns) == [ "dec-jan-feb-weighted", "jan-feb-mar-weighted", "feb-mar-apr-weighted", "mar-apr-may-weighted", "apr-may-jun-weighted", "may-jun-jul-weighted", "jun-jul-aug-weighted", "jul-aug-sep-weighted", "aug-sep-oct-weighted", "sep-oct-nov-weighted", "oct-nov-dec-weighted", "nov-dec-jan-weighted", ] assert weights.shape == (8760, 12) assert weights.sum().sum() == 17520.0
def segmentation(preliminary_hourly_design_matrix): return segment_time_series(preliminary_hourly_design_matrix.index, "three_month_weighted")
def one_month_segmentation(occupancy_precursor): return segment_time_series(occupancy_precursor.index, segment_type="one_month")
def segmentation_only_nan(occupancy_precursor_only_nan): return segment_time_series(occupancy_precursor_only_nan.index, segment_type="three_month_weighted")
def test_segment_time_series_single(index_8760): weights = segment_time_series(index_8760, segment_type="single") assert list(weights.columns) == ["all"] assert weights.shape == (8760, 1) assert weights.sum().sum() == 8760.0
def test_segment_time_series_invalid_type(index_8760): with pytest.raises(ValueError): segment_time_series(index_8760, segment_type="unknown")
def segmentation(dataset): return segment_time_series(dataset.index, segment_type="one_month")