rdtools.soiling.soiling_cods

rdtools.soiling.soiling_cods(energy_normalized_daily, reps=512, confidence_level=68.2, degradation_method='YoY', process_noise=0.0001, order_alternatives=(('SR', 'SC', 'Rd'), ('SC', 'SR', 'Rd')), cleaning_sensitivity_alternatives=(0.25, 0.75), clean_pruning_sensitivity_alternatives=(0.6666666666666666, 1.5), forward_fill_alternatives=(True, False), verbose=False, **kwargs)

Functional wrapper for CODSAnalysis and its subroutine run_bootstrap(). Runs the combined degradation and soiling (CODS) algorithm with bootstrapping. Based on the procedure presented in 1.

Parameters
  • energy_normalized_daily (pandas.Series) -- Daily performance metric (i.e. performance index, yield, etc.) Alternatively, the soiling ratio output of a soiling sensor (e.g. the photocurrent ratio between matched dirty and clean PV reference cells). In either case, data should be insolation-weighted daily aggregates.

  • reps (int, default 512) -- number of bootstrap realizations to calculate

  • confidence_level (float, default 68.2) -- The size of the confidence interval to return, in percent

  • degradation_method (string, default 'YoY') -- Either 'YoY' or 'STL'. If anything else, 'YoY' will be assumed. Decides whether to use the YoY method [3] for estimating the degradation trend (assumes linear trend), or the STL-method (does not assume linear trend). The latter is slower.

  • process_noise (float, default 1e-4) -- A Kalman Filter parameter that represents the expected amount of unmodeled variation in the process, the process being the variation in the performance index that is due to soiling, seasonality and degradation.

  • order_alternatives (tuple of tuples, default (('SR', 'SC', 'Rd'), ('SC', 'SR', 'Rd'))) -- Component estimation orders that will be tested during initial model fitting.

  • cleaning_sensitivity_alternatives (tuple, default (.25, .75)) -- Detection tuner values that will be tested during initial fitting. Length must be >= 1. First and last values define limits of values that will be used during bootstrapping.

  • clean_pruning_sensitivity_alternatives (tuple, default (1/1.5, 1.5)) -- Pruning tuner values that will be tested during initial fitting. Length must be >= 1. First and last values define limits of values that will be used during bootstrapping.

  • forward_fill_alternatives (tuple, default (True, False)) -- Forward fill values that will be tested during initial fitting.

  • verbose (bool, default False) -- Wheter or not to print information about progress

  • **kwargs -- keyword arguments that are passed on to iterative_signal_decomposition()

Returns

  • soiling_ratio (float) -- Average soiling ratio based on CODS analysis (%)

  • soiling_ratio_confidence_interval (numpy.array) -- 95 % confidence interval of soiling ratio estimate (%)

  • degradation_rate (float) -- Estimated degradation rate (%/year)

  • degradation_rate_confidence_interval (numpy.array) -- 95 % confidence interval for degradation rate estimate (%/year)

  • result_df (pandas dataframe) -- Time series results from the CODS algorithm. Index is pandas.DatetimeIndex with daily frequency. Contains the following columns:

    Column Name

    Description

    'soiling_ratio'

    soiling ratio (SR) (-)

    'soiling_rates'

    soiling rates (1/day)

    'cleaning_events'

    True at cleaning events

    'seasonal_component'

    seasonal component (SC)

    'degradation_trend'

    degradation trend (Rd)

    'total_model'

    the total model fit, i.e. SR * SC * Rd * rs, where SR is the soiling ratio, SC is the seasonal component, Rd is the degradation trend, and rs is the residual shift, i.e. the mean of the residuals (adjusting the position of the model fit to the position of the input data)

    'residuals'

    The residuals of the model fit, i.e. PI / (SR * SC * Rd)

    'SR_low'

    lower bound of 95 % conf. interval of SR

    'SR_high'

    upper bound of 95 % conf. interval of SR

    'rates_low'

    lower bound of 95 % conf. interval of soiling rates

    'rates_high'

    upper bound of 95 % conf. interval of soiling rates

    'bt_soiling_ratio'

    Bootstrapped estimate of soiling ratio (SR)

    'bt_soiling_rates'

    Bootstrapped estimate of soiling rates

    'seasonal_low'

    lower bound of 95 % conf. interval of seasonal component (SC)

    'seasonal_high'

    upper bound of 95 % conf. interval of seasonal component (SC)

    'model_high'

    upper bound of 95 % confidence interval of the model fit

    'model_low'

    lower bound of 95 % confidence interval of the model fit

References

1

Skomedal, Å. and Deceglie, M. G., IEEE Journal of Photovoltaics, Sept. 2020. https://doi.org/10.1109/JPHOTOV.2020.3018219