Degradation rate (*R _{D}*) or performance loss rate (PLR) is defined as the decrease of PV power output over time. Although seemingly simple, the estimation of this metric is not trivial when it comes to real operating conditions due to several factors that can influence its calculation. As such, the question of “how to calculate the PV degradation rate” usually brings up a lot of diverse discussions and opinions among the research community and industry which, to date, have not resulted into a uniform and standardized procedure for the

*R*estimation. Although a lengthy process, standardization is of utmost importance to achieve accurate and consistent estimations among analysts.

_{D}The main factors behind the inconsistencies in the estimations of this parameter include the quality of the time-series data, how these data are handled, and the methodologies applied [1-4]. In respect to data quality, integrity and processing, the *R _{D}* calculation may be influenced by:

- System maintenance; e.g. vegetation causing partial shading, soiling, cabling, connectors, etc.
- Maintenance and calibration of sensors; e.g. cleaning procedure and frequency, cabling, etc.
- Sensor drift; i.e. deviation due to outdated calibration or other environmental effects
- Data acquisition uncertainties
- Irradiance input; e.g. measured irradiance, clear-sky model, satellite data, etc.
- Data availability; e.g. percentage of missing data over whole recording period but also where in the seasonal cycle is the missing data
- Outliers and erroneous data
- Duplicated data
- Data aggregation; e.g. 1-min, 15-min, 30-min, daily,… monthly etc., and also aggregation method; e.g. mean, median, min, max, or subsampling
- Performance metric; e.g. performance ratio, PVUSA, normalized power, etc.
- Temperature correction
- Temperature measurement or calculation
- Filtering and/or imputation; i.e. are outliers, duplicated and erroneous data filtered out, interpolated, or filled by model results, when, and by how much? Is nighttime filtered out?
- Non-linear trends that are exhibited in the different lifetime phases
- Usage of selective or whole dataset
- Others…

PV degradation-related literature describes numerous methodologies such as [5, 6]:

- Linear regression (LR) with ordinary least squares (OLS)
- Classical seasonal decomposition (CSD)
- Seasonal and trend decomposition using locally weighted scatterplot smoothing, LOWESS, (STL)
- Holt-Winters (HW) triple-exponential smoothing
- Autoregressive integrated moving average (ARIMA)
- Robust principal component analysis (RPCA)
- Year-on-year (YoY) [7]
- VAR [8]
- Indoor measurements under STC [5]
- Others…

RdTools [9] is a Python-based tool from NREL that is open-source and used for the estimation of *R _{D}* using the YoY, OLS and CSD methods; YoY is set as the preference. The whole pipeline is available in its toolkit including data normalization, filtering, aggregation and PV degradation rate computation.

The following jupyter notebooks include examples for estimating the *R _{D}* based on monthly performance ratios using four different methods:

- LR: PV degradation rate example (OLS) (6105 downloads)
- CSD: PV degradation rate example (SD) (5166 downloads) ,
- HW: PV degradation rate example (HW) (7835 downloads) , and
- STL (in R translation): PV degradation rate example (STL-R) (5413 downloads) and also a Pythonic version PV degradation rate example (STL-Python) (6027 downloads) ).
- An artificial sample dataset [HL to Sample_data.csv] is also provided for the method comparison.

The OLS jupyter notebook ([Download not found]) uses *StatsModels*. Month (x) and *PR* (y) need to be converted to *NumPy* arrays. An intercept (i.e. column of 1s) needs to be added before fitting the model (y = ax + b). Once the intercept (b) and slope (a) are extracted, the absolute and relative *R _{D}* are calculated as follows:

$$R_{D,abs}=12*slope$$ | (1) |

$$R_{D,rel}=12*slope/intercept$$ | (2) |

Lower and upper confidence intervals are calculated for a confidence level of 95% (i.e. significance level, alpha = 0.05).

Seasonal decomposition is also applied using *StatsModels* (
PV degradation rate example (SD) (5166 downloads)
). More specifically, the time-series are decomposed to the trend, seasonal and residual components (i.e. Y[t] = T[t] + S[t] + e[t]). An additive model is used with a specific frequency (e.g. freq = 12 when using monthly data). Once the time-series decomposition is done, a new pandas dataframe with the trend values is created where the *NaN* values caused by the moving average are removed. Finally, OLS is applied on the trend in order to calculate the absolute and relative *R _{D}* using (1) and (2).

HW triple exponential smoothing (
PV degradation rate example (HW) (7835 downloads)
) is commonly used for forecasting time-series that exhibit trend and seasonality and therefore, it is a good candidate for PV degradation studies. In addition to Holt’s linear method equations for level (i.e. overall smoothing), trend smoothing and forecast, the Holt-Winters additive seasonality model also computes a seasonal smoothing equation. *R _{D}* is then estimated by applying OLS on the overall smoothing.

Seasonal-trend decomposition using LOESS (
PV degradation rate example (STL-R) (5413 downloads)
) is applied with *rstl*. Similarly to seasonal decomposition, STL decomposes the time-series to trend + seasonality + error, however, instead of using a centered moving average for extracting the trend, it uses LOESS. The STL function requires the frequency of the time-series (e.g. freq = 12 when using monthly data) and information about the seasonal window; i.e. whether the data are periodic or the span (in lags) of the LOESS window for seasonal extraction. Once the time-series decomposition is done, a new pandas dataframe with the trend values is created. Finally, OLS is applied on the trend in order to calculate the absolute and relative *R _{D}* using (1) and (2).

The *stldecompose* model is similar to the *statsmodels.tsa.seasonaldecompose* method but substitutes the centered moving average with a LOWESS regression using *statsmodels.nonparametric.smootherslowess.lowess* for a convolution in its trend estimation. LOWESS basically fits a non-parametric line to the *PR* time-series plot and is usually treated the same as LOESS, in literature. While LOESS can be used with multiple predictors, LOWESS would only work with univariate datasets (e. g. timestamp Vs PR) and therefore, excess columns should be dropped. Since LOWESS-based STL and LOESS-based STL yield different results in Python, both methods are presented in separate jupyter notebooks. The STL function (
PV degradation rate example (STL-Python) (6027 downloads)
) requires the period of the time-series (e.g. period = 12 when using monthly data); the fraction of the data used when estimating each y-value is set to 0.6. Once the time-series decomposition is done, a new dataframe with the trend values is created. Again, *R _{D}* is estimated by applying OLS on the decomposed trend which is extracted using LOWESS.

A useful resource for the aforementioned methods can be found by Hyndman and Athanasopoulos [10].

**If you use any of the models in a published work, please cite:**

M. Theristis, J. S. Stein, “PV degradation modeling,” *PV Performance Modeling Collaborative, *Sandia National Laboratories, SAND2019-15366 W, 2019. [Online]. Available: https://pvpmc.sandia.gov/pv-research/pv-lifetime-project/pv-degradation-modeling/.

**References:**

[1] D. C. Jordan and S. R. Kurtz, “The Dark Horse of Evaluating Long-Term Field Performance-Data Filtering,” *IEEE Journal of Photovoltaics, *vol. 4, pp. 317-323, 2014.

[2] D. C. Jordan and S. R. Kurtz, “Analytical improvements in PV degradation rate determination,” in *35th IEEE Photovoltaic Specialists Conference (PVSC),* Honolulu, Hawaii, 2010, pp. 2688-2693.

[3] D. C. Jordan, C. Deline, M. G. Deceglie, A. Nag, G. M. Kimball, A. B. Shinn, J. J. John, A. A. Alnuaimi, A. B. A. Elnosh, W. Luo, A. Jain, M. U. Saleh, H. v. Korff, Y. Hu, J. Jaubert, and F. Mavromatakis, “Reducing Interanalyst Variability in Photovoltaic Degradation Rate Assessments,” *IEEE Journal of Photovoltaics, *pp. 1-7, 2019.

[4] D. Moser, D. Bertani, A. J. Curran, R. H. French, M. Herz, S. Lindig, G. Makrides, B. Müller, M. Richter, M. V. Iseghem, W. G. J. H. M. v. Sark, J. S. Stein, and C. Deline, “International Collaboration Framework for the Calculation of Performance Loss Rates: Data Quality, Benchmarks, and Trends,” in *36th European Photovoltaic Solar Energy Conference and Exhibition (EU PVSEC)*, Marseille, France, 2019.

[5] A. Phinikarides, N. Kindyni, G. Makrides, and G. E. Georghiou, “Review of photovoltaic degradation rate methodologies,” *Renewable and Sustainable Energy Reviews, *vol. 40, pp. 143-152, 2014.

[6] S. Lindig, I. Kaaya, K. Weiß, D. Moser, and M. Topic, “Review of Statistical and Analytical Degradation Models for Photovoltaic Modules and Systems as Well as Related Improvements,” *IEEE Journal of Photovoltaics, *vol. 8, pp. 1773-1786, 2018.

[7] D. C. Jordan, M. G. Deceglie, and S. R. Kurtz, “PV degradation methodology comparison – A basis for a standard,” in *43rd IEEE Photovoltaic Specialists Conference (PVSC)*, 2016, pp. 0273-0278.

[8] M. Meftah, E. Lajoie-Mazenc, M. V. Iseghem, R. Perrin, D. Boublil, and K. Radouane, “A Less Environment-Sensitive and Data-Based Approach to Evaluate the Performance Loss Rate of PV Power Plants,” in *36th European Photovoltaic Solar Energy Conference and Exhibition (EU PVSEC)*, Marseille, France, 2019.

[9] D. C. Jordan, C. Deline, S. R. Kurtz, G. M. Kimball, and M. Anderson, “Robust PV Degradation Methodology and Application,” *IEEE Journal of Photovoltaics, *vol. 8, pp. 525-531, 2018.

[10] R. J. Hyndman, G. Athanasopoulos, “Forecasting: principles and practice,” 2nd edition, OTexts: Melbourne, Australia, 2018. OTexts.com/fpp2. Accessed on 16 December 2019.