Main Content

linearDegradationModel

Linear degradation model for estimating remaining useful life

Description

Use linearDegradationModel to model a linear degradation process for estimating the remaining useful life (RUL) of a component. Degradation models estimate the RUL by predicting when a monitored signal will cross a predefined threshold. Linear degradation models are useful when the monitored signal is a log scale signal or when the component does not experience cumulative degradation. For more information on the degradation model, see Linear Degradation Model.

To configure a linearDegradationModel object for a specific type of component, you can:

  • Estimate the model prior parameters using historical data regarding the health of an ensemble of similar components, such as multiple machines manufactured to the same specifications. To do so, use fit.

  • Specify the model prior parameters when you create the model based on your knowledge of the component degradation process.

Once you configure the parameters of your degradation model, you can then predict the remaining useful life of similar components using predictRUL. For a basic example illustrating RUL prediction with a degradation model, see Update RUL Prediction as Data Arrives.

For general information on predicting remaining useful life, see Models for Predicting Remaining Useful Life.

Creation

Description

example

mdl = linearDegradationModel creates a linear degradation model for estimating RUL and initializes the model with default settings.

example

mdl = linearDegradationModel(Name,Value) specifies user-settable model properties using name-value pairs. For example, linearDegradationModel('NoiseVariance',0.5) creates a linear degradation model with a model noise variance of 0.5. You can specify multiple name-value pairs. Enclose each property name in quotes.

Properties

expand all

This property is read-only.

Current mean value of slope parameter θ in the degradation model, specified as a scalar. For more information on the degradation model, see Linear Degradation Model.

You can specify Theta using a name-value pair argument when you:

  • Create the model.

  • Reset the model using the restart function.

Otherwise, the value of Theta changes when you use the update function.

This property is read-only.

Current variance of slope parameter θ in the degradation model, specified as a nonnegative scalar. For more information on the degradation model, see Linear Degradation Model.

You can specify ThetaVariance using a name-value pair argument when you:

  • Create the model.

  • Reset the model using the restart function.

Otherwise, the value of ThetaVariance changes when you use the update function.

Current intercept value ϕ for the degradation model, specified as a scalar. For more information on the degradation model, see Linear Degradation Model.

You can specify Phi using a name-value pair argument when you create the model. Otherwise, the value of Phi changes when you estimate the model prior using the fit function.

Prior information about model parameters, specified as a structure with the following fields:

  • Theta — Mean value of slope parameter

  • ThetaVariance — Variance of slope parameter

You can specify the fields of Prior:

  • When you create the model. When you specify Theta or ThetaVariance at model creation using name-value pairs, the corresponding field of Prior is also set.

  • Using the fit function. In this case, the prior values are derived from the data used to fit the model.

  • Using the restart function. In this case, the current values of Theta and ThetaVariance are copied to the corresponding fields of Prior.

  • Using dot notation after model creation.

For more information on the degradation model, see Linear Degradation Model.

Variance of additive noise ε in the degradation model, specified as a nonnegative scalar. For more information on the degradation model, see Linear Degradation Model.

You can specify NoiseVariance:

  • Using a name-value pair when you create the model

  • Using a name-value pair with the restart function

  • Using dot notation after model creation

Slope detection level for determining the start of the degradation process, specified as a scalar in the range [0,1]. This value corresponds to the alpha value in a t-test of slope significance.

To disable the slope detection test, set SlopeDetectionLevel to [].

You can specify SlopeDetectionLevel:

  • Using a name-value pair when you create the model

  • Using a name-value pair with the restart function

  • Using dot notation after model creation

This property is read-only.

Slope detection time, which is the instant when a significant slope is detected, specified as a scalar. The update function sets this value when SlopeDetectionLevel is not empty.

This property is read-only.

Latest degradation feature value supplied to the update function, specified as a scalar.

This property is read-only.

Initial lifetime variable value when the update function is first called on the model, specified as a scalar.

When the model detects a slope, the InitialLifeTime value is changed to match the SlopeDetectionInstant value.

This property is read-only.

Latest lifetime variable value supplied to the update function, specified as a scalar.

Lifetime variable, specified as a string that contains a valid MATLAB® variable name or "".

When you train the model using the fit function, if your training data is a:

  • table, then LifeTimeVariable must match one of the variable names in the table

  • timetable, then LifeTimeVariable one of the variable names in the table or the dimension name of the time variable, data.Properties.DimensionNames{1}

You can specify LifeTimeVariable:

  • Using a name-value pair when you create the model

  • As an argument when you call the fit function

  • Using dot notation after model creation

Lifetime variable units, specified as a string.

The units of the lifetime variable do not need to be time-based. The life of the test component can be measured in terms of a usage variable, such as distance traveled (miles) or fuel consumed (gallons).

Degradation variable name, specified as a string that contains a valid MATLAB variable name. Degradation models have only one data variable.

You can specify DataVariables:

  • Using a name-value pair when you create the model

  • As an argument when you call the fit function

  • Using dot notation after model creation

Flag for using parallel computing when fitting prior values from data, specified as either true or false.

You can specify UseParallel:

  • Using a name-value pair when you create the model

  • Using a name-value pair with the restart function

  • Using dot notation after model creation

Additional model information for bookkeeping purposes, specified as any data type or format. The model does not use this information.

You can specify UserData:

  • Using a name-value pair when you create the model

  • Using dot notation after model creation

Object Functions

fitEstimate parameters of remaining useful life model using historical data
predictRULEstimate remaining useful life for a test component
updateUpdate posterior parameter distribution of degradation remaining useful life model
restartReset remaining useful life degradation model

Examples

collapse all

Load training data.

load('linTrainVectors.mat')

The training data is a cell array of column vectors. Each column vector is a degradation feature profile for a component.

Create a linear degradation model with default settings.

mdl = linearDegradationModel;

Train the degradation model using the training data.

fit(mdl,linTrainVectors)

Create a linear degradation model and configure it with a known prior distribution.

mdl = linearDegradationModel('Theta',0.25,'ThetaVariance',0.002);

The specified prior distribution parameters are stored in the Prior property of the model.

mdl.Prior
ans = struct with fields:
            Theta: 0.2500
    ThetaVariance: 0.0020

The current posterior distribution of the model is also set to match the specified prior distribution. For example, check the posterior value of the slope variance.

mdl.ThetaVariance
ans = 0.0020

Load training data.

load('linTrainTables.mat')

The training data is a cell array of tables. Each table is a degradation feature profile for a component. Each profile consists of life time measurements in the "Time" variable and corresponding degradation feature measurements in the "Condition" variable.

Create a linear degradation model with default settings.

mdl = linearDegradationModel;

Train the degradation model using the training data. Specify the names of the life time and data variables.

fit(mdl,linTrainTables,"Time","Condition")

Load training data.

load('linTrainTables.mat')

The training data is a cell array of tables. Each table is a degradation feature profile for a component. Each profile consists of life time measurements in the "Time" variable and corresponding degradation feature measurements in the "Condition" variable.

Create a linear degradation model, specifying the life time variable units.

mdl = linearDegradationModel('LifeTimeUnit',"hours");

Train the degradation model using the training data. Specify the names of the life time and data variables.

fit(mdl,linTrainTables,"Time","Condition")

Load testing data, which is a run-to-failure degradation profile for a test component. The test data is a table with the same life time and data variables as the training data.

load('linTestData.mat','linTestData1')

Based on knowledge of the degradation feature limits, define a threshold condition indicator value that indicates the end-of-life of a component.

threshold = 60;

Assume that you measure the component condition indicator after 48 hours. Predict the remaining useful life of the component at this time using the trained linear degradation model. The RUL is the forecasted time at which the degradation feature will pass the specified threshold.

estRUL = predictRUL(mdl,linTestData1(48,:),threshold)
estRUL = duration
   112.64 hr

The estimated RUL is around 113 hours, which indicates a total predicted life span of around 161 hours.

Load observation data.

load('linTestData.mat','linTestData1')

For this example, assume that the training data is not historical data, but rather real-time observations of the component condition.

Based on knowledge of the degradation feature limits, define a threshold condition indicator value that indicates the end-of-life of a component.

threshold = 60;

Create a linear degradation model arbitrary prior distribution data and a specified noise variance. Also, specify the life time and data variable names for the observation data.

mdl = linearDegradationModel('Theta',1,'ThetaVariance',1e6,'NoiseVariance',0.003,...
                             'LifeTimeVariable',"Time",'DataVariables',"Condition",...
                             'LifeTimeUnit',"hours");

Observe the component condition for 50 hours, updating the degradation model after each observation.

for i=1:50
    update(mdl,linTestData1(i,:));
end

After 50 hours, predict the RUL of the component using the current life time value stored in the model.

estRUL = predictRUL(mdl,threshold)
estRUL = duration
   50.301 hr

The estimated RUL is about 50 hours, which indicates a total predicted life span of about 100 hours.

Algorithms

expand all

References

[1] Chakraborty, S., N. Gebraeel, M. Lawley, and H. Wan. "Residual-Life Estimation for Components with Non-Symmetric Priors." IIE Transactions. Vol. 41, Number 4, 2009, pp. 372–387.

Extended Capabilities

Version History

Introduced in R2018a