RdTools: Open-‐Source Degradation Analysis

RdTools: Open-­‐Source Degradation Analysis Toolbox
Adam Shinn1, Dirk Jordan2, Chris Deline2, Michael Deceglie2
1. kWh Analytics, Inc. -­‐-­‐ San Francisco, California
2. National Renewable Energy Laboratory -­‐-­‐ Golden, Colorado
PV Reliability Workshop 2017
Motivation
Example: Normalization Step with PVWatts
Example: Degradation with Ordinary Least Squares
kWh Analytics Inc. and NREL seek to provide open-­‐source
software tools to analytically derive degradation rates of
photovoltaic modules and systems. Degradation plays an
important role in photovoltaic project finance, affecting the
valuation of energy generation for the lifetime of the
investment. By open-­‐sourcing degradation analysis code, we
hope to foster open collaboration on analytical techniques
while providing off-­‐the-­‐shelf tools for researchers,
independent engineers, and industry stakeholders.
Empowered with analytically-­‐derived degradation rates, we
can quantify equipment durability, assess the financial risk of
currently operating projects, and provide data-­‐driven input in
financial models for future projects.
Since regression approaches are sensitive to seasonality, OLS
is applied in full-­‐year increments. In this example, the last 6
years of the input time series, normalized_energy, is utilized.
Degradation Analysis Toolbox
Example: Degradation with OLS + Classical Decomposition
RdTools, hosted on Github is a public code repository. The
open source tools are written in Python, a common language
for data translation and analysis. Other open-­‐source packages,
such as PVLIB-­‐Python and Pandas, are leveraged in this
repository. RdTools includes time-­‐series normalization
methods to account for weather and seasonality in energy
production data, and degradation calculation methods include
regression and year-­‐over-­‐year approaches. In this poster we
present an outline of current and planned features of RdTools,
provide code examples and share initial results from a study
that uses RdTools to analyze 10k residential systems.
In this example we show how to normalize system energy
output with RdTools. Inputs are system energy and required
keywords for the PVWatts module model: plane of array
irradiance and nameplate.
Example: Degradation with Year-­‐on-­‐Year Approach
In this example, OLS is applied to the 12-­‐month moving
average of the input time series, normalized_energy.
Compared to standard regression approaches, this method is
more robust to outliers.
Residential System Degradation Study
In collaboration with NREL, we have applied methods from
RdTools to study 10k residential systems from the kWh
Analytics database.
Current and Planned Features
• Normalization Step
Performance Ratio
PVWatts
Sandia Array Performance Model
• Data Filtering Utilities
• Degradation Analysis
Ordinary Least Squares[1]
Ordinary Least Squares with Classical Decomposition[2]
Robust Regression[1]
Year-­‐on-­‐Year[1]
[1] D. Jordan, M. Deceglie, S. Kurtz, PV Degradation Methodology Comparison – a Basis for a Standard, PVSC, 2016
[2] D. Jordan and S. Kurtz, Analytical Improvements in PV Degradation Rate Determination, PVSC, 2010
For comparison, below is an example of the year-­‐on-­‐year
approach applied to different system with 5 years of energy
production with daily frequency.
Systems used in this study are
primarily located in California,
and have operational lifetimes
ranging from 2 to 6 years.
An interesting initial find is the affect of shading in hotter
climate. Out of all systems using a single module
manufacturer in a desert climate, two show higher rates
of degradation and both are subject to shading from
nearby trees.
Single module manufacturer in desert
Rate of change (%/year)
https://github.com/kwhanalytics/rdtools
In this example the monthly time series, normalized_energy,
is used as input to the year-­‐on-­‐year approach. Although the
analysis lacks sufficient data to create a well-­‐formed
distribution, the result falls well within the confidence
intervals from the two regression approaches.
A
B
Inverter manufacturer
C