solarforecastarbiter.reference_forecasts.persistence.persistence_probabilistic_timeofday

solarforecastarbiter.reference_forecasts.persistence.persistence_probabilistic_timeofday(observation, data_start, data_end, forecast_start, forecast_end, interval_length, interval_label, load_data, axis, constant_values)[source]

Make a probabilistic persistence forecast using the observation from data_start to data_end, matched by time of day (e.g. to forecast 9am, only use observations from 9am on days between data_start and data_end). This is a common variant of the Persistence Ensemble (PeEn) method. [1] [2] [3]

Parameters:
  • observation (datamodel.Observation) –
  • data_start (pd.Timestamp) – Observation data start. Forecast is inclusive of this instant if observation.interval_label is beginning or instant.
  • data_end (pd.Timestamp) – Observation data end. Forecast is inclusive of this instant if observation.interval_label is ending or instant.
  • forecast_start (pd.Timestamp) – Forecast start. Forecast is inclusive of this instant if interval_label is beginning or instant.
  • forecast_end (pd.Timestamp) – Forecast end. Forecast is inclusive of this instant if interval_label is ending or instant.
  • interval_length (pd.Timedelta) – Forecast interval length
  • interval_label (str) – instant, beginning, or ending
  • load_data (function) – A function that loads the observation data. Must have the signature load_data(observation, data_start, data_end) and properly account for observation interval label.
  • axis ({'x', 'y'}) – The axis on which the constant values of the CDF is specified. The axis can be either x (constant variable values) or y (constant percentiles).
  • constant_values (array_like) – The variable values or percentiles.
Returns:

forecasts (list of pd.Series) – The persistence forecasts, returned in the same order as constant_values. If axis is x, the forecast values are percentiles (e.g. 25%). If instead axis is y, the forecasts values have the same units as the observation data (e.g. MW).

Raises:

ValueError – If there is insufficient data for matching by time of day or the axis parameter is invalid.

Notes

Assumes that there is at least 20 days of observation data available based on [1], [2], [3].

References

[1](1, 2) Allessandrini et al. (2015) “An analog ensemble for short-term probabilistic solar power forecast”, Appl. Energy 157, pp. 95-110. doi: 10.1016/j.apenergy.2015.08.011
[2](1, 2) Yang (2019) “A universal benchmarking method for probabilistic solar irradiance forecasting”, Solar Energy 184, pp. 410-416. doi: 10.1016/j.solener.2019.04.018
[3](1, 2) Doubleday, Van Scyoc Herndandez and Hodge (2020) “Benchmark probabilistic solar forecasts: characteristics and recommendations”, Solar Energy 206, pp. 52-67. doi: 10.1016/j.solener.2020.05.051